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);
 }
示例#2
0
        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;
            }
        }
示例#3
0
 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());
     }
 }
示例#4
0
 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);
 }