Exemple #1
0
    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()
Exemple #2
0
    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()
Exemple #3
0
    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()
Exemple #4
0
 def player_flee(self):
     log = Log()
     self.encounter.player_flee(log)
     return log.output() + self.encounter_result()
Exemple #5
0
 def new_encounter(self):
     log = Log()
     self.state = S_ENCOUNTER
     self.encounter = self.dungeon.new_encounter(log)
     return log.output() + self.encounter_result()
Exemple #6
0
 def player_flee(self):
     log = Log()
     self.encounter.player_flee(log)
     return log.output() + self.encounter_result()
Exemple #7
0
 def new_encounter(self):
     log = Log()
     self.state = S_ENCOUNTER
     self.encounter = self.dungeon.new_encounter(log)
     return log.output() + self.encounter_result()