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); }
public override bool IsPossible() { worker = new IncidentWorker_FarmAnimalsWanderIn(); worker.def = IncidentDef.Named("FarmAnimalsWanderIn"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }
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!"); }
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); }
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); }