diff --git a/src/Messengers/LeaveEncounterLogic.cs b/src/Messengers/LeaveEncounterLogic.cs deleted file mode 100644 index 30549377..00000000 --- a/src/Messengers/LeaveEncounterLogic.cs +++ /dev/null @@ -1,22 +0,0 @@ -using TaleWorlds.CampaignSystem; -using TaleWorlds.MountAndBlade; - -namespace Diplomacy.Messengers -{ - public class LeaveEncounterLogic : MissionLogic - { -#if e165 - public override void OnRemoveBehavior() -#else - public override void OnRemoveBehaviour() -#endif - { - PlayerEncounter.Finish(); -#if e159 || e1510 - CampaignEvents.RemoveListeners(this); -#else - CampaignEventDispatcher.Instance.RemoveListeners(this); -#endif - } - } -} diff --git a/src/Messengers/MessengerManager.cs b/src/Messengers/MessengerManager.cs index b8adf2b0..f052e790 100644 --- a/src/Messengers/MessengerManager.cs +++ b/src/Messengers/MessengerManager.cs @@ -46,6 +46,7 @@ public void OnEndMission() _messengers.Remove(_activeMessenger!); _activeMessenger = null; _currentMission = null; + CampaignEvents.TickEvent.AddNonSerializedListener(this, CleanUpSettlementEncounter); } public void OnMissionModeChange(MissionMode oldMissionMode, bool atStart) @@ -200,11 +201,6 @@ public void StartDialogue(Hero targetHero, Messenger messenger) specialScene, sceneLevels); } -#if e165 - _currentMission.AddMissionBehavior(new LeaveEncounterLogic()); -#else - _currentMission.AddMissionBehaviour(new LeaveEncounterLogic()); -#endif _currentMission.AddListener(this); } @@ -251,5 +247,15 @@ public static bool CanSendMessengerWithCost(Hero opposingLeader, DiplomacyCost d var canPayCost = diplomacyCost.CanPayCost(); return canPayCost && IsTargetHeroAvailable(opposingLeader); } + + private void CleanUpSettlementEncounter(float obj) + { + PlayerEncounter.Finish(); +#if e159 || e1510 + CampaignEvents.RemoveListeners(this); +#else + CampaignEventDispatcher.Instance.RemoveListeners(this); +#endif + } } } \ No newline at end of file