private void WykonajRuch(Pokemon atakujący, Pokemon broniący, Walka walka) { //if (broniący.Umiejętność.Efekty != null) //{ // foreach (var efekt in broniący.Umiejętność.Efekty) // { // if (efekt.MożnaAktywować(atakujący, walka)) // efekt.Uaktywnij(walka,atakujący); // } //} atakujący.Atakuj(broniący, walka); //var obrazenia = atakujący.ZadajObrażenia(broniący, walka); //broniący.Statystyki.Życie -= obrazenia; //Console.WriteLine($"{atakujący} używa ruchu {atakujący.OstatniRuch.Nazwa}. Zadaje {(int)obrazenia} obrażeń"); if (atakujący.OstatniRuch.Efekty != null) { foreach (var efekt in atakujący.OstatniRuch.Efekty) { if (efekt.MożnaAktywować(broniący, null)) { efekt.Uaktywnij(broniący, null); } } } }
private void PróbujZabić(Pokemon atakujący, Pokemon broniący, Walka walka) { if (walka.KoniecWalki) { return; } var blokowanieAtaków = new BlokowanieAtaków(); if (!blokowanieAtaków.ZablokujAtak(atakujący, broniący, walka)) { var obliczCelnośc = new CelowanieRuchami(); var random = new Random(); var celnośćAtakProcent = obliczCelnośc.Traf(walka, atakujący, broniący); var procent = random.Next(0, 99); if (celnośćAtakProcent >= procent) { WykonajRuch(atakujący, broniący, walka); } else { Console.WriteLine($"{atakujący} używa ruchu {atakujący.OstatniRuch.Nazwa}. Jednak pudłuję"); } } }
public void OkreślKolejność(Walka walka) { var priorytetRuchTrener = walka.Trener.Pokemon.OstatniRuch.Priorytet; var priorytetRuchRywal = walka.Rywal.Pokemon.OstatniRuch.Priorytet; if (priorytetRuchRywal == priorytetRuchTrener) { var szybkośćTrener = walka.Trener.Pokemon.Statystyki.Szybkość; var szybkośćRywal = walka.Rywal.Pokemon.Statystyki.Szybkość; if (szybkośćTrener > szybkośćRywal) { AtakujePierwszy = walka.Trener.Pokemon; AtakujeDrugi = walka.Rywal.Pokemon; } else { AtakujePierwszy = walka.Rywal.Pokemon; AtakujeDrugi = walka.Trener.Pokemon; } } else if (priorytetRuchRywal > priorytetRuchTrener) { AtakujePierwszy = walka.Trener.Pokemon; AtakujeDrugi = walka.Rywal.Pokemon; } else { AtakujePierwszy = walka.Rywal.Pokemon; AtakujeDrugi = walka.Trener.Pokemon; } return; }
public void Atakuj(Pokemon atakowany, Walka walka) { AktywujBonusy(atakowany); _atakujeSkurczybyk.OnNext(new PokemonAtakuje { Nazwa = Name, KogoAtakuje = atakowany.Name, NazwaRuchu = OstatniRuch.Nazwa, Obrażenia = ZadajObrażenia(atakowany, walka) }); }
public void Start(Walka walka) { walka.Trener.Pokemon.WybierzRuch(walka); walka.Rywal.Pokemon.WybierzRuch(walka); OkreślKolejność(walka); InitTuraEfekt(AtakujePierwszy); InitTuraEfekt(AtakujeDrugi); PróbujZabić(AtakujePierwszy, AtakujeDrugi, walka); PróbujZabić(AtakujeDrugi, AtakujePierwszy, walka); }
public double ZadajObrażenia(Pokemon rywal, Walka walka) { if (OstatniRuch.Rodzaj == "Specjalny") { return(Wzory.WzórNaSpAtak(rywal, this, OstatniRuch)); } else if (OstatniRuch.Rodzaj == "Fizyczny") { return(Wzory.WzórNaAtak(rywal, this, OstatniRuch)); } else { return(0); } }
public Ruch WybierzRuch(Walka walka) { Ruch ruch; if (OstatniRuch == null) { ruch = Ruchy.FirstOrDefault(); } else { var index = Ruchy.IndexOf(OstatniRuch); index = index + 1; if (index > 3) { index = 0; } ruch = Ruchy.Skip(index).FirstOrDefault(); } OstatniRuch = ruch; return(ruch); }
private void ZakończWalke(Pokemon przegrany, Pokemon wygrany, Walka walka) { walka.KoniecWalki = true; Console.WriteLine($"{przegrany} Pada na ziemie. Wygrywa {wygrany}"); }