private static Sinn ModifyCharakterSinnNatur(Senses chosenSinn, int modValue) { int sinnId = (int)chosenSinn + 1; Sinn charSinn = GetSinnAngeborenById <Sinn> (sinnId); charSinn.value = modValue; //Kurzsichtig return(charSinn); }
/// <summary> /// Checks the relevance fachkenntnis: Falls der Charakter einen höheren Wert besitzt, als die Restriktionen, wird true zurück gegeben /// Bemerkung: Zu prüfenden Charakterwerte können auch die Sinne sein, welche als Liste übergeben werden. Dann müssen alle Sinne des Charakters mit Restriktion geprüft werden. /// <returns><c>true</c>, if relevance fachkenntnis was checked, <c>false</c> otherwise.</returns> /// <param name="fkObject">Fk object.</param> private bool CheckRelevanceFertigkeit(List <LENEValue> restrictionEigenschaften) { //Hole Reflektionen der Charaktereigenschaften List <FieldInfo> eigenschaftenCharakterReflect = mCharacterHelper.GetCharacterFieldValues(); //Falls keine Restriktion vorliegt, ist die Eigenschaft relevant! if (restrictionEigenschaften == null || restrictionEigenschaften.Count == 0) { return(true); } foreach (var item in restrictionEigenschaften) { foreach (FieldInfo eigenschaftReflect in eigenschaftenCharakterReflect) { int?characterValue = eigenschaftReflect.GetValue(mCharacterHelper.mCharacter) as int?; if (characterValue != null) { //Fertigkeit zurückgeben LENEValue newObject = new LENEValue(); newObject.name = eigenschaftReflect.Name; newObject.val = characterValue.Value; if (ReflectValue(item, newObject) == true) { return(true); } } else //könnte liste sein { if (typeof(IList).IsAssignableFrom(eigenschaftReflect.FieldType)) { var listValues = eigenschaftReflect.GetValue(mCharacterHelper.mCharacter); // By now, we know that this is assignable from IList, so we can safely cast it. foreach (var element in listValues as IList) { Type t = element.GetType(); if (t.Equals(typeof(Sinn))) { Sinn sElement = element as Sinn; LENEValue newElement = new LENEValue(); newElement.name = sElement.name; newElement.val = sElement.value; if (ReflectValue(item, newElement) == true) { return(true); } } } } } } } //Falls nichts gefunden, Test fehlgeschlagen return(false); }
/// <summary> /// Modifies the angeborene fertigkeiten durch Würfelwurf /// </summary> /// <param name="mChar">M char.</param> //TODO Modifikation für Rassen public static void ModifyAngeboreneFertigkeiten(MidgardCharakter mChar, int w100) { List <Sinn> sinne = MidgardResourceReader.GetMidgardResource <AngeboreneFertigkeiten>(MidgardResourceReader.MidgardAngeboren).listSinne; mChar.listSinne = sinne; if (w100 <= 2) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Sehen, 4); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 2 && w100 <= 4) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Hoeren, 4); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 4 && w100 <= 6) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Riechen, 4); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 6 && w100 <= 8) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Schmecken, 4); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 8 && w100 <= 10) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Tasten, 4); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 10 && w100 <= 20) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Sehen, 10); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 20 && w100 <= 30) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Hoeren, 10); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 30 && w100 <= 40) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Riechen, 10); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 40 && w100 <= 50) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Schmecken, 10); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 50 && w100 <= 60) { Sinn sinn = ModifyCharakterSinnNatur(Senses.Tasten, 10); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 60 && w100 <= 65) { Sinn sinn = ModifyCharakterSinnNatur(Senses.SechsterSinn, 6); Sinn mSinn = ObjectXMLHelper.GetMidgardObjectById(mChar.listSinne, sinn.id); mSinn.value = sinn.value; } else if (w100 > 65 && w100 <= 70) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Berserkergang, Mathf.FloorToInt(18 - mChar.Wk / 5)); mChar.listAngeboren.Add(angFert); } else if (w100 > 70 && w100 <= 75) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.GuteReflexe, 9); mChar.listAngeboren.Add(angFert); } else if (w100 > 75 && w100 <= 80) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Nachtsicht, 8); mChar.listAngeboren.Add(angFert); } else if (w100 > 80 && w100 <= 85) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Richtungssinn, 12); mChar.listAngeboren.Add(angFert); } else if (w100 > 85 && w100 <= 90) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Robustheit, 9); mChar.listAngeboren.Add(angFert); } else if (w100 > 90 && w100 <= 95) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Wachgabe, 6); mChar.listAngeboren.Add(angFert); } else if (w100 > 95 && w100 <= 99) { AngeboreneFertigkeit angFert = ModifyCharakterSinnNatur(Natur.Einpraegen, 4); mChar.listAngeboren.Add(angFert); } }