static FoodRestriction Postfix(FoodRestriction __result, Pawn_FoodRestrictionTracker __instance, Pawn getter) { if (__result == null && __instance.pawn.IsPrisonerOfColony && !__instance.pawn.InMentalState) { Need_Motivation motivation = __instance.pawn.needs.TryGetNeed <Need_Motivation>(); if (motivation != null && (motivation.CurLevel > 0.7 || __instance.pawn.IsWatched())) { return(__instance.CurrentFoodRestriction); } } return(__result); }
static void Postfix(Pawn_FoodRestrictionTracker __instance, ref FoodRestriction __result, Pawn getter) { if (__result == null || __instance.pawn == getter) { return; } if (__instance.pawn.RaceProps.Animal && getter != null && getter.Faction == Faction.OfPlayer) { var comp = Current.Game.GetComponent <AnimalControlsRestrictions>(); if (comp.HandlerRestriction == null) { return; } __result = comp.HandlerRestriction; } }
static FoodRestriction getDefaultFoodRestriction(FoodRestrictionDatabase database, Pawn_FoodRestrictionTracker tracker) { if (tracker.pawn.RaceProps.Animal) { var comp = Current.Game.GetComponent <AnimalControlsRestrictions>(); if (comp.DefaultRestriction == null) { return(database.DefaultFoodRestriction()); } return(comp.DefaultRestriction); } else { return(database.DefaultFoodRestriction()); } }
static bool Prefix(ref Pawn_FoodRestrictionTracker __instance, ref bool __result) { __result = (!__instance.pawn.Destroyed && (__instance.pawn.Faction == Faction.OfPlayer || __instance.pawn.HostFaction == Faction.OfPlayer)); return(false); }