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