Exemplo n.º 1
0
        public override void RegisterEvents()
        {
            CampaignEvents.OnSessionLaunchedEvent.AddNonSerializedListener(this, OnSessionLaunched);
            CampaignEvents.DailyTickEvent.AddNonSerializedListener(this, OnDailyTick);
            CampaignEvents.TickEvent.AddNonSerializedListener(this, OnTick);

            CampaignEvents.KingdomCreatedEvent.AddNonSerializedListener(this, kingdom =>
            {
                GameObjects.Add(new GameObject
                {
                    GameObjectType = GameObjectType.Kingdom,
                    StringId       = kingdom.StringId
                });
            });

            CampaignEvents.KingdomDestroyedEvent.AddNonSerializedListener(this, kingdom =>
            {
                GameObjects.RemoveAll(g => g.GameObjectType == GameObjectType.Kingdom && g.StringId == kingdom.StringId);
                KingdomHelper.RemoveKingdom(kingdom);
            });

            CampaignEvents.OnClanDestroyedEvent.AddNonSerializedListener(this, clan =>
            {
                GameObjects.RemoveAll(g => g.GameObjectType == GameObjectType.Clan && g.StringId == clan.StringId);
            });
        }
        public override void DoEnd()
        {
            var plot = Goal.Plot;

            var newName = KingdomHelper.GenerateName(plot.Leader.ToHero());

            plot.Leader.ToKingdom().ChangeKingdomName(newName, plot.Leader.ToClan().InformalName);

            InformationManager.AddNotice(new PeaceMapNotification(plot.Leader.ToKingdom(), plot.Target.ToKingdom(), new TextObject($"Civil War ended in {plot.Target.ToKingdom().Name}")));
        }
Exemplo n.º 3
0
        public override void DoEnd()
        {
            var plot = Goal.Plot;

            var name         = new TextObject(plot.Target.ToKingdom().InformalName + " Seperatists");
            var informalName = new TextObject(plot.Leader.ToHero().Clan.InformalName.ToString());

            var oldKingdom = plot.Target.ToKingdom();
            var rebel      = KingdomHelper.CreateKingdom(plot.Leader.ToHero(), name, informalName, plot.Leader.ToHero().Clan.Banner, true);

            foreach (var member in plot.Members.Where(member => member.ToHero().Clan.Kingdom != rebel))
            {
                ChangeKingdomAction.ApplyByJoinToKingdom(member.ToHero().Clan, rebel);
            }

            DeclareWarAction.Apply(rebel, oldKingdom);

            foreach (var hero in oldKingdom.Lords)
            {
                var warRelationChange  = Settings.WarRelationshipChange;
                var allyRelationChange = Settings.AllyRelationshipChange / 2;

                if (hero.IsFactionLeader())
                {
                    warRelationChange  *= Settings.LeaderRelationshipChangeFactor;
                    allyRelationChange *= Settings.LeaderRelationshipChangeFactor;
                }

                foreach (var ally in oldKingdom.Lords)
                {
                    ChangeRelationAction.ApplyRelationChangeBetweenHeroes(hero, ally, (int)allyRelationChange);
                }

                foreach (var enemy in rebel.Lords)
                {
                    ChangeRelationAction.ApplyRelationChangeBetweenHeroes(hero, enemy, (int)warRelationChange);
                }

                foreach (var ally in rebel.Lords)
                {
                    ChangeRelationAction.ApplyRelationChangeBetweenHeroes(hero, ally, (int)allyRelationChange);
                }
            }

            InformationManager.AddNotice(new WarMapNotification(rebel, oldKingdom, new TextObject($"Civil War breaks out in {oldKingdom.Name}")));

            LogHelper.Log("Successful Revolt created: " + rebel.Name);
        }