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
for receiver in receivers:
# we make a temporary copy that we can modify
# add color to sdesc strings
try:
process_sdesc = receiver.process_sdesc
except AttributeError:
process_sdesc = _dummy_process
try:
process_recog = receiver.process_recog
except AttributeError:
process_recog = _dummy_process
try:
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:
mapping = dict((ref, process_sdesc(obj.sdesc.get(), 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
rkey = "#%i" % receiver.id
if rkey in mapping:
mapping[rkey] = receiver.key
mapping = dict((key, process_sdesc(val, receiver))
for key, val in mapping.iteritems())
mapping[rkey] = process_sdesc(receiver.key, receiver)
# do the template replacement
receiver.msg(emote.format(**mapping))
@ -829,7 +830,7 @@ class CmdSay(RPCommand): # replaces standard say
emit_string = '{name} says, "{speech}|n"'
for target in caller.location.contents:
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:
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 ""
try:
recog = looker.recog.get(self)
except AttributeError:
recog = None
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key
if looker == self:
sdesc = self.key
else:
try:
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 "")
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 ""
try:
recog = looker.recog.get(self)
except AttributeError:
recog = None
sdesc = recog or (hasattr(self, "sdesc") and self.sdesc.get()) or self.key
if looker == self:
sdesc = self.key
else:
try:
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 ""
return "{c%s{n%s%s" % (sdesc, idstr, pose)
@ -1405,7 +1412,9 @@ class ContribRPCharacter(DefaultCharacter, ContribRPObject):
Args:
sdesc (str): The sdesc to display.
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:
sdesc (str): The processed sdesc ready
@ -1414,6 +1423,22 @@ class ContribRPCharacter(DefaultCharacter, ContribRPObject):
"""
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):
"""
Allows to process the spoken text, for example