//Alle Bewohnere auflisten
        static void ShowCitizen()
        {
            Console.WriteLine("###      3: Bewohner anzeigen          ###");
            foreach (var bewohner in AlleBewohner)
            {
                //Berechnung des Machtfaktors des Clans
                int    MachtDesBewohners  = bewohner.Machtfaktor;
                string stammesfuehrer     = "";
                string stammesfuehrervon  = "";
                int    stammesfuehrerseit = 0;
                Console.Write(bewohner.Spezies + " - " + bewohner.Name + "(" + MachtDesBewohners + ")     " + bewohner.Alter + " Jahre alt          ");
                //Wenn wir den Stammesfuehrer nicht kennen wollen wir nicht einfach einen leeren Eintrag anzeigen, sondern etwas ausgeben.
                foreach (var stamm in AlleClans)
                {
                    //Erfassen des Stammes, falls der Bewohner Mitglied ist
                    if (stamm.Mitglieder.Contains(bewohner))
                    {
                        stammesfuehrer     = stamm.Stammeshaupt;
                        stammesfuehrervon  = stamm.Name;
                        stammesfuehrerseit = stamm.StammeshauptSeit;
                    }
                }
                //Wenn der Stamm vom Bewohner geführt wird, geben wir dies aus, ansonsten wo der Bewohner Mitglied ist
                if (stammesfuehrer.Equals(bewohner.Name))
                {
                    Console.Write("" + bewohner.Name + " führt den Clan " + stammesfuehrervon + " seit " + stammesfuehrerseit + " Jahren.");
                }
                else
                {
                    Console.Write("Mitglied von " + stammesfuehrervon);
                }
                //Für den König besonder interessant: wie viel Steuern zahlt der Bewohner potentiell?
                Console.Write("\n Besteuerung: " + (MachtDesBewohners * SteuerBasisSatz) + "\n");

                if (bewohner.Spezies.Equals("Zwerg"))
                {
                    Zwerg zwerg = (Zwerg)bewohner;
                    foreach (var item in zwerg.Inventar)
                    {
                        Console.Write("" + item.Name + "(" + item.MagieWert + "), ");
                    }
                }
                else if (bewohner.Spezies.Equals("Elb"))
                {
                    Console.Write("Elben haben nur ihre Haare als Waffe.");
                }
                Console.Write("\n");
                Console.WriteLine("#----#");
            }
            ResetProgram();
        }
        static void Init()
        {
            SteuerBasisSatz = 2;
            //Ausrüsten der Bewohnere für Raids & Co
            Gimli.Inventar.Add(Axt01);
            Gimli.Inventar.Add(Schwert);
            Zwerg.UpdateMachtfaktor(Gimli);
            Gumli.Inventar.Add(Axt02);
            Zwerg.UpdateMachtfaktor(Gumli);
            Zwingli.Inventar.Add(Zauberstab);
            Zwingli.Inventar.Add(Streithammer);
            Zwerg.UpdateMachtfaktor(Zwingli);
            Elb.UpdateMachtfaktor(Elidyr);
            Elb.UpdateMachtfaktor(Iefyr);
            Elb.UpdateMachtfaktor(Vulas);
            Elb.UpdateMachtfaktor(Malon);

            //Bewohnere sind keine Einzelkämpfer
            Altobarden.Mitglieder.Add(Gimli);
            Altobarden.Mitglieder.Add(Zwingli);
            Elbkbnechte.Mitglieder.Add(Gumli);

            Murkpeak.Mitglieder.Add(Elidyr);
            Murkpeak.Mitglieder.Add(Iefyr);
            Murkpeak.Mitglieder.Add(Vulas);
            Montzieu.Mitglieder.Add(Malon);
            //Hinzufügen der Stämme zu einer Liste
            AlleClans.Add(Altobarden);
            AlleClans.Add(Elbkbnechte);
            AlleClans.Add(Murkpeak);
            AlleClans.Add(Montzieu);
            //Hinzufügen der Bewohnere zu einer Liste
            AlleBewohner.Add(Gimli);
            AlleBewohner.Add(Gumli);
            AlleBewohner.Add(Zwingli);
            AlleBewohner.Add(Elidyr);
            AlleBewohner.Add(Iefyr);
            AlleBewohner.Add(Vulas);
            AlleBewohner.Add(Malon);
        }
        //Inventar
        static void EditInventory()
        {
            Console.WriteLine("###      5: Inventar editieren       ###");
            //Ich bin faul, kopiere also die Auswahl des Bewohners vom Bewohner editieren
            int currentBewohner = 0;

            foreach (var bewohner in AlleBewohner)
            {
                currentBewohner += 1;
                //Auflistung aller Bewohnere
                Console.Write(currentBewohner + ": " + bewohner.Name + "(" + bewohner.Machtfaktor + ")     " + bewohner.Alter + " Jahre alt          ");
                //Alle Bewohnere sind Ziele für Steuern - Inventarauswertung
                if (bewohner.Spezies.Equals("Zwerg"))
                {
                    Zwerg zwerg = (Zwerg)bewohner;
                    foreach (var item in zwerg.Inventar)
                    {
                        Console.Write("" + item.Name + "(" + item.MagieWert + "), ");
                    }
                }
                else if (bewohner.Spezies.Equals("Elb"))
                {
                    Elb elb = (Elb)bewohner;
                    Console.Write("Elben haben nur ihre Haare als Waffe. Länge: " + elb.Haarlaenge);
                }
                Console.Write("\n");
            }
            //Bewohner auswählen
            Console.WriteLine("###      Bitte Bewohner auswählen       ###");
            try
            {
                //Eingabe des Benutzers
                currentBewohner = (int.Parse(Console.ReadLine()) - 1);
            }
            //Eingabe falsch formatiert
            catch (Exception)
            {
                Console.Clear();
                Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!");
                EditInventory();
            }
            //Bewohner Veriable - das andere geht zwar auch jedesmal, ist aber mehr schreibarbeit
            if (AlleBewohner[currentBewohner].Spezies.Equals("Zwerg"))
            {
                Zwerg bewohnerToEdit = (Zwerg)AlleBewohner[currentBewohner];
                Console.Clear();
                //Alle Inventarelemente darstellen
                foreach (var item in bewohnerToEdit.Inventar)
                {
                    Console.Write("" + item.Name + "(" + item.MagieWert + "), ");
                    Console.Write("\n");
                }
                //Nutzer entscheiden lassen, ob er etwas bearbeiten möchte
                Console.WriteLine("Was möchten Sie tun?");
                Console.WriteLine("1: Gegenstand hinzufügen?");
                Console.WriteLine("2: Gegenstand entfernen?");
                Console.WriteLine("3: Nichts tun?");
                int todo = 0;
                try
                {
                    todo = (int.Parse(Console.ReadLine()) - 1);
                }
                catch (Exception)
                {
                    Console.Clear();
                    Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!");
                    EditInventory();
                }
                //Auswahl der Fälle mal per IF - nicht wie vorher immer mit switch case
                //Auswahl 1 - hinzufügen
                if (todo == 0)
                {
                    //Neuer Gegenstand wird durch Nutzer erstellt
                    Console.WriteLine("Gegenstand hizufügen:");
                    Console.WriteLine("Bitte geben Sie dem Gegenstand einen Namen");
                    string name = Console.ReadLine();
                    Console.WriteLine("Bitte geben Sie dem Gegenstand einen Machtfaktor (ganzzahl positiv)");
                    int machtfaktor = int.Parse(Console.ReadLine());
                    //Und dann dem Bewohner gegeben.
                    bewohnerToEdit.AddItem(bewohnerToEdit, new Gegenstand(name, machtfaktor));
                }
                //Auswahl 2 - entfernen
                else if (todo == 1)
                {
                    //Die Liste nochmals darstellen, um dem Nutzer die Auswahl zu erleichtern
                    int currentItem = 0;
                    foreach (var item in bewohnerToEdit.Inventar)
                    {
                        currentItem += 1;
                        Console.Write(currentItem + ": " + item.Name + "(" + item.MagieWert + "), ");
                        Console.Write("\n");
                    }
                    //Nutzer wählt den alten Ramsch zum entfernen aus
                    Console.WriteLine("Welchen Gegenstand möchten Sie entfernen?");
                    currentItem = (int.Parse(Console.ReadLine()) - 1);
                    //Ramsch wird entfernt
                    bewohnerToEdit.RemoveItem(bewohnerToEdit, bewohnerToEdit.Inventar[currentItem]);
                    Console.WriteLine("Thy dirty deed be done!");
                }
                //Auswahl 3 - nichts tun
                else if (todo == 2)
                {
                    Console.WriteLine("Nichts bearbeitet.");
                }
                else
                {
                    Console.WriteLine("Diese Option besteht nicht!");
                }
            }

            ResetProgram();
        }
        //Einen Bewohner editieren (Hinzufügen/Entfernen von Gegenstaenden) oder Bewohnere erstellen etc (falls genug Zeit bleibt)
        static void EditCitizen()
        {
            Console.WriteLine("###      4: Bewohner editieren          ###");
            int currentBewohner = 0;

            foreach (var bewohner in AlleBewohner)
            {
                currentBewohner += 1;
                //Auflistung aller Bewohnere
                Console.Write(currentBewohner + ": " + bewohner.Name + "(" + bewohner.Machtfaktor + ")     " + bewohner.Alter + " Jahre alt          ");
                //Alle Bewohnere sind Ziele für Steuern - Inventarauswertung
                if (bewohner.Spezies.Equals("Zwerg"))
                {
                    Zwerg zwerg = (Zwerg)bewohner;
                    foreach (var item in zwerg.Inventar)
                    {
                        Console.Write("" + item.Name + "(" + item.MagieWert + "), ");
                    }
                }
                else if (bewohner.Spezies.Equals("Elb"))
                {
                    Elb elb = (Elb)bewohner;
                    Console.Write("Haupthaar (" + elb.Haarlaenge + ")");
                }
                Console.Write("\n");
            }
            //Bewohner auswählen
            Console.WriteLine("###      Bitte Bewohner auswählen       ###");
            Console.WriteLine("###      'Add' für neuen Bewohner       ###");
            string    selection = "";
            Lebewesen bewohnerToEdit;

            try
            {
                selection = Console.ReadLine();
                if (!selection.Equals("Add"))
                {
                    currentBewohner = (int.Parse(selection) - 1);
                }
            }
            catch (Exception)
            {
                Console.Clear();
                Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!");
                EditCitizen();
            }
            if (selection.Equals("Add"))
            {
                Console.WriteLine("Möchten Sie einen (1)Zwerg oder einen (2)Elb hinzufügen?");
                if (Console.ReadLine().Equals("2"))
                {
                    bewohnerToEdit = new Elb("", 0, "", 0, false, 0);
                    AlleBewohner.Add(bewohnerToEdit);
                }
                else
                {
                    bewohnerToEdit = new Zwerg("", 0, "", 0);
                    AlleBewohner.Add(bewohnerToEdit);
                }
            }
            else
            {
                bewohnerToEdit = AlleBewohner[currentBewohner];
            }
            //Namensänderung des Bewohners
            Console.WriteLine("Namensänderung: " + bewohnerToEdit.Name + " - leer lassen um nicht zu verändern.");
            string newName = Console.ReadLine();

            if (newName.Length > 0)
            {
                bewohnerToEdit.Name = newName;
            }

            //Alter ändern
            Console.WriteLine("Alter: " + bewohnerToEdit.Alter + " - leer lassen um nicht zu verändern.");
            string newAge = Console.ReadLine();

            if (!string.IsNullOrEmpty(newAge))
            {
                if (int.Parse(newAge) > 0)
                {
                    bewohnerToEdit.Alter = int.Parse(newAge);
                }
            }


            //Bewohner in anderen Stamm setzen
            Console.WriteLine("Stammesänderung: " + bewohnerToEdit.Stamm + " - leer lassen um nicht zu verändern.");
            string newStamm      = Console.ReadLine();
            bool   newStammFound = false;
            bool   hadnoStamm    = true;

            if (newStamm.Length > 0)
            {
                //Suche nach altem Stamm
                foreach (var stamm in AlleClans)
                {
                    if (stamm.Name.Equals(bewohnerToEdit.Stamm))
                    {
                        hadnoStamm = false;
                        //Abfrage, ob der Bewohner Stammesoberhaupt ist
                        if (!stamm.Stammeshaupt.Equals(bewohnerToEdit.Name))
                        {
                            //Bewohner aus altem Stamm entfernen
                            stamm.RemoveBewohner(stamm, bewohnerToEdit);
                            bewohnerToEdit.Stamm = newStamm;
                            //Neuen Stamm suchen
                            foreach (var fancyStamm in AlleClans)
                            {
                                if (fancyStamm.Name.Equals(newStamm))
                                {
                                    //Bewohner eintragen
                                    newStammFound = true;
                                    stamm.AddBewohner(fancyStamm, bewohnerToEdit);
                                }
                            }
                            if (!newStammFound)
                            {
                                //Stamm nicht gefunden, Bewohner in alten Stamm zurücksetzen
                                Console.WriteLine("Stamm nicht gefunden, Bewohner verbleibt in altem Stamm!");
                                stamm.AddBewohner(stamm, bewohnerToEdit);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Bitte die Stammesführung erst ändern. Der Stammesführer kann den Stamm nicht verlassen!");
                        }
                    }
                }
                if (hadnoStamm)
                {
                    foreach (var stamm in AlleClans)
                    {
                        if (stamm.Name.Equals(newStamm))
                        {
                            stamm.AddBewohner(stamm, bewohnerToEdit);
                        }
                    }
                }
            }
            ResetProgram();
        }