public void Attack(Pokemon attacker, Pokemon defender, double effectiveness) { double mult1 = (attacker.ExperiencePoint * 2) / 5; double mult2 = attacker.Attack / attacker.Defense; double modifier = effectiveness * _random.NextDouble() * (4.0 - 0.85) + 0.85; double damage = (mult1 * mult2 + 2) * modifier; damage = Math.Round(damage); defender.DecreaseHitPoint(damage); defender.RemainingHitPoint = Math.Round(defender.RemainingHitPoint, 2); DisplayAttackMessage(effectiveness); Console.WriteLine($"{attacker.PokeName} gave {damage} damage!"); if (defender.RemainingHitPoint <= 0) { HpFinishedEventArgs hpFinishedEventArgs = new HpFinishedEventArgs() { RemainingHp = defender.RemainingHitPoint, Loser = defender, Type = FinishType.normal, Winner = attacker }; OnHpFinished(hpFinishedEventArgs); } }
public void UsePokeBall(PokeBall pokeBall) { pokeBall.Use(TrainersPoke, WildPoke); HpFinishedEventArgs hpFinishedEventArgs = new HpFinishedEventArgs() { RemainingHp = WildPoke.RemainingHitPoint, Loser = WildPoke, Type = FinishType.pokeBall, Winner = TrainersPoke }; OnHpFinished(hpFinishedEventArgs); }
private void Battle_hpFinishedEventHandler(object sender, HpFinishedEventArgs e) { Console.WriteLine(Constants.battleOverMsg); Console.WriteLine($"{e.Winner.PokeName} won the battle!"); isBattleOver = true; e.Winner.IncreaseExperiencePoint(); if (e.Loser == TrainersPoke) { Trainer.Instance.DeletePokemon(e.Loser); } if (e.Type == FinishType.pokeBall) { Console.WriteLine($"You have now captured {e.Loser.PokeName}"); } }
private void OnHpFinished(HpFinishedEventArgs hpFinishedEventArgs) { HpFinishedEventHandlerInstance?.Invoke(this, hpFinishedEventArgs); }