def test_skill_apply_buff_after_gcd_casted(self): clock = Clock() player = Player('John', clock) dummy = TargetDummy() player.cast('Blizzard I', dummy) tick_to_complete = Clock(player.skills['Blizzard I'].cast_time).ticks for _ in range(tick_to_complete): clock.tick() self.assertFalse('Umbral Ice' in player.buffs) clock.tick() self.assertTrue('Umbral Ice' in player.buffs)
def test_player_gcd(self): clock = Clock() player = Player('John', clock) dummy = TargetDummy() self.assertTrue(player.cast('Blizzard I', dummy)) self.assertTrue(player.casting) tick_to_complete = Clock(player.skills['Blizzard I'].cast_time).ticks for _ in range(tick_to_complete): clock.tick() self.assertTrue(player.casting) clock.tick() self.assertFalse(player.casting)
def test_player_use_swiftcast(self): clock = Clock() player = Player('John', clock) dummy = TargetDummy() self.assertTrue(player.cast('Swiftcast', player)) self.assertTrue(player.casting) tick_to_complete = Clock(player.skills['Swiftcast'].cast_time).ticks self.assertEqual(len(player.buffs), 1) self.assertEqual(player.buffed['cast_time_multiplier'], 0) for _ in range(tick_to_complete): clock.tick() clock.tick() player.cast('Blizzard I', dummy) clock.tick() # trigger cast Blizzard I self.assertFalse('Swiftcast' in player.buffs) self.assertNotEqual(player.buffed['cast_time_multiplier'], 0)
def test_skill_swiftcast(self): skill = skills.Swiftcast() clock = Clock() player = Player('John', clock) self.assertTrue(skill.execute(player, player)) self.assertFalse(skill.execute(player, player)) self.assertEqual(player.buffed['cast_time_multiplier'], 0) self.assertEqual(player.buffed['gcd'], player.base['gcd'])
def test_skill_ley_line(self): skill = skills.LeyLine() clock = Clock() player = Player('John', clock) self.assertTrue(skill.execute(player, player)) self.assertFalse(skill.execute(player, player)) self.assertNotEqual(player.buffed['cast_time_multiplier'], 1) self.assertNotEqual(player.buffed['gcd'], player.base['gcd'])
def test_player_executing_fireIV(self): clock = Clock() player = Player('John', clock) player.receive_buff(buffs.EnochianBuff()) dummy = TargetDummy() self.assertTrue(player.cast('Fire IV', dummy)) self.assertFalse(player.cast('Fire IV', dummy))
def test_player_enochian_validity(self): clock = Clock() player = Player('John', clock) player.receive_buff(buffs.AstralFireBuff(1)) player.cast('Enochian', player) clock.tick() self.assertTrue('Enochian' in player.buffs) for _ in range(buffs.AstralFireBuff(1).duration.ticks): clock.tick() self.assertFalse('Astral Fire' in player.buffs) self.assertFalse('Enochian' in player.buffs)
def test_player_foul_and_polyglot(self): clock = Clock() player = Player('John', clock) dummy = TargetDummy() player.receive_buff(buffs.AstralFireBuff(1)) self.assertTrue(player.cast('Enochian', player)) clock.tick() player.casting_time.set_time(0) self.assertTrue('Polyglot' in player.buffs) self.assertEqual(player.buffs['Polyglot'].charge, 0) self.assertFalse(player.cast('Foul', dummy)) player.buffs['Polyglot'].gain_charge_timer.set_time(0) clock.tick() self.assertEqual(player.buffs['Polyglot'].charge, 1) self.assertTrue(player.cast('Foul', dummy)) clock.tick() tick_to_complete = Clock(player.skills['Foul'].cast_time).ticks for _ in range(tick_to_complete): clock.tick() self.assertEqual(player.buffs['Polyglot'].charge, 0) self.assertTrue('Polyglot' in player.buffs)
def main(): """ main """ clock = Clock() player = Player('Tomoyo', clock) dummy = TargetDummy() observer = TargetObserver() observer.eyes_on(dummy) rotation = Rotation(['b1', 'Enochian'], ['b1', 'sc', 'b1']) while clock < Time(20): if not player.casting: next_skill = player.skills[rotation.next()] if isinstance(next_skill, skillmeta.GCD): while not player.gcd.is_zero(): clock.tick() player.cast(next_skill.name, dummy) print(f"Total damage: {observer.observe_total_damage_taken()}") else: if next_skill.clock.is_zero(): player.cast(next_skill.name, player) clock.tick()