public void HandleFaktischerWertAttributChanged(object sender, FaktischerWertChangedEventArgs args) { var collection = (AttributeCollection)sender; if (collection == null) { throw new ArgumentException("Der Sender ist keine AttributCollection oder null"); } if (args == null) { throw new ArgumentException("Das sendende Attribut konnte nicht erkannt werden: args == null"); } ImagoAttribut attribut = (ImagoAttribut)args.Entitaet.Identifier; if (attribut == null) { throw new ArgumentException("Das sendende Attribut konnte nicht erkannt werden: Casting-Fehler"); } #if debug Console.WriteLine("Event " + this.GetType().Name + ". Der faktische Wert von " + attribut.Name + " wurde geändert.") #endif var values = Attribute.GetFaktischeWerte(); foreach (var item in FertigkeitsKategorien) { var attributReferenzen = new List <ImagoAttribut>(item.AttributReferenzen); if (attributReferenzen.Contains(attribut)) { item.BerechneNatuerlicherWert(values); } } Initiative.BerechneNatuerlicherWert(values); SchadensMod.BerechneNatuerlicherWert(values); EgoRegeneration.BerechneNatuerlicherWert(values); Lastgrenze.BerechneNatuerlicherWert(values); if (attribut == ImagoAttribut.Konstitution) { foreach (var teil in Koerper) { teil.BerechneTrefferpunkte(values[ImagoAttribut.Konstitution]); } } }