Move some item logic from CmdUse to new func use_item

This commit is contained in:
BattleJenkins 2017-11-17 16:46:27 -08:00
parent fd5f6ba981
commit 9f8c92e4d4

View file

@ -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):