Start porting in condition code from coolbattles

This commit is contained in:
BattleJenkins 2017-11-17 21:17:35 -08:00
parent 91c333e6d3
commit e61df0a400

View file

@ -304,24 +304,28 @@ def spend_item_use(item, user):
instead of 'True', it will also spawn a new object as residue, using the instead of 'True', it will also spawn a new object as residue, using the
value of item.db.item_consumable as the name of the prototype to spawn. value of item.db.item_consumable as the name of the prototype to spawn.
""" """
if item.db.item_uses: item.db.item_uses -= 1 # Spend one use
item.db.item_uses -= 1 # Spend one use
if item.db.item_uses > 0: # Has uses remaining if item.db.item_uses > 0: # Has uses remaining
# Inform the player # Inform the player
user.msg("%s has %i uses remaining." % (item.key.capitalize(), item.db.item_uses)) user.msg("%s has %i uses remaining." % (item.key.capitalize(), item.db.item_uses))
else: # All uses spent
if not item.db.item_consumable: else: # All uses spent
# If not consumable, just inform the player that the uses are gone
user.msg("%s has no uses remaining." % item.key.capitalize()) if not item.db.item_consumable: # Item isn't consumable
else: # If consumable # Just inform the player that the uses are gone
if item.db.item_consumable == True: # If the value is 'True', just destroy the item user.msg("%s has no uses remaining." % item.key.capitalize())
user.msg("%s has been consumed." % item.key.capitalize())
item.delete() # Delete the spent item else: # If item is consumable
else: # If a string, use value of item_consumable to spawn an object in its place if item.db.item_consumable == True: # If the value is 'True', just destroy the item
residue = spawn({"prototype":item.db.item_consumable})[0] # Spawn the residue user.msg("%s has been consumed." % item.key.capitalize())
residue.location = item.location # Move the residue to the same place as the item item.delete() # Delete the spent item
user.msg("After using %s, you are left with %s." % (item, residue))
item.delete() # Delete the spent item else: # If a string, use value of item_consumable to spawn an object in its place
residue = spawn({"prototype":item.db.item_consumable})[0] # Spawn the residue
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): def use_item(user, item, target):
""" """
@ -347,12 +351,39 @@ def use_item(user, item, target):
# If we haven't returned yet, we assume the item was used successfully. # If we haven't returned yet, we assume the item was used successfully.
# Spend one use if item has limited uses # Spend one use if item has limited uses
spend_item_use(item, user) if item.db.item_uses:
spend_item_use(item, user)
# Spend an action if in combat # Spend an action if in combat
if is_in_combat(user): if is_in_combat(user):
spend_action(user, 1, action_name="item") spend_action(user, 1, action_name="item")
def condition_tickdown(character, turnchar):
"""
Ticks down the duration of conditions on a character at the end of a given character's turn.
"""
for key in character.db.conditions:
# The first value is the remaining turns - the second value is whose turn to count down on.
condition_duration = character.db.conditions[key][0]
condition_turnchar = character.db.conditions[key][1]
# Count down if the given turn character matches the condition's turn character.
if condition_turnchar == turnchar:
character.db.conditions[key][0] -= 1
if character.db.conditions[key][0] <= 0:
# If the duration is brought down to 0, remove the condition and inform everyone.
character.location.msg_contents("%s no longer has the '%s' condition." % (str(character), str(key)))
del character.db.conditions[key]
def add_condition(character, turnchar, condition, duration):
"""
Adds a condition to a fighter.
"""
# The first value is the remaining turns - the second value is whose turn to count down on.
character.db.conditions.update({condition:[duration, turnchar]})
# Tell everyone!
character.location.msg_contents("%s gains the '%s' condition." % (character, condition))
""" """
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
CHARACTER TYPECLASS CHARACTER TYPECLASS
@ -373,6 +404,7 @@ class TBItemsCharacter(DefaultCharacter):
""" """
self.db.max_hp = 100 # Set maximum HP to 100 self.db.max_hp = 100 # Set maximum HP to 100
self.db.hp = self.db.max_hp # Set current HP to maximum self.db.hp = self.db.max_hp # Set current HP to maximum
self.db.conditions = {} # Set empty dict for conditions
""" """
Adds attributes for a character's current and maximum HP. Adds attributes for a character's current and maximum HP.
We're just going to set this value at '100' by default. We're just going to set this value at '100' by default.
@ -550,6 +582,11 @@ class TBItemsTurnHandler(DefaultScript):
self.db.turn += 1 # Go to the next in the turn order. self.db.turn += 1 # Go to the next in the turn order.
if self.db.turn > len(self.db.fighters) - 1: if self.db.turn > len(self.db.fighters) - 1:
self.db.turn = 0 # Go back to the first in the turn order once you reach the end. self.db.turn = 0 # Go back to the first in the turn order once you reach the end.
# Count down condition timers.
for fighter in self.db.fighters:
condition_tickdown(fighter, newchar)
newchar = self.db.fighters[self.db.turn] # Note the new character newchar = self.db.fighters[self.db.turn] # Note the new character
self.db.timer = TURN_TIMEOUT + self.time_until_next_repeat() # Reset the timer. self.db.timer = TURN_TIMEOUT + self.time_until_next_repeat() # Reset the timer.
self.db.timeout_warning_given = False # Reset the timeout warning. self.db.timeout_warning_given = False # Reset the timeout warning.
@ -796,7 +833,8 @@ class CmdCombatHelp(CmdHelp):
self.caller.msg("Available combat commands:|/" + self.caller.msg("Available combat commands:|/" +
"|wAttack:|n Attack a target, attempting to deal damage.|/" + "|wAttack:|n Attack a target, attempting to deal damage.|/" +
"|wPass:|n Pass your turn without further action.|/" + "|wPass:|n Pass your turn without further action.|/" +
"|wDisengage:|n End your turn and attempt to end combat.|/") "|wDisengage:|n End your turn and attempt to end combat.|/" +
"|wUse:|n Use an item you're carrying.")
else: else:
super(CmdCombatHelp, self).func() # Call the default help command super(CmdCombatHelp, self).func() # Call the default help command