internal static List <string> ReaktionAusgabe(this Reaktion reaktion, KampfAktionsTyp typ, GegnerBase gegner) { List <string> ausgabe; switch (typ) { case KampfAktionsTyp.SpielerAngriff: case KampfAktionsTyp.SpielerMagie: ausgabe = AusgabeSpielerAktion(reaktion); break; case KampfAktionsTyp.GegnerAngriff: ausgabe = AusgabeGegnerAktion(reaktion, gegner); break; case KampfAktionsTyp.SpielerItem: ausgabe = AusgabeSpielerItem(reaktion, gegner); break; default: ausgabe = new List <string>(); break; } return(ausgabe); }
private static List <string> GetReaktionTexte(Reaktion reaktion, BaseObject sprecher = null) { if (reaktion.Texte != null) { return(GetTextFuerSprecher(sprecher?.Name, reaktion.Texte)); } else { return(new List <string>()); } }
private static List <string> AusgabeSpielerItem(Reaktion reaktion, GegnerBase gegner) { List <string> ausgabe = GetReaktionTexte(reaktion, gegner); if (reaktion.Schaden != 0) { ausgabe.Add($"{gegner.Name} hat {reaktion.Schaden} Schaden erhalten."); } return(ausgabe); }
private static List <string> AusgabeSpielerAktion(Reaktion reaktion) { List <string> ausgabe = new() { $"{reaktion.Ziel.Name} hat {reaktion.Schaden} Schaden erhalten." }; if (reaktion.Texte == null) { ausgabe.AddRange(GetReaktionTexte(reaktion, reaktion.Ziel)); } return(ausgabe); }
private static List <string> AusgabeGegnerAktion(Reaktion reaktion, GegnerBase gegner) { List <string> ausgabe = new() { $"{gegner.Name} greift dich an...", $"Du hast {reaktion.Schaden} Schaden erhalten.\r\n" }; if (reaktion.Ziel != null && reaktion.Ziel.Lebenspunkte <= 0) { ausgabe.Add("Du wurdest besiegt!"); } return(ausgabe); } }
private Reaktion ItemBenutzen() { Reaktion reaktion = Gegner.GetReaktionAufItem(Item); if (reaktion is null) { reaktion = new Reaktion($"{Item.Name} hat keine Wirkung auf {Gegner.Name}"); } else { Gegner.Lebenspunkte -= reaktion.Schaden; } Item = null; return(reaktion); }
/// <summary> /// Führt eine Aktion des entsprechenden <see cref="KampfAktionsTyp"/>s aus. /// </summary> /// <param name="typ">Der Typ der Aktion.</param> public void AktionAusführen(KampfAktionsTyp typ) { Reaktion reaktion = null; switch (typ) { case KampfAktionsTyp.SpielerAngriff: reaktion = SchadenAusteilenAngriff(); break; case KampfAktionsTyp.SpielerMagie: reaktion = SchadenAusteilenMagie(); break; case KampfAktionsTyp.SpielerItem: reaktion = ItemBenutzen(); break; case KampfAktionsTyp.GegnerAngriff: reaktion = SchadenErhalten(); break; case KampfAktionsTyp.GegnerSpezial: reaktion = SpezialAktionAusführen(); break; } Ausgabe.AddRange(reaktion.ReaktionAusgabe(typ, Gegner)); if (reaktion != null && Spieler.Lebenspunkte > 0 && Gegner.Lebenspunkte > 0) { Aktion(); } else { if (Gegner.Lebenspunkte <= 0) { Ausgabe.Add(Gegner.TodesText); } SchreibeAusgabe(); IstZuende = true; } }