public void TestMonsterDieCleansMonsterData() { var client = ServerMocker.GetClient(); var player = client.FullLoginSequence(_player); var skeleton = new Skeleton() { Position = new Position(0, 1) }; Server.Events.Call(new EntitySpawnEvent() { Entity = skeleton, Position = skeleton.Position }); skeleton.MovementBehaviour = null; skeleton.MovementTick(); var skeletonMoveTask = GameScheduler.GetTask(skeleton.MovementTaskId); Assert.That(skeletonMoveTask != null, "Monster movement task should be created upon spawning"); player.Atk = 5; player.AtkSpeed = 99999999; skeleton.Def = 0; player.TryAttacking(skeleton, singleHit: true); Assert.That(skeleton.HP == skeleton.MAXHP - 5, "5 atk on 0 def should deal 5 damage"); player.Atk = 5000; player.TryAttacking(skeleton, singleHit: true); var moveTask = GameScheduler.GetTask(skeleton.MovementTaskId); var attackTask = GameScheduler.GetTask(skeleton.AttackTaskId); Assert.That(skeleton.HP < 0, "Skeleton should have < 0 hp as he took 5k damage"); Assert.That(!Server.Map.Monsters.ContainsKey(skeleton.UID), "Server should not contain the skeleton as its dead."); Assert.That(moveTask == null, "Skeleton is dead and his move task should have been cancelled"); Assert.That(attackTask == null, "Skeleton is dead and his move task should have been cancelled"); }