mirror of
https://github.com/evennia/evennia.git
synced 2026-03-30 12:37:16 +02:00
Move some item logic from CmdUse to new func use_item
This commit is contained in:
parent
fd5f6ba981
commit
9f8c92e4d4
1 changed files with 32 additions and 25 deletions
|
|
@ -322,6 +322,36 @@ def spend_item_use(item, user):
|
|||
residue.location = item.location # Move the residue to the same place as the item
|
||||
user.msg("After using %s, you are left with %s." % (item, residue))
|
||||
item.delete() # Delete the spent item
|
||||
|
||||
def use_item(user, item, target):
|
||||
"""
|
||||
Performs the action of using an item.
|
||||
"""
|
||||
# Set kwargs to pass to item_func
|
||||
kwargs = {}
|
||||
if item.db.item_kwargs:
|
||||
kwargs = item.db.item_kwargs
|
||||
|
||||
# Match item_func string to function
|
||||
try:
|
||||
item_func = ITEMFUNCS[item.db.item_func]
|
||||
except KeyError:
|
||||
user.msg("ERROR: %s not defined in ITEMFUNCS" % item.db.item_func)
|
||||
return
|
||||
|
||||
# Call the item function - abort if it returns False, indicating an error.
|
||||
# This performs the actual action of using the item.
|
||||
# Regardless of what the function returns (if anything), it's still executed.
|
||||
if item_func(item, user, target, **kwargs) == False:
|
||||
return
|
||||
|
||||
# If we haven't returned yet, we assume the item was used successfully.
|
||||
# Spend one use if item has limited uses
|
||||
spend_item_use(item, user)
|
||||
|
||||
# Spend an action if in combat
|
||||
if is_in_combat(user):
|
||||
spend_action(user, 1, action_name="item")
|
||||
|
||||
"""
|
||||
----------------------------------------------------------------------------
|
||||
|
|
@ -815,31 +845,8 @@ class CmdUse(MuxCommand):
|
|||
self.caller.msg("'%s' has no uses remaining." % item.key.capitalize())
|
||||
return
|
||||
|
||||
# Set kwargs to pass to item_func
|
||||
kwargs = {}
|
||||
if item.db.item_kwargs:
|
||||
kwargs = item.db.item_kwargs
|
||||
|
||||
# Match item_func string to function
|
||||
try:
|
||||
item_func = ITEMFUNCS[item.db.item_func]
|
||||
except KeyError:
|
||||
self.caller.msg("ERROR: %s not defined in ITEMFUNCS" % item.db.item_func)
|
||||
return
|
||||
|
||||
# Call the item function - abort if it returns False, indicating an error.
|
||||
# This performs the actual action of using the item.
|
||||
# Regardless of what the function returns (if anything), it's still executed.
|
||||
if item_func(item, self.caller, target, **kwargs) == False:
|
||||
return
|
||||
|
||||
# If we haven't returned yet, we assume the item was used successfully.
|
||||
# Spend one use if item has limited uses
|
||||
spend_item_use(item, self.caller)
|
||||
|
||||
# Spend an action if in combat
|
||||
if is_in_combat(self.caller):
|
||||
spend_action(self.caller, 1, action_name="item")
|
||||
# If everything checks out, call the use_item function
|
||||
use_item(self.caller, item, target)
|
||||
|
||||
|
||||
class BattleCmdSet(default_cmds.CharacterCmdSet):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue