Example #1
0
        static void LogSapienceInfo()
        {
            StringBuilder builder = new StringBuilder();

            foreach (Pawn pawn in PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer))
            {
                var          sapienceTracker = pawn.GetSapienceTracker();
                Need_Control need            = sapienceTracker?.SapienceNeed;
                if (need == null || sapienceTracker.CurrentState == null)
                {
                    continue;
                }

                builder.AppendLine($"{pawn.Name}[{pawn.ThingID}]: in state {sapienceTracker.CurrentState.StateDef.defName}");

                float curLevel        = need.CurLevel;
                float curLevelPercent = need.CurLevelPercentage;
                float limit           = need.Limit;
                var   limitStat       = pawn.GetStatValue(PMStatDefOf.SapienceLimit);
                float limitPercent    = need.Limit / need.MaxLevel;

                builder.AppendLine($"|\t{nameof(curLevel)}:{curLevel}={sapienceTracker.SapienceLevel}");
                builder.AppendLine($"|\t{nameof(curLevelPercent)}:{curLevelPercent}");
                builder.AppendLine($"|\t{nameof(limitStat)}:{limitStat}");
                builder.AppendLine($"|\t{nameof(limit)}:{limit}");
                builder.AppendLine($"|\t{nameof(limitPercent)}:{limitPercent}");
            }

            Log.Message(builder.ToString());
        }
        public StorageGroupUI(StoredApparelSet set, ApparelFromEnum apparelFrom, Building_Dresser dresser, Pawn pawn, bool isNew, bool fromGizmo = false)
        {
            this.set         = set;
            this.ApparelFrom = apparelFrom;
            this.Dresser     = dresser;
            this.Pawn        = pawn;
            this.IsNew       = isNew;
            this.FromGizmo   = fromGizmo;
            if (this.FromGizmo)
            {
                if (this.set.HasOwner)
                {
                    this.isRestricted = true;
                }

                this.PlayerPawns = new List <Pawn>();
                foreach (Pawn p in PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer))
                {
                    if (p.def.defName.Equals("Human"))
                    {
                        this.PlayerPawns.Add(p);
                    }
                }
            }

            this.closeOnEscapeKey        = false;
            this.doCloseButton           = false;
            this.doCloseX                = false;
            this.absorbInputAroundWindow = true;
            this.forcePause              = true;
        }
Example #3
0
        public static void KeoBuildMakeBasePack(Pawn pawn, PawnRelationDef relationDef, IEnumerable <ThingDef> racesInPacks, int packLimit)
        {
            //Get all pawns in the allowed list.
            IEnumerable <Pawn> packMates = PawnsFinder.AllMaps_SpawnedPawnsInFaction(pawn.Faction).Where <Pawn>(x => racesInPacks.Contains(x.def));

            foreach (Pawn packmate in packMates)
            {
                //check that neither's pack size is too big, and that they aren't the same
                if (GetPackSize(packmate, relationDef) == 1 && GetPackSize(pawn, relationDef) == 1 && !(pawn == packmate))
                {
                    // adds the relation and evens out the pack.
                    pawn.relations.AddDirectRelation(relationDef, packmate);
                    CollectPackmates(packmate, pawn, relationDef);
                    TrimPack(pawn, packmate, relationDef, packmate.Faction, packLimit);
                }
                else
                {
                    //break if the pawn has reached the max pack limit.
                    if (GetPackSize(pawn, relationDef) == packLimit)
                    {
                        break;
                    }
                }
            }
        }
        static List <Func <List <Pawn> > > Potentials()
        {
            List <Func <List <Pawn> > > pots = new List <Func <List <Pawn> > >();

            pots.Add(delegate { return(PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer)); });
            pots.Add(delegate { return(PawnsFinder.AllMaps_PrisonersOfColonySpawned); });
            return(pots);
        }
        public override void FinalizeInit()
        {
            base.FinalizeInit();
            Dictionary <string, Pawn> pawnIdToPawn = new Dictionary <string, Pawn>();

            foreach (Pawn p in PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer))
            {
                pawnIdToPawn.Add(p.ThingID, p);
            }
            StoredApparelContainer.Initialize(pawnIdToPawn);
        }
Example #6
0
        public static IEnumerable <Pawn> PawnsOfRaceInFaction(ThingDef race, Faction faction)
        {
            IEnumerable <Pawn> pawns         = PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction);
            List <Pawn>        pawnsToReturn = null;

            foreach (Pawn pawn in pawns)
            {
                if (IsOfRace(pawn, race))
                {
                    pawnsToReturn.Add(pawn);
                }
            }
            return(pawnsToReturn);
        }
Example #7
0
        public static int PawnOfRaceCount(Faction faction, ThingDef race)
        {
            IEnumerable <Pawn> pawns = PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction);
            int foundMatches         = 0;

            foreach (Pawn pawn in pawns)
            {
                if (IsOfRace(pawn, race))
                {
                    foundMatches += 1;
                }
            }
            return(foundMatches);
        }
Example #8
0
        public static IEnumerable <Pawn> CheckAllPawnsInMapAndFaction(Map map, Faction faction)
        {
            IEnumerable <Pawn> pawns      = PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction);
            List <Pawn>        pawnsInMap = new List <Pawn>();

            foreach (Pawn pawn in pawns)
            {
                if (pawn.Map == map)
                {
                    pawnsInMap.Add(pawn);
                }
            }
            IEnumerable <Pawn> pawnsFound = pawnsInMap;

            return(pawnsFound);
        }
        static void GiveBuildupToAllPawns()
        {
            var           map     = Find.CurrentMap;
            StringBuilder builder = new StringBuilder();

            foreach (Pawn pawn in PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer).MakeSafe())
            {
                if (pawn == null)
                {
                    continue;
                }
                builder.AppendLine(TryGiveMutagenBuildupToPawn(pawn));
            }

            Log.Message(builder.ToString());
        }
