public static bool Patch_CheckCreateVerbProperties(ref Pawn_NativeVerbs __instance)
        {
            bool flag = HarmonyPatches._cachedVerbProperties.GetValue(__instance) != null;
            bool result;

            if (flag)
            {
                result = true;
            }
            else
            {
                bool flag2 = XenomorphUtil.IsXenomorph(HarmonyPatches.pawnPawnNativeVerbs(__instance));
                if (flag2)
                {
                    HarmonyPatches._cachedVerbProperties.SetValue(__instance, new List <VerbProperties>());
                    HarmonyPatches.cachedVerbProperties(__instance).Add(NativeVerbPropertiesDatabase.VerbWithCategory((VerbCategory)1));
                    result = false;
                }
                else
                {
                    result = true;
                }
            }
            return(result);
        }
 private static bool Prefix(ref Pawn_NativeVerbs __instance)
 {
     if (__instance.cachedVerbProperties == null)
     {
         if (__instance.pawn.isSnotling())
         {
             __instance.cachedVerbProperties = new List <VerbProperties>();
             __instance.cachedVerbProperties.Add(NativeVerbPropertiesDatabase.VerbWithCategory(VerbCategory.BeatFire));
             return(false);
         }
     }
     return(true);
 }
Пример #3
0
 public static bool Patch_CheckCreateVerbProperties(ref Pawn_NativeVerbs __instance)
 {
     if (_cachedVerbProperties.GetValue(__instance) != null)
     {
         return(true);
     }
     if (pawnPawnNativeVerbs(__instance).def.thingClass == typeof(Insect) || pawnPawnNativeVerbs(__instance).def.thingClass == typeof(Queen))
     {
         _cachedVerbProperties.SetValue(__instance, new List <VerbProperties>());
         cachedVerbProperties(__instance).Add(NativeVerbPropertiesDatabase.VerbWithCategory(VerbCategory.BeatFire));
         return(false);
     }
     return(true);
 }
            static void Postfix([NotNull] ref List <VerbProperties> ___cachedVerbProperties, [NotNull] Pawn ___pawn)
            {
                if (___pawn.IsSapientOrFeralFormerHuman())

                {
                    ___cachedVerbProperties = ___cachedVerbProperties ?? new List <VerbProperties>();

                    if (!___cachedVerbProperties.Any(v => v?.category == VerbCategory.BeatFire))
                    {
                        ___cachedVerbProperties.Add(NativeVerbPropertiesDatabase.VerbWithCategory(VerbCategory.BeatFire));
                    }
                    if (!___cachedVerbProperties.Any(v => v?.category == VerbCategory.Ignite))
                    {
                        ___cachedVerbProperties.Add(NativeVerbPropertiesDatabase.VerbWithCategory(VerbCategory.Ignite));
                    }
                }
            }
        private static bool Prefix(ref Pawn_NativeVerbs __instance)
        {
            bool flag = Pawn_NativeVerbs_CheckCreateVerbProperties_Patch.cachedVerbProperties(__instance) == null;

            if (flag)
            {
                bool flag2 = Pawn_NativeVerbs_CheckCreateVerbProperties_Patch.pawn(__instance).isSnotling();
                if (flag2)
                {
                    Pawn_NativeVerbs_CheckCreateVerbProperties_Patch.FI_cachedVerbProperties.SetValue(__instance, new List <VerbProperties>());
                    Pawn_NativeVerbs_CheckCreateVerbProperties_Patch.cachedVerbProperties(__instance).Add(NativeVerbPropertiesDatabase.VerbWithCategory(VerbCategory.BeatFire));
                    return(false);
                }
            }
            return(true);
        }