def buy(self, index): if self.last_used_shop not in [A_WEAPON_SHOP, A_SPELL_SHOP]: return ['%s tries to buy something, but is not inside a shop. The people of the town stare in disbelief as %s haggles with an imaginary shopkeeper.' % (self.player.name, self.player.name)] is_weapon_shop = self.last_used_shop == A_WEAPON_SHOP try: index = int(index) - 1 if index not in range(0, len(self.weapons if is_weapon_shop else self.spells)): raise ValueError except ValueError: return ['%s inspects the shop intensely, but can\'t find such an item.' % self.player.name] log = Log() item = self.weapons[index] if is_weapon_shop else self.spells[index] if is_weapon_shop and item == self.player.weapon or not is_weapon_shop and item in self.player.spells: return ['%s already has that.' % self.player.name] if self.player.gold < item.cost: if self.state == S_DEAD: return ['%s doesn\'t have enough dream gold to buy that.' % self.player.name] return ['%s doesn\'t have enough gold to buy that.' % self.player.name] if is_weapon_shop: self.player.change_weapon(item, log) else: self.player.add_spell(item, log) self.player.remove_gold(item.cost, log) self.save() if self.state == S_DEAD: return log.output() + ['Strangely, it materializes next to the sleeping %s. Perhaps dreams do come true after all!' % self.player.name] return log.output()
def player_spell(self, index, target): try: index = int(index) - 1 if index >= len(self.player.spells): raise ValueError except ValueError: return ["%s doesn't know such a spell. Maybe the spell shop can help..." % self.player.name] log = Log() self.encounter.player_spell(self.player.spells[index], target, log) return log.output() + self.encounter_result()
def buy(self, index): if self.last_used_shop not in [A_WEAPON_SHOP, A_SPELL_SHOP]: return [ "%s tries to buy something, but is not inside a shop. The people of the town stare in disbelief as %s haggles with an imaginary shopkeeper." % (self.player.name, self.player.name) ] is_weapon_shop = self.last_used_shop == A_WEAPON_SHOP try: index = int(index) - 1 if index not in range(0, len(self.weapons if is_weapon_shop else self.spells)): raise ValueError except ValueError: return ["%s inspects the shop intensely, but can't find such an item." % self.player.name] log = Log() item = self.weapons[index] if is_weapon_shop else self.spells[index] if is_weapon_shop and item == self.player.weapon or not is_weapon_shop and item in self.player.spells: return ["%s already has that." % self.player.name] if self.player.gold < item.cost: if self.state == S_DEAD: return ["%s doesn't have enough dream gold to buy that." % self.player.name] return ["%s doesn't have enough gold to buy that." % self.player.name] if is_weapon_shop: self.player.change_weapon(item, log) else: self.player.add_spell(item, log) self.player.remove_gold(item.cost, log) self.save() if self.state == S_DEAD: return log.output() + [ "Strangely, it materializes next to the sleeping %s. Perhaps dreams do come true after all!" % self.player.name ] return log.output()
def player_flee(self): log = Log() self.encounter.player_flee(log) return log.output() + self.encounter_result()
def new_encounter(self): log = Log() self.state = S_ENCOUNTER self.encounter = self.dungeon.new_encounter(log) return log.output() + self.encounter_result()