public override bool IsPossible() { worker = new IncidentWorker_WildManWandersIn(); worker.def = IncidentDef.Named("WildManWandersIn"); parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.Misc, target); return(worker.CanFireNow(parms)); }
public static bool TryExecuteWorkerPrefix(IncidentWorker_WildManWandersIn __instance, IncidentParms parms, ref bool __result) { Map map = (Map)parms.target; IntVec3 loc; if (!(CellFinder.TryFindRandomEdgeCellWith((IntVec3 c) => map.reachability.CanReachColony(c), map, CellFinder.EdgeRoadChance_Ignore, out loc))) { __result = false; return(false); } Faction faction; if (!(Find.FactionManager.TryGetRandomNonColonyHumanlikeFaction(out faction, false, true, TechLevel.Undefined))) { __result = false; return(false); } PawnKindDef kindDef; if (Rand.Value > 0.5) { kindDef = DragonianPawnKindDefOf.Dragonian_Male; } else { kindDef = DragonianPawnKindDefOf.Dragonian_Female; } Faction factionDragonian = Find.FactionManager.AllFactionsListForReading.FirstOrDefault(x => x.def.defName == "Dragonians_Hidden"); Pawn pawn = PawnGenerator.GeneratePawn(kindDef, factionDragonian != null ? factionDragonian : faction); pawn.SetFaction(null, null); GenSpawn.Spawn(pawn, loc, map, WipeMode.Vanish); pawn.kindDef = PawnKindDefOf.WildMan; TaggedString label = __instance.def.letterLabel.Formatted(pawn.LabelShort, pawn.Named("PAWN")); TaggedString text = __instance.def.letterText.Formatted(pawn.LabelShort, pawn.Named("PAWN")).AdjustedFor(pawn, "PAWN").CapitalizeFirst(); PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, ref label, pawn); Find.LetterStack.ReceiveLetter(label, text, __instance.def.letterDef, pawn, null, null); __result = true; return(false); }