Followed the suggestion of making nicks set on Player be globally available (I liked this better than the old default behaviour). Changed for execute_cmd nick replacement ("inputline","channels") as well as for caller.search nick replamement ("player", "object"). A Character's nick overrule a same-named nick on the Player level, which sounds like the most expected behaviour. Resolves Issue 292.
This commit is contained in:
parent
0cf3b42e14
commit
46ffd06c78
1 changed files with 18 additions and 9 deletions
|
|
@ -22,6 +22,7 @@ from src.utils.idmapper.models import SharedMemoryModel
|
||||||
from src.typeclasses.models import Attribute, TypedObject, TypeNick, TypeNickHandler
|
from src.typeclasses.models import Attribute, TypedObject, TypeNick, TypeNickHandler
|
||||||
from src.typeclasses.models import _get_cache, _set_cache, _del_cache
|
from src.typeclasses.models import _get_cache, _set_cache, _del_cache
|
||||||
from src.typeclasses.typeclass import TypeClass
|
from src.typeclasses.typeclass import TypeClass
|
||||||
|
from src.players.models import PlayerNick
|
||||||
from src.objects.manager import ObjectManager
|
from src.objects.manager import ObjectManager
|
||||||
from src.commands.cmdsethandler import CmdSetHandler
|
from src.commands.cmdsethandler import CmdSetHandler
|
||||||
from src.commands import cmdhandler
|
from src.commands import cmdhandler
|
||||||
|
|
@ -549,14 +550,19 @@ class ObjectDB(TypedObject):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
if use_nicks:
|
if use_nicks:
|
||||||
if ostring.startswith('*') or player:
|
nick = None
|
||||||
# player nick replace
|
nicktype = "object"
|
||||||
ostring = self.nicks.get(ostring.lstrip('*'), nick_type="player")
|
if player or ostring.startswith('*'):
|
||||||
if not player:
|
ostring = ostring.lstrip("*")
|
||||||
ostring = "*%s" % ostring
|
nicktype = "player"
|
||||||
else:
|
# look up nicks
|
||||||
# object nick replace
|
nicks = ObjectNick.objects.filter(db_obj=self, db_type=nicktype)
|
||||||
ostring = self.nicks.get(ostring, nick_type="object")
|
if self.has_player:
|
||||||
|
nicks = list(nicks) + list(PlayerNick.objects.filter(db_obj=self.db_player, db_type=nicktype))
|
||||||
|
for nick in nicks:
|
||||||
|
if ostring == nick.db_nick:
|
||||||
|
ostring = nick.db_real
|
||||||
|
break
|
||||||
|
|
||||||
candidates=None
|
candidates=None
|
||||||
if global_search:
|
if global_search:
|
||||||
|
|
@ -619,7 +625,10 @@ class ObjectDB(TypedObject):
|
||||||
|
|
||||||
raw_list = raw_string.split(None)
|
raw_list = raw_string.split(None)
|
||||||
raw_list = [" ".join(raw_list[:i+1]) for i in range(len(raw_list)) if raw_list[:i+1]]
|
raw_list = [" ".join(raw_list[:i+1]) for i in range(len(raw_list)) if raw_list[:i+1]]
|
||||||
for nick in ObjectNick.objects.filter(db_obj=self, db_type__in=("inputline","channel")):
|
nicks = ObjectNick.objects.filter(db_obj=self, db_type__in=("inputline", "channel"))
|
||||||
|
if self.has_player:
|
||||||
|
nicks = list(nicks) + list(PlayerNick.objects.filter(db_obj=self.db_player, db_type__in=("inputline","channel")))
|
||||||
|
for nick in nicks:
|
||||||
if nick.db_nick in raw_list:
|
if nick.db_nick in raw_list:
|
||||||
raw_string = raw_string.replace(nick.db_nick, nick.db_real, 1)
|
raw_string = raw_string.replace(nick.db_nick, nick.db_real, 1)
|
||||||
break
|
break
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue