def test_add(self): damage_1 = Damage(100, 150) damage_2 = Damage(200, 50) self.assertEqual(damage_1 + damage_2, Damage(300, 200)) damage_1 += damage_2 self.assertEqual(damage_1, Damage(300, 200)) self.assertEqual(damage_2, Damage(200, 50))
def __init__(self, name='fake_actor', damage=None, max_health=100, context=None, level=7, mob_type=None): self.name = name self.basic_damage = damage if damage is not None else Damage(10, 10) self.max_health = max_health self.health = max_health self.level = level self.context = context if context else BattleContext() self.mob_type = mob_type
def test_randomize(self): damages = set() damage = Damage(100, 100) for i in xrange(100000): test_damage = damage.clone() test_damage.randomize() damages.add((int(test_damage.physic), int(test_damage.magic))) test_damages = set() delta = int(100 * c.DAMAGE_DELTA) for physic in xrange(100 - delta, 100 + delta): for magic in xrange(100 - delta, 100 + delta): test_damages.add((physic, magic)) self.assertEqual(damages, test_damages)
def __init__(self): self.ability_magic_mushroom = [] self.ability_sidestep = [] self.stun_length = 0 self.crit_chance = 0 self.berserk_damage_modifier = 1.0 self.ninja = 0 self.damage_queue_fire = [] self.damage_queue_poison = [] self.initiative_queue = [] self.first_strike = False self.last_chance_probability = 0 self.incoming_magic_damage_modifier = 1.0 self.incoming_physic_damage_modifier = 1.0 self.outcoming_magic_damage_modifier = 1.0 self.outcoming_physic_damage_modifier = 1.0 self.pvp_advantage = 0 self.pvp_advantage_used = False self.pvp_advantage_strike_damage = Damage(0, 0) self.turn = 0
def use_damage_queue_poison(self, damage_queue): self.damage_queue_poison = [(delta if delta else Damage(0, 0)) + (queue if queue else Damage(0, 0)) for queue, delta in itertools.zip_longest(self.damage_queue_poison, [None]+damage_queue)]
def basic_damage(self): distribution = self.record.archetype.power_distribution raw_damage = f.expected_damage_to_hero_per_hit( self.level) * self.damage_modifier return Damage(physic=raw_damage * distribution.physic, magic=raw_damage * distribution.magic)
def test_mul(self): damage = Damage(100, 150) self.assertEqual(damage * 2, Damage(200, 300)) damage *= 2 self.assertEqual(damage, Damage(200, 300))
def test_multiply(self): damage = Damage(100, 200) self.assertEqual(damage.multiply(0.5, 2), Damage(50, 400)) self.assertEqual(damage, Damage(50, 400))
def test_clone(self): self.assertEqual(Damage(100, 666).clone(), Damage(100, 666))
def test_eq(self): self.assertEqual(Damage(100, 666), Damage(100, 666)) self.assertNotEqual(Damage(101, 666), Damage(100, 666)) self.assertNotEqual(Damage(100, 667), Damage(100, 666))
def test_total(self): self.assertEqual(Damage(100, 666).total, 766)
def test_div(self): damage = Damage(100, 150) self.assertEqual(damage / 2, Damage(50, 75)) damage /= 2 self.assertEqual(damage, Damage(50, 75))
def use_damage_queue_poison(self, damage_queue): self.damage_queue_poison = map(lambda queue, delta: (delta if delta else Damage(0, 0)) + (queue if queue else Damage(0, 0)), self.damage_queue_poison, [None] + damage_queue) # pylint: disable=W0110