Example #10
0
 public virtual AlertReport GetReport()
 {
     using (IEnumerator<Pawn> enumerator = PawnsFinder.get_AllMaps_FreeColonistsSpawned().GetEnumerator())
     {
         while (((IEnumerator)enumerator).MoveNext())
         {
             Pawn current = enumerator.Current;
             if (((Pawn_EquipmentTracker)current.equipment).get_Primary() != null && ((ThingDef)((Thing)((Pawn_EquipmentTracker)current.equipment).get_Primary()).def).get_IsRangedWeapon())
             {
                 List<Apparel> wornApparel = ((Pawn_ApparelTracker)current.apparel).get_WornApparel();
                 for (int index = 0; index < wornApparel.Count; ++index)
                 {
                     if (wornApparel[index] is ShieldBelt && !(wornApparel[index] is ShieldMkII))
                         return AlertReport.op_Implicit((Thing)current);
                 }
             }
         }
     }
     return AlertReport.op_Implicit(false);
 }
Example #11
0
            public static bool Prefix(IncidentParms parms)
            {
                if (Find.StoryWatcher.statsRecord.numRaidsEnemy != 1)
                {
                    return(true);
                }

                var map = (Map)parms.target;

                if (!RCellFinder.TryFindRandomPawnEntryCell(out var result, map, CellFinder.EdgeRoadChance_Animal))
                {
                    return(true);
                }

                foreach (var p in PawnsFinder.AllMaps_SpawnedPawnsInFaction(Faction.OfPlayer))
                {
                    if (p.kindDef == DefDatabase <PawnKindDef> .GetNamed("HenThirteen"))
                    {
                        return(true);
                    }
                }

                var loc  = CellFinder.RandomClosewalkCellNear(result, map, 12);
                var kind = DefDatabase <PawnKindDef> .GetNamed("HenThirteen");

                var pawn = PawnGenerator.GeneratePawn(kind);

                GenSpawn.Spawn(pawn, loc, map, Rot4.Random);
                //PawnBioAndNameGenerator.GeneratePawnName(pawn, NameStyle.Full, "Hen 13");
                pawn.Name = new NameTriple("Hen", "Hero Chicken", "13");
                pawn.SetFaction(Faction.OfPlayer);
                Find.LetterStack.ReceiveLetter("Hen 13 Joins",
                                               "A mythical hero of wide renown has sensed your danger and has decided to join your cause.  Hen Thirteen is on the scene",
                                               LetterDefOf.PositiveEvent, new TargetInfo(result, map));

                return(false);
            }
Example #12
0
        public static void ClearAllMapsAndWorld()
        {
            if (Current.Game != null && Current.Game.Maps != null)
            {
                List <Map>  maps   = Find.Maps;
                FieldInfo[] fields = typeof(Map).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                for (int i = 0; i < fields.Length; i++)
                {
                    if (fields[i].FieldType.IsClass)
                    {
                        for (int j = 0; j < maps.Count; j++)
                        {
                            fields[i].SetValue(maps[j], null);
                        }
                    }
                }
                maps.Clear();
                Current.Game.currentMapIndex = -1;
            }
            if (Find.World != null)
            {
                World       world   = Find.World;
                FieldInfo[] fields2 = typeof(World).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                for (int k = 0; k < fields2.Length; k++)
                {
                    if (fields2[k].FieldType.IsClass)
                    {
                        fields2[k].SetValue(world, null);
                    }
                }
            }
            BillUtility.Clipboard = null;
            RegionTraverser.RecreateWorkers();
            SelectionDrawer.Clear();
            WorldSelectionDrawer.Clear();
            BreakRiskAlertUtility.Clear();
            Region.ClearStaticData();
            PawnsFinder.Clear();
            List <MainButtonDef> allDefsListForReading = DefDatabase <MainButtonDef> .AllDefsListForReading;

            for (int l = 0; l < allDefsListForReading.Count; l++)
            {
                allDefsListForReading[l].Notify_ClearingAllMapsMemory();
            }
            List <ThingDef> allDefsListForReading2 = DefDatabase <ThingDef> .AllDefsListForReading;

            for (int m = 0; m < allDefsListForReading2.Count; m++)
            {
                if (allDefsListForReading2[m].inspectorTabsResolved != null)
                {
                    for (int n = 0; n < allDefsListForReading2[m].inspectorTabsResolved.Count; n++)
                    {
                        allDefsListForReading2[m].inspectorTabsResolved[n].Notify_ClearingAllMapsMemory();
                    }
                }
            }
            List <WorldObjectDef> allDefsListForReading3 = DefDatabase <WorldObjectDef> .AllDefsListForReading;

            for (int num = 0; num < allDefsListForReading3.Count; num++)
            {
                if (allDefsListForReading3[num].inspectorTabsResolved != null)
                {
                    for (int num2 = 0; num2 < allDefsListForReading3[num].inspectorTabsResolved.Count; num2++)
                    {
                        allDefsListForReading3[num].inspectorTabsResolved[num2].Notify_ClearingAllMapsMemory();
                    }
                }
            }
        }
Example #13
0
 public static IEnumerable <Pawn> PawnsOfRaceInFaction(ThingDef race, Faction faction) => PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction).Where(x => IsOfRace(x, race));
Example #14
0
 public static IEnumerable <Pawn> CheckAllPawnsInMapAndFaction(Map map, Faction faction) => PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction).Where(x => x.Map == map);