reference from_obj for gender

This commit is contained in:
Cal 2023-12-08 11:21:46 -07:00
parent e2a7c54e24
commit f9deefa15c
2 changed files with 38 additions and 10 deletions

View file

@ -147,13 +147,17 @@ class GenderCharacter(DefaultCharacter):
super().msg(from_obj=from_obj, session=session, **kwargs)
return
try:
if text and isinstance(text, tuple):
text = (_RE_GENDER_PRONOUN.sub(self._get_pronoun, text[0]), *text[1:])
else:
text = _RE_GENDER_PRONOUN.sub(self._get_pronoun, text)
except TypeError:
pass
except Exception as e:
logger.log_trace(e)
gender_source = from_obj if from_obj else self
if hasattr(gender_source, "_get_pronoun"):
try:
if text and isinstance(text, tuple):
text = (_RE_GENDER_PRONOUN.sub(gender_source._get_pronoun, text[0]), *text[1:])
else:
text = _RE_GENDER_PRONOUN.sub(gender_source._get_pronoun, text)
except TypeError:
pass
except Exception as e:
logger.log_trace(e)
super().msg(text, from_obj=from_obj, session=session, **kwargs)

View file

@ -28,5 +28,29 @@ class TestGenderSub(BaseEvenniaCommandTest):
"evennia.contrib.game_systems.gendersub.gendersub.DefaultCharacter.msg"
) as mock_msg:
char.db.gender = "female"
char.msg("Test |p gender")
char.msg(txt)
mock_msg.assert_called_with("Test her gender", from_obj=None, session=None)
def test_gendering_others(self):
"""ensure characters see the gender of the sender, not themselves"""
fem = create_object(
gendersub.GenderCharacter,
key="Gendered",
location=self.room2,
attributes=[("gender", "female")],
)
masc = create_object(
gendersub.GenderCharacter,
key="Gendered",
location=self.room2,
attributes=[("gender", "male")],
)
txt = "Test |p gender"
with patch(
"evennia.contrib.game_systems.gendersub.gendersub.DefaultCharacter.msg"
) as mock_msg:
fem.msg(txt, from_obj=masc)
self.assertIn("Test his gender", mock_msg.call_args.args)
masc.msg(txt, from_obj=fem)
self.assertIn("Test her gender", mock_msg.call_args.args)