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 int SchadenBerechnen(KampfAktionsTyp typ)
        {
            int schaden = typ switch
            {
                KampfAktionsTyp.SpielerAngriff => BerechneSchadenNormal(),
                KampfAktionsTyp.SpielerMagie => BerechneSchadenMagie(),
                KampfAktionsTyp.GegnerAngriff => BerechneSchadenGegnerAngriff(),
                _ => 10,
            };

            return(Math.Max(0, schaden));
        }
        /// <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;
            }
        }