public BlockDamageEffect(EffectAmountSettings effectAmountSettings) { effectAmountSettings.ValidateSettings(); EffectHolder = effectAmountSettings.EffectHolder; Name = effectAmountSettings.Name; BlockAmount = (int)effectAmountSettings.Amount; }
public ReflectDamageEffect(EffectAmountSettings effectAmountSettings) { effectAmountSettings.ValidateSettings(); EffectHolder = effectAmountSettings.EffectHolder; Name = effectAmountSettings.Name; MaxRound = effectAmountSettings.MaxRound; ReflectDamageAmount = (int)effectAmountSettings.Amount; }
public void EffectAmountSettingsWithAllSettingsDoesNotThrowException() { Player player = new Player("test", PlayerClassType.Mage); EffectAmountSettings effectSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, Name = "test" }; Assert.DoesNotThrow(() => effectSettings.ValidateSettings()); }
public void EffectAmountSettingsMissingEffectHolderThrowsException() { EffectAmountSettings effectSettings = new EffectAmountSettings { Amount = 50, Name = "test" }; const string expectedErrorMessage = "EffectAmountSettings: EffectHolder has not been set."; Exception exception = Assert.Throws <Exception>(() => effectSettings.ValidateSettings()); Assert.AreEqual(expectedErrorMessage, exception.Message); }
public void EffectAmountSettingsMissingAmountThrowsException() { Player player = new Player("test", PlayerClassType.Mage); EffectAmountSettings effectSettings = new EffectAmountSettings { EffectHolder = player, Name = "test" }; const string expectedErrorMessage = "EffectAmountSettings: Amount has not been set."; Exception exception = Assert.Throws <Exception>(() => effectSettings.ValidateSettings()); Assert.AreEqual(expectedErrorMessage, exception.Message); }
public void PlayerHasBlockDamageEffectUnitTest() { Player player = new Player("test", PlayerClassType.Warrior); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, Name = "block test" }; IEffect blockEffect = new BlockDamageEffect(effectAmountSettings); player.Effects.Add(blockEffect); Assert.AreEqual(1, player.Effects.Count); Assert.AreEqual(true, player.Effects[0] is BlockDamageEffect); Assert.AreEqual(1, player.Effects[0].CurrentRound); Assert.AreEqual(3, player.Effects[0].MaxRound); Assert.AreEqual(false, player.Effects[0].IsHarmful); Assert.AreEqual(blockEffect.EffectHolder, player); }
public void PlayerHasReflectDamageEffectUnitTest() { Player player = new Player("test", PlayerClassType.Mage); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, MaxRound = 4, Name = "reflect damage test" }; IEffect reflectEffect = new ReflectDamageEffect(effectAmountSettings); player.Effects.Add(reflectEffect); Assert.AreEqual(1, player.Effects.Count); Assert.AreEqual(true, player.Effects[0] is ReflectDamageEffect); Assert.AreEqual(1, player.Effects[0].CurrentRound); Assert.AreEqual(effectAmountSettings.MaxRound, player.Effects[0].MaxRound); Assert.AreEqual(false, player.Effects[0].IsHarmful); Assert.AreEqual(reflectEffect.EffectHolder, player); }
public static void CastReflectDamage(Player player, int index) { player.ManaPoints -= player.Spellbook[index].ManaCost; const string reflectString = "You create a shield around you that will reflect damage."; OutputHelper.Display.StoreUserOutput( Settings.FormatAttackSuccessText(), Settings.FormatDefaultBackground(), reflectString); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = player.Spellbook[index].ChangeAmount.Amount, EffectHolder = player, MaxRound = player.Spellbook[index].ChangeAmount.ChangeMaxRound, Name = player.Spellbook[index].Name }; player.Effects.Add(new ReflectDamageEffect(effectAmountSettings)); }
public void ProcessBlockDamageEffectOutOfCombatRoundUnitTest() { OutputHelper.Display.ClearUserOutput(); Player player = new Player("test", PlayerClassType.Warrior); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, Name = "block test" }; BlockDamageEffect blockEffect = new BlockDamageEffect(effectAmountSettings); player.Effects.Add(blockEffect); const string blockFadeMessage = "Your block effect is fading away."; blockEffect.ProcessRound(); Assert.AreEqual(blockFadeMessage, OutputHelper.Display.Output[0][2]); Assert.AreEqual(effectAmountSettings.Amount, blockEffect.BlockAmount); Assert.AreEqual(2, player.Effects[0].CurrentRound); Assert.AreEqual(false, blockEffect.IsEffectExpired); }
public static void UseDefenseAbility(Player player, int index) { DeductAbilityCost(player, index); int blockAmount = player.Abilities[index].Defensive.BlockDamage; string blockString = $"You start blocking your opponent's attacks! You will block {blockAmount} damage."; OutputHelper.Display.StoreUserOutput( Settings.FormatSuccessOutputText(), Settings.FormatDefaultBackground(), blockString); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = blockAmount, EffectHolder = player, Name = player.Abilities[index].Name }; player.Effects.Add(new BlockDamageEffect(effectAmountSettings)); }
public void ProcessReflectDamageEffectOutOfCombatRoundUnitTest() { OutputHelper.Display.ClearUserOutput(); Player player = new Player("test", PlayerClassType.Mage); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, MaxRound = 4, Name = "reflect damage test" }; ReflectDamageEffect reflectEffect = new ReflectDamageEffect(effectAmountSettings); player.Effects.Add(reflectEffect); const string reflectMessage = "Your spell reflect is slowly fading away."; reflectEffect.ProcessRound(); Assert.AreEqual(reflectMessage, OutputHelper.Display.Output[0][2]); Assert.AreEqual(effectAmountSettings.Amount, reflectEffect.ReflectDamageAmount); Assert.AreEqual(2, player.Effects[0].CurrentRound); Assert.AreEqual(false, reflectEffect.IsEffectExpired); }
public void ProcessReflectDamageEffectInCombatRoundUnitTest() { OutputHelper.Display.ClearUserOutput(); Player player = new Player("test", PlayerClassType.Mage); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, MaxRound = 4, Name = "reflect damage test" }; ReflectDamageEffect reflectEffect = new ReflectDamageEffect(effectAmountSettings); player.Effects.Add(reflectEffect); const int incomingDamage = 30; string reflectMessage = $"You reflected {incomingDamage} damage back at your opponent!"; reflectEffect.ProcessChangeDamageRound(incomingDamage); Assert.AreEqual(reflectMessage, OutputHelper.Display.Output[0][2]); Assert.AreEqual(2, player.Effects[0].CurrentRound); Assert.AreEqual(false, reflectEffect.IsEffectExpired); }
public void ProcessBlockDamageEffectInCombatRoundWhereDamageLessThanBlockAmountUnitTest() { OutputHelper.Display.ClearUserOutput(); Player player = new Player("test", PlayerClassType.Warrior); EffectAmountSettings effectAmountSettings = new EffectAmountSettings { Amount = 50, EffectHolder = player, Name = "block test" }; BlockDamageEffect blockEffect = new BlockDamageEffect(effectAmountSettings); player.Effects.Add(blockEffect); const int incomingDamage = 30; string blockMessage = $"Your defensive move blocked {incomingDamage} damage!"; blockEffect.ProcessChangeDamageRound(incomingDamage); Assert.AreEqual(blockMessage, OutputHelper.Display.Output[0][2]); Assert.AreEqual(blockEffect.BlockAmount, 50 - incomingDamage); Assert.AreEqual(2, player.Effects[0].CurrentRound); Assert.AreEqual(false, blockEffect.IsEffectExpired); }