예제 #1
0
        public override bool IsPossible()
        {
            worker     = new IncidentWorker_WildManWandersIn();
            worker.def = IncidentDef.Named("WildManWandersIn");

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

            return(worker.CanFireNow(parms));
        }
예제 #2
0
        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);
        }