public static void LoseTrait(this TraitSet traitSet, Trait trait) { Pawn pawn = (Pawn)typeof(TraitSet).GetField("pawn", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(traitSet); if (!traitSet.HasTrait(trait.def)) { Log.Warning(pawn + " does not have trait " + trait.def); return; } traitSet.allTraits.Remove(trait); traitSet.ForceUpdate(); }
public static void SetDegreeOfTrait(this TraitSet traitSet, Trait trait, int degree) { typeof(Trait).GetField("degree", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(trait, degree); traitSet.ForceUpdate(); }