Example #1
0
    def test_stronger_against_specific_entity_kind(self):
        power = 5
        strong_against = [Keyword.LARGE]
        weapon = random_weapon(atk=power, strong_against=strong_against)

        normal_foe = random_foe_entity(keywords=[])
        self.assertEqual(power, weapon.hit(random_player_entity(), normal_foe))

        vulnerable_foe = random_foe_entity(keywords=[Keyword.LARGE])
        self.assertEqual(power * 2, weapon.hit(random_player_entity(), vulnerable_foe))
Example #2
0
    def test_stronger_against_multiple_entity_kinds(self):
        power = 4
        strong_against = [Keyword.LARGE, Keyword.CAVALRY]
        weapon = random_weapon(atk=power, strong_against=strong_against)

        non_vulnerable_foe = random_foe_entity(keywords=[Keyword.SMALL])
        self.assertEqual(power, weapon.hit(random_player_entity(), non_vulnerable_foe))

        vulnerable_foe = random_foe_entity(keywords=[Keyword.LARGE])
        self.assertEqual(power * 2, weapon.hit(random_player_entity(), vulnerable_foe))

        super_vulnerable_foe = random_foe_entity(keywords=[Keyword.CAVALRY, Keyword.LARGE])
        self.assertEqual(power * 3, weapon.hit(random_player_entity(), super_vulnerable_foe))
    def test_attack_with_weapon(self):
        weapon = random_weapon(strong_against=[])
        equipments = [weapon]
        character_test = random_character_entity(equipments=equipments)

        self.assertEqual(character_test.strength + weapon.atk,
                         character_test.attack(random_foe_entity()))
    def test_attacked_while_having_equipments(self):
        defense = 2
        res = 3
        equipments = [random_equipment(defense=defense, res=res)]
        character_test = random_character_entity(equipments=equipments)

        # Physical attack
        damage = character_test.defense + 5
        character_test.attacked(random_foe_entity(), damage,
                                DamageKind.PHYSICAL, [])
        self.assertEqual(character_test.hp_max - 3, character_test.hp)

        character_test.healed()

        # Mental attack
        damage = character_test.res + 5
        character_test.attacked(random_foe_entity(), damage,
                                DamageKind.SPIRITUAL, [])
        self.assertEqual(character_test.hp_max - 2, character_test.hp)
Example #5
0
    def test_no_charge_bonus_for_weapon_with_no_charge(self):
        power = 4
        weapon = random_weapon(atk=power, attack_kind='PHYSICAL', charge=False)
        player = random_player_entity()
        player.strength = 5
        attacked_ent = random_foe_entity(min_hp=1000, max_hp=1000, max_defense=0, keywords=[])
        player.equip(weapon)

        # No charge bonus even if there is a " charge "
        player.pos = (player.old_pos[0] + 5 * TILE_SIZE, player.old_pos[1])
        self.assertEqual(player.strength + weapon.atk, player.attack(attacked_ent))
Example #6
0
    def test_charge_bonus(self):
        power = 4
        spear = random_weapon(atk=power, attack_kind='PHYSICAL', charge=True)
        player = random_player_entity()
        player.strength = 5
        attacked_ent = random_foe_entity(min_hp=1000, max_hp=1000, max_defense=0, keywords=[])
        player.equip(spear)
        # No charge
        self.assertEqual(player.strength + spear.atk, player.attack(attacked_ent))

        # Charge
        player.pos = (player.old_pos[0] + 5 * TILE_SIZE, player.old_pos[1])
        self.assertEqual(player.strength + int(spear.atk * 1.5), player.attack(attacked_ent))

        # Stronger charge
        player.pos = (player.old_pos[0] + 8 * TILE_SIZE, player.old_pos[1])
        self.assertEqual(player.strength + int(spear.atk * 2), player.attack(attacked_ent))
Example #7
0
 def test_save_and_load_foe(self):
     foe = random_foe_entity(name="skeleton_cobra",
                             reach=[2],
                             keywords=[Keyword.CAVALRY],
                             loot=[(parse_item_file('monster_meat'),
                                    rd.random()),
                                   (random_gold(), rd.random())])
     foe_saved = foe.save('foe')
     loaded_foe = load_foe(foe_saved, True, 0, 0)
     self.assertEqual(foe.name, loaded_foe.name)
     self.assertEqual(foe.pos, loaded_foe.pos)
     self.assertEqual(foe.hp, loaded_foe.hp)
     self.assertEqual(foe.defense, loaded_foe.defense)
     self.assertEqual(foe.res, loaded_foe.res)
     self.assertEqual(foe.strength, loaded_foe.strength)
     self.assertEqual(foe.strategy, loaded_foe.strategy)
     self.assertEqual(foe.lvl, loaded_foe.lvl)
     self.assertEqual(foe.skills, loaded_foe.skills)
     self.assertEqual(foe.reach, loaded_foe.reach)
     self.assertEqual(foe.keywords, loaded_foe.keywords)
     self.assertEqual(foe.alterations, loaded_foe.alterations)
     self.assertEqual(foe.potential_loot, loaded_foe.potential_loot)
 def test_hit_power(self):
     power = 3
     strong_against = []
     weapon = random_weapon(atk=power, strong_against=strong_against)
     self.assertEqual(
         power, weapon.hit(random_player_entity(), random_foe_entity()))