public override void ExposeData() { base.ExposeData(); Scribe_Values.Look(ref customLabel, "customLabel"); Scribe_Deep.Look(ref coreBackCompat, "core"); Scribe_Collections.Look(ref parts, "parts", LookMode.Deep); Scribe_Values.Look(ref startedCountdown, "startedCountdown", defaultValue: false); Scribe_Values.Look(ref anyEnemiesInitially, "anyEnemiesInitially", defaultValue: false); Scribe_Values.Look(ref allEnemiesDefeatedSignalSent, "allEnemiesDefeatedSignalSent", defaultValue: false); Scribe_Values.Look(ref factionMustRemainHostile, "factionMustRemainHostile", defaultValue: false); Scribe_Values.Look(ref desiredThreatPoints, "desiredThreatPoints", 0f); if (Scribe.mode == LoadSaveMode.PostLoadInit) { if (coreBackCompat != null && coreBackCompat.def != null) { parts.Insert(0, new SitePart(this, coreBackCompat.def, coreBackCompat.parms)); coreBackCompat = null; } if (parts.RemoveAll((SitePart x) => x == null || x.def == null) != 0) { Log.Error("Some site parts were null after loading."); } for (int i = 0; i < parts.Count; i++) { parts[i].site = this; } BackCompatibility.PostExposeData(this); } }
public void ExposeData() { Scribe_Values.Look(ref showLearningHelper, "showLearningHelper", defaultValue: false); Scribe_Values.Look(ref showZones, "showZones", defaultValue: false); Scribe_Values.Look(ref showBeauty, "showBeauty", defaultValue: false); Scribe_Values.Look(ref showRoomStats, "showRoomStats", defaultValue: false); Scribe_Values.Look(ref showColonistBar, "showColonistBar", defaultValue: false); Scribe_Values.Look(ref showRoofOverlay, "showRoofOverlay", defaultValue: false); Scribe_Values.Look(ref showFertilityOverlay, "showFertilityOverlay", defaultValue: false); Scribe_Values.Look(ref showTerrainAffordanceOverlay, "showTerrainAffordanceOverlay", defaultValue: false); Scribe_Values.Look(ref autoHomeArea, "autoHomeArea", defaultValue: false); Scribe_Values.Look(ref autoRebuild, "autoRebuild", defaultValue: false); Scribe_Values.Look(ref lockNorthUp, "lockNorthUp", defaultValue: false); Scribe_Values.Look(ref usePlanetDayNightSystem, "usePlanetDayNightSystem", defaultValue: false); Scribe_Values.Look(ref showExpandingIcons, "showExpandingIcons", defaultValue: false); Scribe_Values.Look(ref showWorldFeatures, "showWorldFeatures", defaultValue: false); Scribe_Values.Look(ref useWorkPriorities, "useWorkPriorities", defaultValue: false); Scribe_Values.Look(ref defaultCareForColonyHumanlike, "defaultCareForHumanlikeColonists", MedicalCareCategory.NoCare); Scribe_Values.Look(ref defaultCareForColonyAnimal, "defaultCareForAnimalColonists", MedicalCareCategory.NoCare); Scribe_Values.Look(ref defaultCareForColonyPrisoner, "defaultCareForHumanlikeColonistPrisoners", MedicalCareCategory.NoCare); Scribe_Values.Look(ref defaultCareForNeutralFaction, "defaultCareForHumanlikeNeutrals", MedicalCareCategory.NoCare); Scribe_Values.Look(ref defaultCareForNeutralAnimal, "defaultCareForAnimalNeutrals", MedicalCareCategory.NoCare); Scribe_Values.Look(ref defaultCareForHostileFaction, "defaultCareForHumanlikeEnemies", MedicalCareCategory.NoCare); BackCompatibility.PostExposeData(this); }
public override void ExposeData() { base.ExposeData(); if (Scribe.mode == LoadSaveMode.Saving) { this.pawns.RemoveAll((Pawn x) => x.Destroyed); } Scribe_Values.Look <string>(ref this.nameInt, "name", null, false); Scribe_Deep.Look <ThingOwner <Pawn> >(ref this.pawns, "pawns", new object[] { this }); Scribe_Values.Look <bool>(ref this.autoJoinable, "autoJoinable", false, false); Scribe_Deep.Look <Caravan_PathFollower>(ref this.pather, "pather", new object[] { this }); Scribe_Deep.Look <Caravan_TraderTracker>(ref this.trader, "trader", new object[] { this }); Scribe_Deep.Look <StoryState>(ref this.storyState, "storyState", new object[] { this }); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.CaravanPostLoadInit(this); } }
public void ExposeData() { Scribe_References.Look(ref other, "other"); Scribe_Values.Look(ref goodwill, "goodwill", 0); Scribe_Values.Look(ref kind, "kind", FactionRelationKind.Neutral); BackCompatibility.PostExposeData(this); }
public override void CompExposeData() { Scribe_Values.Look(ref isPermanentInt, "isPermanent", defaultValue: false); Scribe_Values.Look(ref permanentDamageThreshold, "permanentDamageThreshold", 9999f); Scribe_Values.Look(ref painCategory, "painCategory", PainCategory.Painless); BackCompatibility.PostExposeData(this); }
public void ExposeData() { Scribe_Values.Look <bool>(ref this.showLearningHelper, "showLearningHelper", false, false); Scribe_Values.Look <bool>(ref this.showZones, "showZones", false, false); Scribe_Values.Look <bool>(ref this.showBeauty, "showBeauty", false, false); Scribe_Values.Look <bool>(ref this.showRoomStats, "showRoomStats", false, false); Scribe_Values.Look <bool>(ref this.showColonistBar, "showColonistBar", false, false); Scribe_Values.Look <bool>(ref this.showRoofOverlay, "showRoofOverlay", false, false); Scribe_Values.Look <bool>(ref this.autoHomeArea, "autoHomeArea", false, false); Scribe_Values.Look <bool>(ref this.autoRebuild, "autoRebuild", false, false); Scribe_Values.Look <bool>(ref this.lockNorthUp, "lockNorthUp", false, false); Scribe_Values.Look <bool>(ref this.usePlanetDayNightSystem, "usePlanetDayNightSystem", false, false); Scribe_Values.Look <bool>(ref this.showExpandingIcons, "showExpandingIcons", false, false); Scribe_Values.Look <bool>(ref this.showWorldFeatures, "showWorldFeatures", false, false); Scribe_Values.Look <bool>(ref this.useWorkPriorities, "useWorkPriorities", false, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForColonyHumanlike, "defaultCareForHumanlikeColonists", MedicalCareCategory.NoCare, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForColonyAnimal, "defaultCareForAnimalColonists", MedicalCareCategory.NoCare, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForColonyPrisoner, "defaultCareForHumanlikeColonistPrisoners", MedicalCareCategory.NoCare, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForNeutralFaction, "defaultCareForHumanlikeNeutrals", MedicalCareCategory.NoCare, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForNeutralAnimal, "defaultCareForAnimalNeutrals", MedicalCareCategory.NoCare, false); Scribe_Values.Look <MedicalCareCategory>(ref this.defaultCareForHostileFaction, "defaultCareForHumanlikeEnemies", MedicalCareCategory.NoCare, false); if (Scribe.mode == LoadSaveMode.LoadingVars) { BackCompatibility.PlaySettingsLoadingVars(this); } }
public override bool ActivateOn(Lord lord, TriggerSignal signal) { if (signal.type == TriggerSignalType.Tick && Find.TickManager.TicksGame % 120 == 0) { if (base.data == null || !(base.data is TriggerData_PawnCycleInd)) { BackCompatibility.TriggerDataPawnCycleIndNull(this); } if (Find.TickManager.TicksGame - lord.lastPawnHarmTick > 300) { TriggerData_PawnCycleInd data = Data; data.pawnCycleInd++; if (data.pawnCycleInd >= lord.ownedPawns.Count) { data.pawnCycleInd = 0; } if (lord.ownedPawns.Any()) { Pawn pawn = lord.ownedPawns[data.pawnCycleInd]; if (pawn.Spawned && !pawn.Downed && pawn.MentalStateDef == null && KidnapAIUtility.TryFindGoodKidnapVictim(pawn, 8f, out var _) && !GenAI.InDangerousCombat(pawn)) { return(true); } } } } return(false); }
static bool Prefix(ref Trigger_KidnapVictimPresent __instance, ref bool __result, ref Lord lord, ref TriggerSignal signal) { if (signal.type == TriggerSignalType.Tick && Find.TickManager.TicksGame % 120 < RefcellRespeedConfig.currentTimeMultiplier) { if (__instance.data == null || !(__instance.data is TriggerData_PawnCycleInd)) { BackCompatibility.TriggerDataPawnCycleIndNull(__instance); } if (Find.TickManager.TicksGame - lord.lastPawnHarmTick > 300) { TriggerData_PawnCycleInd data = __instance.Data; ++data.pawnCycleInd; if (data.pawnCycleInd >= lord.ownedPawns.Count) { data.pawnCycleInd = 0; } if (lord.ownedPawns.Any <Pawn>()) { Pawn ownedPawn = lord.ownedPawns[data.pawnCycleInd]; if (ownedPawn.Spawned && !ownedPawn.Downed && (ownedPawn.MentalStateDef == null && KidnapAIUtility.TryFindGoodKidnapVictim(ownedPawn, 8f, out Pawn _)) && !GenAI.InDangerousCombat(ownedPawn)) { __result = true; return(false); } } } } __result = false; return(false); }
public override void ExposeData() { base.ExposeData(); Scribe_BodyParts.Look(ref part, "part"); Scribe_Defs.Look(ref consumedInitialMedicineDef, "consumedInitialMedicineDef"); BackCompatibility.PostExposeData(this); }
public void SetGame() { Current.Game.currentMapIndex = this.CurrentMapIndex; Current.Game.World.info.initialMapSize = new IntVec3(MapSize, 1, MapSize); InfoField.SetValue(Current.Game, this.info); RulesField.SetValue(Current.Game, this.rules); Current.Game.Scenario = this.scenario; Current.Game.playSettings = this.playSettings; Current.Game.storyWatcher = this.storyWatcher; Current.Game.gameEnder = this.gameEnder; Current.Game.letterStack = this.letterStack; Current.Game.researchManager = this.researchManager; Current.Game.storyteller = this.storyteller; Current.Game.history = this.history; Current.Game.taleManager = this.taleManager; Current.Game.playLog = this.playLog; Current.Game.battleLog = this.battleLog; Current.Game.outfitDatabase = this.outfitDatabase; Current.Game.drugPolicyDatabase = this.drugPolicyDatabase; Current.Game.foodRestrictionDatabase = this.foodRestrictionDatabase; Current.Game.tutor = this.tutor; Current.Game.dateNotifier = this.dateNotifier; Current.Game.components = this.gameComponents; FillComponentsMethod.Invoke(Current.Game, new object[0]); BackCompatibility.PostExposeData(Current.Game); }
public void ExposeData() { Scribe_Collections.Look(ref quests, "quests", LookMode.Deep); if (Scribe.mode == LoadSaveMode.LoadingVars) { int num = quests.RemoveAll((Quest x) => x == null); if (num != 0) { Log.Error(num + " quest(s) were null after loading."); } cachedSituationalThoughtQuestParts.Clear(); questsInDisplayOrder.Clear(); for (int i = 0; i < quests.Count; i++) { AddToCache(quests[i]); } } if (Scribe.mode == LoadSaveMode.PostLoadInit) { for (int j = 0; j < quests.Count; j++) { Find.SignalManager.RegisterReceiver(quests[j]); } } BackCompatibility.PostExposeData(this); }
public void ExposeData() { Scribe_Deep.Look(ref statsRecord, "statsRecord"); Scribe_Deep.Look(ref watcherAdaptation, "watcherAdaptation"); Scribe_Deep.Look(ref watcherPopAdaptation, "watcherPopAdaptation"); BackCompatibility.PostExposeData(this); }
public override void ExposeData() { base.ExposeData(); Scribe_Values.Look(ref this.burstCooldownTicksLeft, "burstCooldownTicksLeft", 0, false); Scribe_Values.Look(ref this.burstWarmupTicksLeft, "burstWarmupTicksLeft", 0, false); Scribe_Values.Look(ref this.top.curRotationInt, "aa_turretTopRot"); Scribe_Values.Look(ref isInBurst, "aa_isInBurst"); Scribe_TargetInfo.Look(ref this.currentTargetInt, "currentTarget"); Scribe_Values.Look(ref this.holdFire, "holdFire", false, false); Scribe_Deep.Look(ref this.gun, "gun", Array.Empty <object>()); BackCompatibility.PostExposeData(this); if (Scribe.mode == LoadSaveMode.PostLoadInit) { this.UpdateGunVerbs(); } if (top != null) { top.ExposeData(); } else { Log.Error("Could not expose data for turret top: turret top is null."); } }
private void ExposeTerrainGrid(TerrainDef[] grid, string label) { Dictionary <ushort, TerrainDef> terrainDefsByShortHash = new Dictionary <ushort, TerrainDef>(); foreach (TerrainDef allDef in DefDatabase <TerrainDef> .AllDefs) { terrainDefsByShortHash.Add(allDef.shortHash, allDef); } MapExposeUtility.ExposeUshort(this.map, (Func <IntVec3, ushort>)(c => { TerrainDef terrainDef = grid[this.map.cellIndices.CellToIndex(c)]; if (terrainDef != null) { return(terrainDef.shortHash); } return(0); }), (Action <IntVec3, ushort>)((c, val) => { TerrainDef terrainDef1 = terrainDefsByShortHash.TryGetValue <ushort, TerrainDef>(val, (TerrainDef)null); if (terrainDef1 == null && val != (ushort)0) { TerrainDef terrainDef2 = BackCompatibility.BackCompatibleTerrainWithShortHash(val); if (terrainDef2 == null) { Log.Error("Did not find terrain def with short hash " + (object)val + " for cell " + (object)c + ".", false); terrainDef2 = TerrainDefOf.Soil; } terrainDef1 = terrainDef2; terrainDefsByShortHash.Add(val, terrainDef2); } grid[this.map.cellIndices.CellToIndex(c)] = terrainDef1; }), label); }
public void ExposeData() { Scribe_Deep.Look(ref verbTracker, "verbTracker", this); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.PawnNativeVerbsPostLoadInit(this); } }
public override void PostExposeData() { base.PostExposeData(); Scribe_Defs.Look(ref requestThingDef, "requestThingDef"); Scribe_Values.Look(ref requestCount, "requestCount", 0); Scribe_Values.Look(ref expiration, "expiration", 0); BackCompatibility.PostExposeData(this); }
public void ExposeData() { Scribe_Collections.Look <FoodRestriction>(ref this.foodRestrictions, "foodRestrictions", LookMode.Deep, new object[0]); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.FoodRestrictionDatabasePostLoadInit(this); } }
public void ExposeData() { Scribe_Deep.Look <Archive>(ref this.archive, "archive", new object[0]); Scribe_Collections.Look <HistoryAutoRecorderGroup>(ref this.autoRecorderGroups, "autoRecorderGroups", LookMode.Deep, new object[0]); if (Scribe.mode == LoadSaveMode.LoadingVars) { BackCompatibility.HistoryLoadingVars(this); } }
public void ExposeData() { battleActive = BattleActive; Scribe_Deep.Look(ref records, "records"); Scribe_Values.Look(ref storyRelevance, "storyRelevance", 0.0); Scribe_References.Look(ref battleActive, "battleActive"); Scribe_Values.Look(ref battleExitTick, "battleExitTick", 0); BackCompatibility.PostExposeData(this); }
public void ExposeData() { if (Scribe.mode == LoadSaveMode.Saving) { lastJobGiverKey = ((lastJobGiver == null) ? (-1) : lastJobGiver.UniqueSaveKey); } Scribe_Values.Look(ref lastJobGiverKey, "lastJobGiverKey", -1); if (Scribe.mode == LoadSaveMode.PostLoadInit && lastJobGiverKey != -1 && !lastJobGiverThinkTree.TryGetThinkNodeWithSaveKey(lastJobGiverKey, out lastJobGiver)) { Log.Warning("Could not find think node with key " + lastJobGiverKey); } Scribe_References.Look(ref meleeThreat, "meleeThreat"); Scribe_References.Look(ref enemyTarget, "enemyTarget"); Scribe_References.Look(ref knownExploder, "knownExploder"); Scribe_References.Look(ref lastMannedThing, "lastMannedThing"); Scribe_Defs.Look(ref lastJobGiverThinkTree, "lastJobGiverThinkTree"); Scribe_TargetInfo.Look(ref lastAttackedTarget, "lastAttackedTarget"); Scribe_Collections.Look(ref thinkData, "thinkData", LookMode.Value, LookMode.Value); Scribe_Values.Look(ref activeInt, "active", defaultValue: true); Scribe_Values.Look(ref lastJobTag, "lastJobTag", JobTag.Misc); Scribe_Values.Look(ref lastIngestTick, "lastIngestTick", -99999); Scribe_Values.Look(ref nextApparelOptimizeTick, "nextApparelOptimizeTick", -99999); Scribe_Values.Look(ref lastEngageTargetTick, "lastEngageTargetTick", 0); Scribe_Values.Look(ref lastAttackTargetTick, "lastAttackTargetTick", 0); Scribe_Values.Look(ref canFleeIndividual, "canFleeIndividual", defaultValue: false); Scribe_Values.Look(ref exitMapAfterTick, "exitMapAfterTick", -99999); Scribe_Values.Look(ref forcedGotoPosition, "forcedGotoPosition", IntVec3.Invalid); Scribe_Values.Look(ref lastMeleeThreatHarmTick, "lastMeleeThreatHarmTick", 0); Scribe_Values.Look(ref lastAssignedInteractTime, "lastAssignedInteractTime", -99999); Scribe_Values.Look(ref interactionsToday, "interactionsToday", 0); Scribe_Values.Look(ref lastInventoryRawFoodUseTick, "lastInventoryRawFoodUseTick", 0); Scribe_Values.Look(ref lastDisturbanceTick, "lastDisturbanceTick", -99999); Scribe_Values.Look(ref wantsToTradeWithColony, "wantsToTradeWithColony", defaultValue: false); Scribe_Values.Look(ref canLovinTick, "canLovinTick", -99999); Scribe_Values.Look(ref canSleepTick, "canSleepTick", -99999); Scribe_Values.Look(ref nextMoveOrderIsWait, "nextMoveOrderIsWait", defaultValue: true); Scribe_Values.Look(ref lastTakeCombatEnhancingDrugTick, "lastTakeCombatEnhancingDrugTick", -99999); Scribe_Values.Look(ref lastHarmTick, "lastHarmTick", -99999); Scribe_Values.Look(ref anyCloseHostilesRecently, "anyCloseHostilesRecently", defaultValue: false); Scribe_Deep.Look(ref duty, "duty"); Scribe_Deep.Look(ref mentalStateHandler, "mentalStateHandler", pawn); Scribe_Deep.Look(ref mentalBreaker, "mentalBreaker", pawn); Scribe_Deep.Look(ref inspirationHandler, "inspirationHandler", pawn); Scribe_Deep.Look(ref priorityWork, "priorityWork", pawn); Scribe_Values.Look(ref applyBedThoughtsTick, "applyBedThoughtsTick", 0); Scribe_Values.Look(ref applyBedThoughtsOnLeave, "applyBedThoughtsOnLeave", defaultValue: false); Scribe_Values.Look(ref willJoinColonyIfRescuedInt, "willJoinColonyIfRescued", defaultValue: false); Scribe_Values.Look(ref wildManEverReachedOutsideInt, "wildManEverReachedOutside", defaultValue: false); Scribe_Values.Look(ref timesGuestTendedToByPlayer, "timesGuestTendedToByPlayer", 0); Scribe_Values.Look(ref lastSelfTendTick, "lastSelfTendTick", 0); Scribe_Values.Look(ref spawnedByInfestationThingComp, "spawnedByInfestationThingComp", defaultValue: false); Scribe_Values.Look(ref lastPredatorHuntingPlayerNotificationTick, "lastPredatorHuntingPlayerNotificationTick", -99999); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.MindStatePostLoadInit(this); } }
public override void PostExposeData() { base.PostExposeData(); Scribe_Deep.Look(ref pawn, PawnSaveKey, this); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.ImportantPawnCompPostLoadInit(this); } }
public override void ExposeData() { base.ExposeData(); Scribe_Values.Look <string>(ref this.nameInt, "nameInt", (string)null, false); Scribe_Values.Look <bool>(ref this.namedByPlayer, "namedByPlayer", false, false); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.FactionBasePostLoadInit(this); } }
public void ExposeData() { Scribe_References.Look(ref other, "other"); Scribe_Values.Look(ref goodwill, "goodwill", 0); Scribe_Values.Look(ref kind, "kind", FactionRelationKind.Neutral); if (Scribe.mode == LoadSaveMode.LoadingVars) { BackCompatibility.FactionRelationLoadingVars(this); } }
public void ExposeData() { Scribe_Deep.Look <StatsRecord>(ref this.statsRecord, "statsRecord", new object[0]); Scribe_Deep.Look <StoryWatcher_Adaptation>(ref this.watcherAdaptation, "watcherAdaptation", new object[0]); Scribe_Deep.Look <StoryWatcher_PopAdaptation>(ref this.watcherPopAdaptation, "watcherPopAdaptation", new object[0]); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.StoryWatcherPostLoadInit(this); } }
public void ExposeData() { Scribe_Values.Look(ref uniqueID, "uniqueID", 0); Scribe_Defs.Look(ref def, "def"); Scribe_Values.Look(ref name, "name"); Scribe_Values.Look(ref drawCenter, "drawCenter"); Scribe_Values.Look(ref drawAngle, "drawAngle", 0f); Scribe_Values.Look(ref maxDrawSizeInTiles, "maxDrawSizeInTiles", 0f); BackCompatibility.PostExposeData(this); }
public void ExposeData() { Scribe_References.Look <Faction>(ref this.other, "other", false); Scribe_Values.Look <int>(ref this.goodwill, "goodwill", 0, false); Scribe_Values.Look <FactionRelationKind>(ref this.kind, "kind", FactionRelationKind.Neutral, false); if (Scribe.mode == LoadSaveMode.LoadingVars) { BackCompatibility.FactionRelationLoadingVars(this); } }
public void ExposeData() { Scribe_Deep.Look(ref statsRecord, "statsRecord"); Scribe_Deep.Look(ref watcherAdaptation, "watcherAdaptation"); Scribe_Deep.Look(ref watcherPopAdaptation, "watcherPopAdaptation"); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.StoryWatcherPostLoadInit(this); } }
public virtual void ExposeData() { Scribe_Defs.Look <GameConditionDef>(ref this.def, "def"); Scribe_Values.Look <int>(ref this.startTick, "startTick", 0, false); Scribe_Values.Look <int>(ref this.duration, "duration", 0, false); Scribe_Values.Look <bool>(ref this.permanent, "permanent", false, false); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.GameConditionPostLoadInit(this); } }
public virtual void ExposeData() { Scribe_Defs.Look(ref def, "def"); Scribe_Values.Look(ref startTick, "startTick", 0); Scribe_Values.Look(ref duration, "duration", 0); Scribe_Values.Look(ref permanent, "permanent", defaultValue: false); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.GameConditionPostLoadInit(this); } }
public void ExposeData() { Scribe_Deep.Look <DefMap <TrainableDef, bool> >(ref this.wantedTrainables, "wantedTrainables", new object[0]); Scribe_Deep.Look <DefMap <TrainableDef, int> >(ref this.steps, "steps", new object[0]); Scribe_Deep.Look <DefMap <TrainableDef, bool> >(ref this.learned, "learned", new object[0]); Scribe_Values.Look <int>(ref this.countDecayFrom, "countDecayFrom", 0, false); if (Scribe.mode == LoadSaveMode.PostLoadInit) { BackCompatibility.PawnTrainingTrackerPostLoadInit(this, ref this.wantedTrainables, ref this.steps, ref this.learned); } }