예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }