Exemplo n.º 1
0
 static void Postfix(Pawn_AbilityTracker __instance, ref List <Ability> __result)
 {
     // The result can be null only if the method gets cancelled by the prefix
     if (__result == null)
     {
         __result = __instance.allAbilitiesCached;
     }
 }
Exemplo n.º 2
0
 static void Postfix(Pawn_AbilityTracker __instance, Pawn ___pawn)
 {
     if (Scribe.mode == LoadSaveMode.ResolvingCrossRefs)
     {
         if (___pawn?.story?.adulthood == BackstoryCache.Ratkin_Sister && !__instance.abilities.Any(x => x.def == RatkinAbilityDefOf.RK_PrayerService))
         {
             __instance.GainAbility(RatkinAbilityDefOf.RK_PrayerService);
         }
     }
 }
 public static void GainAbility(this Pawn_AbilityTracker tracker, AbilityDef def, Thing source)
 {
     if (!tracker.abilities.Any((Ability a) => a.def == def))
     {
         tracker.abilities.Add(Activator.CreateInstance(def.abilityClass, new object[]
         {
             tracker.pawn,
             def,
             source
         }) as Ability);
     }
 }
Exemplo n.º 4
0
 public static void GainEquipmentAbility(this Pawn_AbilityTracker tracker, EquipmentAbilityDef def, ThingWithComps thing)
 {
     if (!tracker.abilities.Any((Ability a) => a.def == def))
     {
         EquipmentAbility ab = Activator.CreateInstance(def.abilityClass, new object[]
         {
             tracker.pawn,
             def
         }) as EquipmentAbility;
         ab.sourceEquipment = thing;
         tracker.abilities.Add(ab);
     }
 }