Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
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'])
Ejemplo n.º 5
0
 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'])
Ejemplo n.º 6
0
 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))
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
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()