Start porting in condition code from coolbattles
This commit is contained in:
parent
91c333e6d3
commit
e61df0a400
1 changed files with 58 additions and 20 deletions
|
|
@ -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,11 +351,38 @@ 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))
|
||||||
|
|
||||||
"""
|
"""
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue