Make CmdGet/Drop/Give give error if obj.move_to returns False. Resolves #2168.

This commit is contained in:
Griatch 2020-07-18 19:37:49 +02:00
parent 54e70a40b7
commit 1f506de12c
2 changed files with 33 additions and 23 deletions

View file

@ -64,6 +64,7 @@ without arguments starts a full interactive Python console.
- Update Twisted requirement to >=2.3.0 to close security vulnerability - Update Twisted requirement to >=2.3.0 to close security vulnerability
- Add `$random` inlinefunc, supports minval,maxval arguments that can be ints and floats. - Add `$random` inlinefunc, supports minval,maxval arguments that can be ints and floats.
- Add `evennia.utils.inlinefuncs.raw(<str>)` as a helper to escape inlinefuncs in a string. - Add `evennia.utils.inlinefuncs.raw(<str>)` as a helper to escape inlinefuncs in a string.
- Make CmdGet/Drop/Give give proper error if `obj.move_to` returns `False`.
## Evennia 0.9 (2018-2019) ## Evennia 0.9 (2018-2019)

View file

@ -426,11 +426,14 @@ class CmdGet(COMMAND_DEFAULT_CLASS):
if not obj.at_before_get(caller): if not obj.at_before_get(caller):
return return
obj.move_to(caller, quiet=True) success = obj.move_to(caller, quiet=True)
caller.msg("You pick up %s." % obj.name) if not success:
caller.location.msg_contents("%s picks up %s." % (caller.name, obj.name), exclude=caller) caller.msg("This can't be picked up.")
# calling at_get hook method else:
obj.at_get(caller) caller.msg("You pick up %s." % obj.name)
caller.location.msg_contents("%s picks up %s." % (caller.name, obj.name), exclude=caller)
# calling at_get hook method
obj.at_get(caller)
class CmdDrop(COMMAND_DEFAULT_CLASS): class CmdDrop(COMMAND_DEFAULT_CLASS):
@ -471,11 +474,14 @@ class CmdDrop(COMMAND_DEFAULT_CLASS):
if not obj.at_before_drop(caller): if not obj.at_before_drop(caller):
return return
obj.move_to(caller.location, quiet=True) success = obj.move_to(caller.location, quiet=True)
caller.msg("You drop %s." % (obj.name,)) if not success:
caller.location.msg_contents("%s drops %s." % (caller.name, obj.name), exclude=caller) caller.msg("This couldn't be dropped.")
# Call the object script's at_drop() method. else:
obj.at_drop(caller) caller.msg("You drop %s." % (obj.name,))
caller.location.msg_contents("%s drops %s." % (caller.name, obj.name), exclude=caller)
# Call the object script's at_drop() method.
obj.at_drop(caller)
class CmdGive(COMMAND_DEFAULT_CLASS): class CmdGive(COMMAND_DEFAULT_CLASS):
@ -522,11 +528,14 @@ class CmdGive(COMMAND_DEFAULT_CLASS):
return return
# give object # give object
caller.msg("You give %s to %s." % (to_give.key, target.key)) success = to_give.move_to(target, quiet=True)
to_give.move_to(target, quiet=True) if not success:
target.msg("%s gives you %s." % (caller.key, to_give.key)) caller.msg("This could not be given.")
# Call the object script's at_give() method. else:
to_give.at_give(caller, target) caller.msg("You give %s to %s." % (to_give.key, target.key))
target.msg("%s gives you %s." % (caller.key, to_give.key))
# Call the object script's at_give() method.
to_give.at_give(caller, target)
class CmdSetDesc(COMMAND_DEFAULT_CLASS): class CmdSetDesc(COMMAND_DEFAULT_CLASS):