private int FindFactionTitleIndex(Faction faction, bool createIfNotExisting = false) { for (int i = 0; i < titles.Count; i++) { if (titles[i].faction == faction) { return(i); } } if (createIfNotExisting) { titles.Add(new RoyalTitle { faction = faction, receivedTick = GenTicks.TicksGame, conceited = RoyalTitleUtility.ShouldBecomeConceitedOnNewTitle(pawn) }); return(titles.Count - 1); } return(-1); }
private void OnPostTitleChanged(Faction faction, RoyalTitleDef newTitle) { pawn.Notify_DisabledWorkTypesChanged(); pawn.needs?.AddOrRemoveNeedsAsAppropriate(); if (newTitle != null) { if (newTitle.disabledJoyKinds != null && pawn.jobs != null && RoyalTitleUtility.ShouldBecomeConceitedOnNewTitle(pawn)) { foreach (JoyKindDef disabledJoyKind in newTitle.disabledJoyKinds) { pawn.jobs.Notify_JoyKindDisabled(disabledJoyKind); } } for (int i = 0; i < newTitle.grantedAbilities.Count; i++) { pawn.abilities.GainAbility(newTitle.grantedAbilities[i]); } UpdateHighestTitleAchieved(faction, newTitle); } QuestUtility.SendQuestTargetSignals(pawn.questTags, "TitleChanged", pawn.Named("SUBJECT")); MeditationFocusTypeAvailabilityCache.ClearFor(pawn); }