コード例 #1
0
        static bool Prefix(ref bool __result, IncidentWorker_FarmAnimalsWanderIn __instance, IncidentParms parms)
        {
            Map map = (Map)parms.target;

            object[] parameters = new object[] { map, null };
            bool     flag       = (bool)TryFindRandomPawnKindInfo.Invoke(__instance, parameters);

            if (!flag)
            {
                return(false);
            }
            PawnKindDef kind = (PawnKindDef)parameters[1];

            // Check this AFTER getting a pawn kind
            if (!RCellFinderExtended.TryFindRandomPawnEntryCell(out IntVec3 result, map, kind, CellFinder.EdgeRoadChance_Animal))
            {
                return(false);
            }
            int num = Mathf.Clamp(GenMath.RoundRandom(2.5f / kind.RaceProps.baseBodySize), 2, 10);

            for (int i = 0; i < num; i++)
            {
                IntVec3 loc  = CellFinderExtended.RandomClosewalkCellNear(result, map, kind, 12);
                Pawn    pawn = PawnGenerator.GeneratePawn(kind);
                GenSpawn.Spawn(pawn, loc, map, Rot4.Random);
                pawn.SetFaction(Faction.OfPlayer);
            }
            SendStandardLetterInfo.Invoke(__instance, new object[] { "LetterLabelFarmAnimalsWanderIn".Translate(kind.GetLabelPlural()).CapitalizeFirst(), "LetterFarmAnimalsWanderIn".Translate(kind.GetLabelPlural()), LetterDefOf.PositiveEvent, parms, new LookTargets(result, map), new NamedArgument[0] {
                                                                     } });
            return(false);
        }
コード例 #2
0
        public override bool IsPossible()
        {
            worker     = new IncidentWorker_FarmAnimalsWanderIn();
            worker.def = IncidentDef.Named("FarmAnimalsWanderIn");

            parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target);

            return(worker.CanFireNow(parms));
        }
コード例 #3
0
        public override void Execute(int amount, string boughtBy)
        {
            var currentMap = Find.CurrentMap;

            var parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, currentMap);

            parms.forced = true;
            var animalWorker = new IncidentWorker_FarmAnimalsWanderIn();

            animalWorker.def = IncidentDef.Named("FarmAnimalsWanderIn");
            animalWorker.TryExecute(parms);

            AlertManager.NormalEventNotification("Your viewers have sent some Farm Animals!");
        }
コード例 #4
0
 static bool Prefix(IncidentWorker_FarmAnimalsWanderIn __instance, ref bool __result, IncidentParms parms)
 {
     if (IncidentInterceptorUtility.isIntercepting_FarmAnimalsWanderIn == WorkerPatchType.ExecuteOrigin)
     {
         return(true);
     }
     if (IncidentInterceptorUtility.isIntercepting_FarmAnimalsWanderIn == WorkerPatchType.Forestall)
     {
         IncidentInterceptorUtility.CreateIncidentCaravan_Animal <InterceptedIncident_AnimalHerd_FarmAnimalsWanderIn>(parms);
         __result = true;
     }
     else
     {
         __result = IncidentInterceptorUtility.tmpIncident.SubstituionWorkerExecution();
     }
     return(false);
 }
コード例 #5
0
        static bool Prefix(ref bool __result, IncidentWorker_FarmAnimalsWanderIn __instance, IncidentParms parms)
        {
            if (!(bool)BaseCanFireNowSubInfo.Invoke(null, new object[] { __instance, parms }))
            {
                __result = false;
            }
            else
            {
                Map      map        = (Map)parms.target;
                object[] parameters = new object[] { map, null };
                // Check for kind first, because we need it for the new TryFindRandomPawnEntryCell
                bool        flag = (bool)TryFindRandomPawnKindInfo.Invoke(__instance, parameters);
                PawnKindDef kind = (PawnKindDef)parameters[1];
                __result = flag && RCellFinderExtended.TryFindRandomPawnEntryCell(out IntVec3 _, map, kind, CellFinder.EdgeRoadChance_Animal);
            }

            return(false);
        }
        static bool Prefix(IncidentWorker_FarmAnimalsWanderIn __instance, ref bool __result, IncidentParms parms)
        {
            if (PES_Settings.DebugModeOn)
            {
                Log.Message("-=PS=- Patch_IncidentWorker_FarmAnimalsWanderIn_TryExecuteWorker Prefix", false);
                IncidentInterceptorUtility.DebugParms(parms, __instance.ToString());
            }

            if (IncidentInterceptorUtility.isIntercepting_FarmAnimalsWanderIn == WorkerPatchType.ExecuteOrigin)
            {
                return(true);
            }
            if (IncidentInterceptorUtility.isIntercepting_FarmAnimalsWanderIn == WorkerPatchType.Forestall)
            {
                IncidentInterceptorUtility.CreateIncidentCaravan_Animal <InterceptedIncident_AnimalHerd_FarmAnimalsWanderIn>(__instance.def, parms);
                __result = true;
            }
            else
            {
                __result = IncidentInterceptorUtility.tmpIncident.SubstituionWorkerExecution();
            }
            return(false);
        }