public void RemoveFaction(FactionInteraction faction, AllianceRemoveReason reason) { Factions.Remove(faction); if (reason == AllianceRemoveReason.Kick) { faction.Faction.TrySetRelationKind(FactionOwner, FactionRelationKind.Hostile); faction.Trust -= KickTrustChange; foreach (var allianceFaction in Factions) { allianceFaction.Faction.TrySetRelationKind(faction.Faction, FactionRelationKind.Hostile); } } if (AllianceAgreements != null) { for (int i = 0; i < AllianceAgreements.Count; i++) { AllianceAgreementComp agreement = AllianceAgreements[i]; if (agreement.SignedFaction == faction) { EndAgreement(agreement, AgreementEndReason.FactionLeave); } } } RemoveFromWars(faction); Find.LetterStack.ReceiveLetter("AllianceRemoveFactionTitle".Translate(faction.Faction.Name), "Alliance_RemoveFactionDesc".Translate(faction.Faction.Name, reason.Translate()), LetterDefOf.NeutralEvent); }
public static string Translate(this AllianceRemoveReason reason) { switch (reason) { case AllianceRemoveReason.Kick: return("AllianceRemoveReason_Kick".Translate()); case AllianceRemoveReason.LowTrust: return("AllianceRemoveReason_LowTrust".Translate()); case AllianceRemoveReason.None: return("AllianceRemoveReason_None".Translate()); default: return(string.Empty); } }