public override void Start(ActionFinishHandler handler) { effect = new FrozenEffect(target.x, target.y, 0); bottomEffectLayer.elements.Add(effect); target.paused = true; handler(null); base.Start(handler); }
private void Awake() { _rotationController = FindObjectOfType <RotationController>(); _eatingController = FindObjectOfType <EatingBugsController>(); _particlesController = FindObjectOfType <ParticlesController>(); _frozenEffect = FindObjectOfType <FrozenEffect>(); _enemyEffects = FindObjectOfType <EnemyEffects>(); }
public void FrostboltSpellUnitTest() { Player player = new Player("test", PlayerClassType.Mage) { MaxManaPoints = 100, ManaPoints = 100 }; GearHelper.EquipInitialGear(player); OutputHelper.Display.ClearUserOutput(); Monster monster = new Monster(3, MonsterType.Demon) { HitPoints = 100, MaxHitPoints = 100, FrostResistance = 0 }; MonsterBuilder.BuildMonster(monster); foreach (IItem item in monster.MonsterItems.Where(item => item is IEquipment eItem && eItem.Equipped)) { IEquipment eItem = item as IEquipment; eItem.Equipped = false; } string[] inputInfo = new[] { "spell", "frostbolt" }; int spellIndex = player.Spellbook.FindIndex( f => f.SpellCategory == SpellType.Frostbolt); PlayerHelper.SpellInfo(player, inputInfo); Assert.AreEqual("Frostbolt", OutputHelper.Display.Output[0][2]); Assert.AreEqual("Rank: 1", OutputHelper.Display.Output[1][2]); Assert.AreEqual("Mana Cost: 25", OutputHelper.Display.Output[2][2]); Assert.AreEqual("Instant Damage: 15", OutputHelper.Display.Output[3][2]); Assert.AreEqual("Frost damage will freeze opponent for 2 rounds.", OutputHelper.Display.Output[4][2]); Assert.AreEqual("Frozen opponents take 1.5x physical, arcane and frost damage.", OutputHelper.Display.Output[5][2]); OutputHelper.Display.ClearUserOutput(); string[] input = new[] { "cast", "frostbolt" }; string spellName = InputHelper.ParseInput(input); Assert.AreEqual("frostbolt", spellName); player.PlayerWeapon.Durability = 100; double baseDamage = player.PhysicalAttack(monster); player.CastSpell(monster, spellName); Assert.AreEqual(player.MaxManaPoints - player.Spellbook[spellIndex].ManaCost, player.ManaPoints); Assert.AreEqual(85, monster.HitPoints); Assert.AreEqual(1, monster.Effects[0].CurrentRound); Assert.AreEqual(2, monster.Effects[0].MaxRound); string attackString = $"You hit the {monster.Name} for {player.Spellbook[spellIndex].Offensive.Amount} frost damage."; Assert.AreEqual(attackString, OutputHelper.Display.Output[0][2]); string frozenString = $"The {monster.Name} is frozen. Physical, frost and arcane damage to it will be increased by 50%!"; Assert.AreEqual(frozenString, OutputHelper.Display.Output[1][2]); FrozenEffect frozenEffect = monster.Effects[0] as FrozenEffect; int monsterHitPointsBefore = monster.HitPoints; double totalBaseDamage = 0.0; double totalFrozenDamage = 0.0; double multiplier = frozenEffect.EffectMultiplier; for (int i = 2; i < 4; i++) { frozenEffect.ProcessRound(); Assert.AreEqual(i, monster.Effects[0].CurrentRound); Assert.AreEqual(frozenString, OutputHelper.Display.Output[i][2]); player.PlayerWeapon.Durability = 100; double frozenDamage = player.PhysicalAttack(monster); monster.HitPoints -= (int)frozenDamage; totalBaseDamage += baseDamage; totalFrozenDamage += frozenDamage; } GameHelper.RemovedExpiredEffectsAsync(monster); Thread.Sleep(1000); Assert.AreEqual(false, monster.Effects.Any()); int finalBaseDamageWithMod = (int)(totalBaseDamage * multiplier); int finalTotalFrozenDamage = (int)totalFrozenDamage; Assert.AreEqual(finalTotalFrozenDamage, finalBaseDamageWithMod, 14); Assert.AreEqual(monster.HitPoints, monsterHitPointsBefore - (int)totalFrozenDamage); }
public void FrostboltSpellUnitTest() { Player player = new Player("test", PlayerClassType.Mage) { HitPoints = 200, MaxHitPoints = 200, FrostResistance = 0 }; OutputHelper.Display.ClearUserOutput(); Monster monster = new Monster(1, MonsterType.Skeleton); while (monster.SkeletonCategory != SkeletonType.Mage) { monster = new Monster(1, MonsterType.Skeleton); } MonsterBuilder.BuildMonster(monster); monster.MonsterWeapon.CritMultiplier = 1; // Remove crit chance to remove "noise" in test int spellIndex = monster.Spellbook.FindIndex( f => f.SpellCategory == SpellType.Frostbolt); foreach (IItem item in player.Inventory.Where(item => item is IEquipment eItem && eItem.Equipped)) { IEquipment eItem = item as IEquipment; eItem.Equipped = false; } monster.Spellbook[spellIndex].CastFrostOffense(monster, player, spellIndex); int spellCost = monster.Spellbook[spellIndex].EnergyCost; Assert.AreEqual(monster.MaxEnergyPoints - spellCost, monster.EnergyPoints); int spellDamage = monster.Spellbook[spellIndex].Offensive.Amount; Assert.AreEqual(player.MaxHitPoints - spellDamage, player.HitPoints); int spellMaxRounds = monster.Spellbook[spellIndex].Offensive.AmountMaxRounds; Assert.AreEqual(spellMaxRounds, player.Effects[0].MaxRound); string attackString = $"The {monster.Name} conjures up a frostbolt and launches it at you!"; Assert.AreEqual(attackString, OutputHelper.Display.Output[0][2]); string attackSuccessString = $"The {monster.Name} hits you for {spellDamage} frost damage."; Assert.AreEqual(attackSuccessString, OutputHelper.Display.Output[1][2]); const string frozenString = "You are frozen. Physical, frost and arcane damage to you will be increased by 50%!"; Assert.AreEqual(frozenString, OutputHelper.Display.Output[2][2]); Assert.AreEqual(true, player.Effects[0] is FrozenEffect); FrozenEffect frozenEffect = player.Effects[0] as FrozenEffect; // Remove all spells after casting to make monster decide to use physical attack for unit test monster.Spellbook = null; for (int i = 2; i < 4; i++) { int playerHitPointsBefore = player.HitPoints; double multiplier = frozenEffect.EffectMultiplier; int baseDamage = monster.MonsterWeapon.RegDamage; int frozenDamage = (int)(monster.MonsterWeapon.RegDamage * multiplier); Assert.AreEqual(frozenDamage, baseDamage * multiplier, 1); monster.MonsterWeapon.Durability = 100; monster.Attack(player); Assert.AreEqual(i, player.Effects[0].CurrentRound); Assert.AreEqual(frozenString, OutputHelper.Display.Output[i][2]); Assert.AreEqual(playerHitPointsBefore - frozenDamage, player.HitPoints, 7); } GameHelper.RemovedExpiredEffectsAsync(player); Thread.Sleep(1000); Assert.AreEqual(false, player.Effects.Any()); }