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; }
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); }
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); }
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); }
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()); }
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); }
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); }
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(); } } } }
public static IEnumerable <Pawn> PawnsOfRaceInFaction(ThingDef race, Faction faction) => PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction).Where(x => IsOfRace(x, race));
public static IEnumerable <Pawn> CheckAllPawnsInMapAndFaction(Map map, Faction faction) => PawnsFinder.AllMaps_SpawnedPawnsInFaction(faction).Where(x => x.Map == map);