예제 #1
0
        public override void Notify_WarIsStarted(War war)
        {
            base.Notify_WarIsStarted(war);

            if (WarUtility.WarWithPlayer(war))
            {
                EndComp();
            }
        }
        public override void DoAction(FactionInteraction interaction, Pawn speaker, Pawn defendant)
        {
            if (WarUtility.FirstWarWithPlayer(interaction) != null)
            {
                Messages.Message("CommOption_InviteToAlliance_InWar".Translate(), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (interaction.Faction.RelationKindWith(Faction.OfPlayer) == FactionRelationKind.Hostile)
            {
                Messages.Message("CommOption_InviteToAlliance_NeedAAlly".Translate(), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (interaction.Trust < TrustMinNeed)
            {
                Messages.Message("CommOption_InviteToAlliance_NeedTrust".Translate(TrustMinNeed), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (blocked)
            {
                int waitTicks = (lastUseTicks - Find.TickManager.TicksGame) / 60000;
                Messages.Message("CommOption_InviteToAlliance_Wait".Translate(waitTicks.ToString("f2")), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (Alliance == null)
            {
                Messages.Message("CommOption_InviteToAlliance_NoAlliance".Translate(), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (interaction.InAnyAlliance())
            {
                Messages.Message("CommOption_InviteToAlliance_AlreadyInAlliance".Translate(), MessageTypeDefOf.NeutralEvent);
                return;
            }

            if (Alliance.Factions.Any(x => x.Faction.HostileTo(interaction.Faction)))
            {
                Messages.Message("CommOption_InviteToAlliance_AnyHostileInAlliance".Translate(), MessageTypeDefOf.NeutralEvent);
                return;
            }

            defendantFaction = interaction;
            Dialog dia = new Dialog(DialogDef, speaker, defendantFaction.Faction.leader);

            dia.Init();
            dia.CloseAction = CheckAnswer;
            Find.WindowStack.Add(dia);
        }
예제 #3
0
        public void Notify_WarIsStarted(War war)
        {
            if (!InWars.Contains(war))
            {
                InWars.Add(war);

                QuestsManager.Communications.Components.ForEach(x => x.Notify_WarIsStarted(war));

                if (WarUtility.WarWithPlayer(war))
                {
                    var nonAgressive = GetOption <CommOption_NonAgressionPact>();
                    if (nonAgressive != null)
                    {
                        nonAgressive.Signed = false;
                    }
                }
            }
        }