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);
 }