From d4074a5dbaba580c24c17a54bb2112e918e6d78b Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 26 Feb 2023 12:11:22 +0100 Subject: [PATCH] RPSystem sdesc command to support clear/view sdesc. Resolve #3073. --- CHANGELOG.md | 1 + evennia/contrib/rpg/rpsystem/rpsystem.py | 23 +++++++++++++++++++++-- evennia/contrib/rpg/rpsystem/tests.py | 5 +++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78be809d15..725db0b217 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Main branch (git) +- Feature: RPSystem contrib `sdesc` command can now view/delete your sdesc. - Bug fix: Change so `script obj = [scriptname|id]` is required to manipulate scripts on objects; `script scriptname|id` only works on global scripts. - Doc: Add warning about `Django-wiki` (in wiki tutorial) only supporting Django <4.0. diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index e3a631fafc..c17a7103f5 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -725,6 +725,13 @@ class SdescHandler: return sdesc + def clear(self): + """ + Clear sdesc. + + """ + self.obj.attributes.remove("_sdesc") + def get(self): """ Simple getter. The sdesc should never be allowed to @@ -959,6 +966,8 @@ class CmdSdesc(RPCommand): # set/look at own sdesc Usage: sdesc + sdesc - view current sdesc + sdesc clear - remove sdesc Assigns a short description to yourself. @@ -971,8 +980,18 @@ class CmdSdesc(RPCommand): # set/look at own sdesc "Assign the sdesc" caller = self.caller if not self.args: - caller.msg("Usage: sdesc ") - return + sdesc = caller.sdesc.get() + if not sdesc: + caller.msg("You have no short description set.") + else: + caller.msg(f'Your short description is "{sdesc}".') + elif self.args == "clear": + ret = yield "Do you want to clear your sdesc? [Y]/n?" + if ret.lower() in ("n", "no"): + caller.msg("Aborted.") + else: + caller.sdesc.clear() + caller.msg(f'Cleared sdesc, using name "{caller.key}".') else: # strip non-alfanum chars from end of sdesc sdesc = _RE_CHAREND.sub("", self.args) diff --git a/evennia/contrib/rpg/rpsystem/tests.py b/evennia/contrib/rpg/rpsystem/tests.py index 7d51c80124..6f9390201c 100644 --- a/evennia/contrib/rpg/rpsystem/tests.py +++ b/evennia/contrib/rpg/rpsystem/tests.py @@ -339,6 +339,9 @@ class TestRPSystemCommands(BaseEvenniaCommandTest): "Char2's sdesc was set to 'BarFoo Character'.", caller=self.char2, ) + + self.call(rpsystem.CmdSdesc(), "", 'Your short description is "Foobar Character".') + self.call(rpsystem.CmdSay(), "Hello!", 'Char says, "Hello!"') self.call(rpsystem.CmdEmote(), "/me smiles to /BarFoo.", "Char smiles to BarFoo Character") @@ -368,3 +371,5 @@ class TestRPSystemCommands(BaseEvenniaCommandTest): "You will now know them only as 'BarFoo Character'", cmdstring="forget", ) + + self.call(rpsystem.CmdSdesc(), "clear", 'Cleared sdesc, using name "Char".', inputs=["Y"])