public void ShouldDealLessOrEqualToTwentyDamage() { IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Pikachu>(); IPokemon targetPokemon = PokemonFactory.CreatePokemon <Onix>(); TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareElectricType(targetPokemon.Types[0]); int totalDamage = TypeDamageCalculator.CalculateDamage( attackingPokemon, targetPokemon, attackingPokemon.Moves[1], effectOfTypeOnTargetPokemon ); Assert.True(totalDamage <= 20); totalDamage = TypeDamageCalculator.CalculateDamage( attackingPokemon, targetPokemon, attackingPokemon.Moves[2], effectOfTypeOnTargetPokemon ); Assert.True(totalDamage <= 20); }
public void ShouldMoreThanTwentyButLessThanFiftyDamagePoints() { IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Gengar>(); IPokemon targetPokemon = PokemonFactory.CreatePokemon <Pidgeot>(); TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareGhostType(targetPokemon.Types[0]); int totalDamage = TypeDamageCalculator.CalculateDamage( attackingPokemon, targetPokemon, attackingPokemon.Moves[2], effectOfTypeOnTargetPokemon ); Assert.True(totalDamage >= 20 && totalDamage < 50); totalDamage = TypeDamageCalculator.CalculateDamage( attackingPokemon, targetPokemon, attackingPokemon.Moves[1], effectOfTypeOnTargetPokemon ); Assert.True(totalDamage >= 20 && totalDamage < 50); }
public void ShouldDealMoreThanFiftyDamagePoints() { IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Venusaur>(); IPokemon targetPokemon = PokemonFactory.CreatePokemon <Golem>(); TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareGrassType(targetPokemon.Types[0]); int totalDamage = TypeDamageCalculator.CalculateDamage( attackingPokemon, targetPokemon, attackingPokemon.Moves[3], effectOfTypeOnTargetPokemon ); Assert.True(totalDamage > 50); }
private static void ProcessAttack(IPokemon attackingPokemon, IPokemon targetPokemon, IMove move) { TypeEffect moveEffectOnPokemon = TypeComparer.GetMoveEffectivenessBasedOnPokemonType(move.Type, targetPokemon.Types.FirstOrDefault()); int calculatedDamage = TypeDamageCalculator.CalculateDamage(attackingPokemon, targetPokemon, move, moveEffectOnPokemon); attackingPokemon.UseMove(move); if (move.StatusMoves != null) { BattleAux.ProcessStatusAttack(attackingPokemon, targetPokemon, move); } else { targetPokemon.ReceiveDamage(calculatedDamage); ConsoleBattleInfoPokemon.ShowPokemonReceivedDamage(targetPokemon, calculatedDamage); ConsoleBattleInfoTypes.ShowHowEffectiveTheMoveWas(moveEffectOnPokemon); } }