Fix lingering bug with rpsystem process_sdesc. Also added a new method process_recog for processing recogs separately (defaults to just calling process_sdesc). Also made the rpsystem say command use the get_display_name for its self-name display.

This commit is contained in:
Griatch 2016-09-02 00:13:59 +02:00
parent f883c9d087
commit 690bc82862

View file

@ -478,15 +478,19 @@ def send_emote(sender, receivers, emote, anonymous_add="first"):
# broadcast emote to everyone # broadcast emote to everyone
for receiver in receivers: for receiver in receivers:
# we make a temporary copy that we can modify # we make a temporary copy that we can modify
# add color to sdesc strings
try: try:
process_sdesc = receiver.process_sdesc process_sdesc = receiver.process_sdesc
except AttributeError: except AttributeError:
process_sdesc = _dummy_process process_sdesc = _dummy_process
try:
process_recog = receiver.process_recog
except AttributeError:
process_recog = _dummy_process
try: try:
recog_get = receiver.recog.get recog_get = receiver.recog.get
mapping = dict((ref, recog_get(obj)) for ref, obj in obj_mapping.items()) mapping = dict((ref, process_recog(recog_get(obj), obj)) for ref, obj in obj_mapping.items())
except AttributeError: except AttributeError:
mapping = dict((ref, process_sdesc(obj.sdesc.get(), obj) mapping = dict((ref, process_sdesc(obj.sdesc.get(), obj)
if hasattr(obj, "sdesc") else process_sdesc(obj.key, obj)) if hasattr(obj, "sdesc") else process_sdesc(obj.key, obj))
@ -502,10 +506,7 @@ def send_emote(sender, receivers, emote, anonymous_add="first"):
# make sure receiver always sees their real name # make sure receiver always sees their real name
rkey = "#%i" % receiver.id rkey = "#%i" % receiver.id
if rkey in mapping: if rkey in mapping:
mapping[rkey] = receiver.key mapping[rkey] = process_sdesc(receiver.key, receiver)
mapping = dict((key, process_sdesc(val, receiver))
for key, val in mapping.iteritems())
# do the template replacement # do the template replacement
receiver.msg(emote.format(**mapping)) receiver.msg(emote.format(**mapping))
@ -829,7 +830,7 @@ class CmdSay(RPCommand): # replaces standard say
emit_string = '{name} says, "{speech}|n"' emit_string = '{name} says, "{speech}|n"'
for target in caller.location.contents: for target in caller.location.contents:
if target == caller: if target == caller:
target.msg(emit_string.format(name=caller.key, speech=speech)) target.msg(emit_string.format(name=caller.get_display_name(caller), speech=speech))
else: else:
target.msg(emit_string.format(name=caller.get_display_name(target), speech=speech)) target.msg(emit_string.format(name=caller.get_display_name(target), speech=speech))
@ -1287,11 +1288,14 @@ class ContribRPObject(DefaultObject):
""" """
idstr = "(#%s)" % self.id if self.access(looker, access_type='control') else "" idstr = "(#%s)" % self.id if self.access(looker, access_type='control') else ""
try: if looker == self:
recog = looker.recog.get(self) sdesc = self.key
except AttributeError: else:
recog = None try:
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key recog = looker.recog.get(self)
except AttributeError:
recog = None
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key
pose = " %s" % ((self.db.pose or "") if kwargs.get("pose", False) else "") pose = " %s" % ((self.db.pose or "") if kwargs.get("pose", False) else "")
return "%s%s%s" % (sdesc, idstr, pose) return "%s%s%s" % (sdesc, idstr, pose)
@ -1372,11 +1376,14 @@ class ContribRPCharacter(DefaultCharacter, ContribRPObject):
""" """
idstr = "(#%s)" % self.id if self.access(looker, access_type='control') else "" idstr = "(#%s)" % self.id if self.access(looker, access_type='control') else ""
try: if looker == self:
recog = looker.recog.get(self) sdesc = self.key
except AttributeError: else:
recog = None try:
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key recog = looker.recog.get(self)
except AttributeError:
recog = None
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key
pose = " %s" % self.db.pose or "" if kwargs.get("pose", False) else "" pose = " %s" % self.db.pose or "" if kwargs.get("pose", False) else ""
return "{c%s{n%s%s" % (sdesc, idstr, pose) return "{c%s{n%s%s" % (sdesc, idstr, pose)
@ -1405,7 +1412,9 @@ class ContribRPCharacter(DefaultCharacter, ContribRPObject):
Args: Args:
sdesc (str): The sdesc to display. sdesc (str): The sdesc to display.
obj (Object): The object to which the adjoining sdesc obj (Object): The object to which the adjoining sdesc
belongs (can be yourself). This is not used by default. belongs. If this object is equal to yourself, then
you are viewing yourself (and sdesc is your key).
This is not used by default.
Returns: Returns:
sdesc (str): The processed sdesc ready sdesc (str): The processed sdesc ready
@ -1414,6 +1423,22 @@ class ContribRPCharacter(DefaultCharacter, ContribRPObject):
""" """
return "|b%s|n" % sdesc return "|b%s|n" % sdesc
def process_recog(self, recog, obj, **kwargs):
"""
Allows to customize how a recog string is displayed.
Args:
recog (str): The recog string. It has already been
translated from the original sdesc at this point.
obj (Object): The object the recog:ed string belongs to.
This is not used by default.
Returns:
recog (str): The modified recog string.
"""
return self.process_sdesc(recog, obj)
def process_language(self, text, speaker, language, **kwargs): def process_language(self, text, speaker, language, **kwargs):
""" """
Allows to process the spoken text, for example Allows to process the spoken text, for example