diff --git a/battleman.py b/battleman.py index 73f513f..f50c4d3 100755 --- a/battleman.py +++ b/battleman.py @@ -11,6 +11,8 @@ # for resuming a battle later # * an option for passing in multiple files that contain combatant definitions # * down combatants go into a separate list +# * Ability for commands to accept partial data, and continue with selection from there + from dice import Dice import sys @@ -121,6 +123,7 @@ class Combatant(): condition['name'] = name condition['cond_type'] = cond_type condition['duration'] = duration + condition['index'] = self.next_condition_index if cond_type == 'timed' and duration == None: print('Error: specified a timed condition with no duration.') return @@ -130,7 +133,7 @@ class Combatant(): # Removes a condition, prints a message about it, and returns a copy of the condition def remove_condition(self, index): - if not index in self.conditions: + if index not in self.conditions: print "Error: invalid condition index." return None @@ -141,11 +144,14 @@ class Combatant(): def choose_condition(self): - pass + print self.format_condition_summary() + index = input_int('choice') + if index not in self.conditions: + print 'Error: {} is not a valid index'.format(index) + return self.choose_condition() - def format_conditions(self): - pass + return self.conditions[index] def tick_conditions(self): @@ -281,14 +287,16 @@ class Combatant(): def format_condition_summary(self): - summary = self.name + ':\n' - for (index, c) in conditions.items(): + summary = '' + for (index, c) in self.conditions.items(): type_string = '' - if c.cond_type == 's': + if c['cond_type'] == 's': type_string = 'Save Ends' - elif c.cond_type == 't': - type_string = '{} Round{}'.format(c.duration, 's'[c.duration==1:]) - summary = summary + '{}: {} ({})\n'.format(index, c['name'], c['duration']) + elif c['cond_type'] == 't': + type_string = '{} Round{}'.format(c['duration'], 's'[ c['duration']==1: ] ) + summary = summary + '{}: {} ({})\n'.format(index, c['name'], type_string) + + return summary.rstrip() @@ -341,7 +349,7 @@ class Battle(): def choose_combatant(self): print self.format_combatants() index = input_int('choose combatant') - if index not in self.combatant_hash.keys(): + if index not in self.combatant_hash: print 'Error: {} is not a valid index'.format(index) return self.choose_combatant() return self.combatant_hash[index] @@ -635,7 +643,7 @@ def do_remove_condition(data): else: c = battle.choose_combatant() - index = c.choose_condition() + index = c.choose_condition()['index'] c.remove_condition(index)