private bool TryGetCeremonyTarget(Slate slate, out Pawn pawn, out Faction bestowingFaction) { slate.TryGet <Faction>("bestowingFaction", out bestowingFaction); if (slate.TryGet <Pawn>("titleHolder", out pawn) && pawn.Faction != null && pawn.Faction.IsPlayer) { if (bestowingFaction != null) { return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(pawn, bestowingFaction)); } return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(pawn, out bestowingFaction)); } pawn = null; foreach (Map map in Find.Maps) { if (!map.IsPlayerHome) { continue; } foreach (Pawn allPawn in map.mapPawns.AllPawns) { if (allPawn.Faction != null && allPawn.Faction.IsPlayer) { if (bestowingFaction != null) { return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(allPawn, bestowingFaction)); } return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(allPawn, out bestowingFaction)); } } } bestowingFaction = null; return(false); }
private static int GetRoyalExpectations(Building_GuestBed bed, Pawn guest, Room room, out RoyalTitle title) { var royalExpectations = 0; title = guest.royalty?.HighestTitleWithBedroomRequirements(); if (title != null) { if (room == null) { royalExpectations -= 75; } else { foreach (Building_Bed roomBeds in room.ContainedBeds) { if (roomBeds != bed && BedClaimedByStranger(roomBeds, guest)) { royalExpectations -= 100; } } } if (RoyalTitleUtility.BedroomSatisfiesRequirements(room, title)) { royalExpectations += 100; } } return(royalExpectations); }
public override void PostExposeData(object obj) { if (Scribe.mode == LoadSaveMode.PostLoadInit) { int num = VersionControl.BuildFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion); Pawn_RoyaltyTracker pawn_RoyaltyTracker; if ((pawn_RoyaltyTracker = (obj as Pawn_RoyaltyTracker)) != null && num <= 2575) { foreach (RoyalTitle item in pawn_RoyaltyTracker.AllTitlesForReading) { item.conceited = RoyalTitleUtility.ShouldBecomeConceitedOnNewTitle(pawn_RoyaltyTracker.pawn); } } Pawn_NeedsTracker pawn_NeedsTracker; if ((pawn_NeedsTracker = (obj as Pawn_NeedsTracker)) != null) { pawn_NeedsTracker.AllNeeds.RemoveAll((Need n) => n.def.defName == "Authority"); } } Pawn pawn; if ((pawn = (obj as Pawn)) == null) { return; } if (pawn.abilities == null) { pawn.abilities = new Pawn_AbilityTracker(pawn); } if (pawn.health != null) { if (pawn.health.hediffSet.hediffs.RemoveAll((Hediff x) => x == null) != 0) { Log.Error(pawn.ToStringSafe() + " had some null hediffs."); } Hediff hediff = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDefOf.PsychicHangover); if (hediff != null) { pawn.health.hediffSet.hediffs.Remove(hediff); } Hediff firstHediffOfDef = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.WakeUpTolerance); if (firstHediffOfDef != null) { pawn.health.hediffSet.hediffs.Remove(firstHediffOfDef); } Hediff firstHediffOfDef2 = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.GoJuiceTolerance); if (firstHediffOfDef2 != null) { pawn.health.hediffSet.hediffs.Remove(firstHediffOfDef2); } } }
private static string GetTitleTipString(Pawn pawn, Faction faction, RoyalTitle title, int favor) { RoyalTitleDef def = title.def; TaggedString t = "RoyalTitleTooltipHasTitle".Translate(pawn.Named("PAWN"), faction.Named("FACTION"), def.GetLabelCapFor(pawn).Named("TITLE")); t += "\n\n" + faction.def.royalFavorLabel.CapitalizeFirst() + ": " + favor; RoyalTitleDef nextTitle = def.GetNextTitle(faction); if (nextTitle != null) { t += "\n" + "RoyalTitleTooltipNextTitle".Translate() + ": " + nextTitle.GetLabelCapFor(pawn) + " (" + "RoyalTitleTooltipNextTitleFavorCost".Translate(nextTitle.favorCost.ToString(), faction.Named("FACTION")) + ")"; } else { t += "\n" + "RoyalTitleTooltipFinalTitle".Translate(); } if (title.def.canBeInherited) { Pawn heir = pawn.royalty.GetHeir(faction); if (heir != null) { t += "\n\n" + "RoyalTitleTooltipInheritance".Translate(pawn.Named("PAWN"), heir.Named("HEIR")); if (heir.Faction == null) { t += " " + "RoyalTitleTooltipHeirNoFaction".Translate(heir.Named("HEIR")); } else if (heir.Faction != faction) { t += " " + "RoyalTitleTooltipHeirDifferentFaction".Translate(heir.Named("HEIR"), heir.Faction.Named("FACTION")); } } else { t += "\n\n" + "RoyalTitleTooltipNoHeir".Translate(pawn.Named("PAWN")); } } else { t += "\n\n" + "LetterRoyalTitleCantBeInherited".Translate(title.def.Named("TITLE")).CapitalizeFirst() + " " + "LetterRoyalTitleNoHeir".Translate(pawn.Named("PAWN")); } t += "\n\n" + (title.conceited ? "RoyalTitleTooltipConceited" : "RoyalTitleTooltipNonConceited").Translate(pawn.Named("PAWN")); t += "\n\n" + RoyalTitleUtility.GetTitleProgressionInfo(faction, pawn); return((t + ("\n\n" + "ClickToLearnMore".Translate())).Resolve()); }
public override void PostExposeData(object obj) { if (Scribe.mode == LoadSaveMode.PostLoadInit) { int num = VersionControl.BuildFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion); Pawn_RoyaltyTracker pawn_RoyaltyTracker; if ((pawn_RoyaltyTracker = obj as Pawn_RoyaltyTracker) != null && num <= 2575) { foreach (RoyalTitle item in pawn_RoyaltyTracker.AllTitlesForReading) { item.conceited = RoyalTitleUtility.ShouldBecomeConceitedOnNewTitle(pawn_RoyaltyTracker.pawn); } } Pawn_NeedsTracker pawn_NeedsTracker; if ((pawn_NeedsTracker = obj as Pawn_NeedsTracker) != null) { pawn_NeedsTracker.AllNeeds.RemoveAll((Need n) => n.def.defName == "Authority"); } } Pawn pawn; Map map; if ((pawn = obj as Pawn) != null) { if (pawn.abilities == null) { pawn.abilities = new Pawn_AbilityTracker(pawn); } if (pawn.health != null) { if (pawn.health.hediffSet.hediffs.RemoveAll((Hediff x) => x == null) != 0) { Log.Error(pawn.ToStringSafe() + " had some null hediffs."); } Hediff hediff = pawn.health?.hediffSet?.GetFirstHediffOfDef(HediffDefOf.PsychicHangover); if (hediff != null) { pawn.health.hediffSet.hediffs.Remove(hediff); } Hediff firstHediffOfDef = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.WakeUpTolerance); if (firstHediffOfDef != null) { pawn.health.hediffSet.hediffs.Remove(firstHediffOfDef); } Hediff firstHediffOfDef2 = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.GoJuiceTolerance); if (firstHediffOfDef2 != null) { pawn.health.hediffSet.hediffs.Remove(firstHediffOfDef2); } } if (pawn.equipment == null || pawn.apparel == null || pawn.inventory == null) { return; } List <ThingWithComps> list = null; for (int i = 0; i < pawn.equipment.AllEquipmentListForReading.Count; i++) { ThingWithComps thingWithComps = pawn.equipment.AllEquipmentListForReading[i]; if (thingWithComps.def.defName == "OrbitalTargeterBombardment" || thingWithComps.def.defName == "OrbitalTargeterPowerBeam" || thingWithComps.def.defName == "OrbitalTargeterMechCluster" || thingWithComps.def.defName == "TornadoGenerator") { list = list ?? new List <ThingWithComps>(); list.Add(thingWithComps); } } if (list == null) { return; } foreach (Apparel item2 in list) { pawn.equipment.Remove(item2); ResetVerbs(item2); if (pawn.apparel.CanWearWithoutDroppingAnything(item2.def)) { pawn.apparel.Wear(item2); } else { pawn.inventory.innerContainer.TryAdd(item2); } } } else if (Scribe.mode == LoadSaveMode.LoadingVars && (map = obj as Map) != null && map.temporaryThingDrawer == null) { map.temporaryThingDrawer = new TemporaryThingDrawer(); } }
private static void DoPlayLoad() { DeepProfiler.Start("GraphicDatabase.Clear()"); try { GraphicDatabase.Clear(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Load all active mods."); try { LoadedModManager.LoadAllActiveMods(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Load language metadata."); try { LanguageDatabase.InitAllMetadata(); } finally { DeepProfiler.End(); } LongEventHandler.SetCurrentEventText("LoadingDefs".Translate()); DeepProfiler.Start("Copy all Defs from mods to global databases."); try { foreach (Type item in typeof(Def).AllSubclasses()) { GenGeneric.InvokeStaticMethodOnGenericType(typeof(DefDatabase <>), item, "AddAllInMods"); } } finally { DeepProfiler.End(); } DeepProfiler.Start("Resolve cross-references between non-implied Defs."); try { DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.Silent); } finally { DeepProfiler.End(); } DeepProfiler.Start("Rebind defs (early)."); try { DefOfHelper.RebindAllDefOfs(earlyTryMode: true); } finally { DeepProfiler.End(); } DeepProfiler.Start("TKeySystem.BuildMappings()"); try { TKeySystem.BuildMappings(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Inject selected language data into game data (early pass)."); try { LanguageDatabase.activeLanguage.InjectIntoData_BeforeImpliedDefs(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Generate implied Defs (pre-resolve)."); try { DefGenerator.GenerateImpliedDefs_PreResolve(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Resolve cross-references between Defs made by the implied defs."); try { DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.LogErrors); } finally { DirectXmlCrossRefLoader.Clear(); DeepProfiler.End(); } DeepProfiler.Start("Rebind DefOfs (final)."); try { DefOfHelper.RebindAllDefOfs(earlyTryMode: false); } finally { DeepProfiler.End(); } DeepProfiler.Start("Other def binding, resetting and global operations (pre-resolve)."); try { PlayerKnowledgeDatabase.ReloadAndRebind(); LessonAutoActivator.Reset(); CostListCalculator.Reset(); Pawn.ResetStaticData(); PawnApparelGenerator.Reset(); RestUtility.Reset(); ThoughtUtility.Reset(); ThinkTreeKeyAssigner.Reset(); ThingCategoryNodeDatabase.FinalizeInit(); TrainableUtility.Reset(); HaulAIUtility.Reset(); GenConstruct.Reset(); MedicalCareUtility.Reset(); InspectPaneUtility.Reset(); GraphicDatabaseHeadRecords.Reset(); DateReadout.Reset(); ResearchProjectDef.GenerateNonOverlappingCoordinates(); BaseGen.Reset(); ResourceCounter.ResetDefs(); ApparelProperties.ResetStaticData(); WildPlantSpawner.ResetStaticData(); PawnGenerator.Reset(); TunnelHiveSpawner.ResetStaticData(); Hive.ResetStaticData(); ExpectationsUtility.Reset(); WealthWatcher.ResetStaticData(); SkillUI.Reset(); QuestNode_GetThingPlayerCanProduce.ResetStaticData(); Pawn_PsychicEntropyTracker.ResetStaticData(); ColoredText.ResetStaticData(); QuestNode_GetRandomNegativeGameCondition.ResetStaticData(); RoyalTitleUtility.ResetStaticData(); RewardsGenerator.ResetStaticData(); WorkGiver_FillFermentingBarrel.ResetStaticData(); WorkGiver_DoBill.ResetStaticData(); WorkGiver_InteractAnimal.ResetStaticData(); WorkGiver_Warden_DoExecution.ResetStaticData(); WorkGiver_GrowerSow.ResetStaticData(); WorkGiver_Miner.ResetStaticData(); WorkGiver_FixBrokenDownBuilding.ResetStaticData(); WorkGiver_ConstructDeliverResources.ResetStaticData(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Resolve references."); try { DeepProfiler.Start("ThingCategoryDef resolver"); try { DefDatabase <ThingCategoryDef> .ResolveAllReferences(); } finally { DeepProfiler.End(); } DeepProfiler.Start("RecipeDef resolver"); try { DeepProfiler.enabled = false; DefDatabase <RecipeDef> .ResolveAllReferences(onlyExactlyMyType : true, parallel : true); DeepProfiler.enabled = true; } finally { DeepProfiler.End(); } DeepProfiler.Start("Static resolver calls"); try { foreach (Type item2 in typeof(Def).AllSubclasses()) { if (!(item2 == typeof(ThingDef)) && !(item2 == typeof(ThingCategoryDef)) && !(item2 == typeof(RecipeDef))) { GenGeneric.InvokeStaticMethodOnGenericType(typeof(DefDatabase <>), item2, "ResolveAllReferences", true, false); } } } finally { DeepProfiler.End(); } DeepProfiler.Start("ThingDef resolver"); try { DefDatabase <ThingDef> .ResolveAllReferences(); } finally { DeepProfiler.End(); } } finally { DeepProfiler.End(); } DeepProfiler.Start("Generate implied Defs (post-resolve)."); try { DefGenerator.GenerateImpliedDefs_PostResolve(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Other def binding, resetting and global operations (post-resolve)."); try { PawnWeaponGenerator.Reset(); BuildingProperties.FinalizeInit(); ThingSetMakerUtility.Reset(); } finally { DeepProfiler.End(); } if (Prefs.DevMode) { DeepProfiler.Start("Error check all defs."); try { foreach (Type item3 in typeof(Def).AllSubclasses()) { GenGeneric.InvokeStaticMethodOnGenericType(typeof(DefDatabase <>), item3, "ErrorCheckAllDefs"); } } finally { DeepProfiler.End(); } } LongEventHandler.SetCurrentEventText("Initializing".Translate()); DeepProfiler.Start("Load keyboard preferences."); try { KeyPrefs.Init(); } finally { DeepProfiler.End(); } DeepProfiler.Start("Short hash giving."); try { ShortHashGiver.GiveAllShortHashes(); } finally { DeepProfiler.End(); } LongEventHandler.ExecuteWhenFinished(delegate { DeepProfiler.Start("Load backstories."); try { BackstoryDatabase.ReloadAllBackstories(); } finally { DeepProfiler.End(); } }); LongEventHandler.ExecuteWhenFinished(delegate { DeepProfiler.Start("Inject selected language data into game data."); try { LanguageDatabase.activeLanguage.InjectIntoData_AfterImpliedDefs(); GenLabel.ClearCache(); } finally { DeepProfiler.End(); } }); LongEventHandler.ExecuteWhenFinished(delegate { DeepProfiler.Start("Static constructor calls"); try { StaticConstructorOnStartupUtility.CallAll(); if (Prefs.DevMode) { StaticConstructorOnStartupUtility.ReportProbablyMissingAttributes(); } } finally { DeepProfiler.End(); } DeepProfiler.Start("Garbage Collection"); try { AbstractFilesystem.ClearAllCache(); GC.Collect(int.MaxValue, GCCollectionMode.Forced); } finally { DeepProfiler.End(); } }); }