From aac793ca9e54ecf169b8c4b8805680c27fdad02a Mon Sep 17 00:00:00 2001 From: Alexander Egard Date: Wed, 29 Nov 2023 13:49:25 +0100 Subject: [PATCH] Party Error Correction --- .../MobileParties/Data/PartyBehaviorUpdateData.cs | 10 +++++++++- .../Handlers/MobilePartyBehaviorHandler.cs | 2 ++ .../MobileParties/Patches/PartyBehaviorPatch.cs | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/source/GameInterface/Services/MobileParties/Data/PartyBehaviorUpdateData.cs b/source/GameInterface/Services/MobileParties/Data/PartyBehaviorUpdateData.cs index 939235ca3..3c3d7fe40 100644 --- a/source/GameInterface/Services/MobileParties/Data/PartyBehaviorUpdateData.cs +++ b/source/GameInterface/Services/MobileParties/Data/PartyBehaviorUpdateData.cs @@ -30,7 +30,13 @@ public record PartyBehaviorUpdateData [ProtoMember(6)] public float TargetPointY { get; } - public PartyBehaviorUpdateData(string partyId, AiBehavior aiBehavior, bool hasTarget, string targetId, Vec2 targetPoint) + [ProtoMember(7)] + public float PartyPositionX { get; } + + [ProtoMember(8)] + public float PartyPositionY { get; } + + public PartyBehaviorUpdateData(string partyId, AiBehavior aiBehavior, bool hasTarget, string targetId, Vec2 targetPoint, Vec2 partyPosition) { PartyId = partyId; Behavior = aiBehavior; @@ -38,6 +44,8 @@ public PartyBehaviorUpdateData(string partyId, AiBehavior aiBehavior, bool hasTa TargetId = targetId; TargetPointX = targetPoint.X; TargetPointY = targetPoint.Y; + PartyPositionX = partyPosition.X; + PartyPositionY = partyPosition.Y; } } } \ No newline at end of file diff --git a/source/GameInterface/Services/MobileParties/Handlers/MobilePartyBehaviorHandler.cs b/source/GameInterface/Services/MobileParties/Handlers/MobilePartyBehaviorHandler.cs index 5ea7f3cd2..ed8df9355 100644 --- a/source/GameInterface/Services/MobileParties/Handlers/MobilePartyBehaviorHandler.cs +++ b/source/GameInterface/Services/MobileParties/Handlers/MobilePartyBehaviorHandler.cs @@ -78,6 +78,8 @@ public void Handle_UpdatePartyBehavior(MessagePayload obj) Vec2 targetPoint = new Vec2(data.TargetPointX, data.TargetPointY); + party.Position2D = new Vec2(data.PartyPositionX, data.PartyPositionY); + PartyBehaviorPatch.SetAiBehavior( party.Ai, data.Behavior, diff --git a/source/GameInterface/Services/MobileParties/Patches/PartyBehaviorPatch.cs b/source/GameInterface/Services/MobileParties/Patches/PartyBehaviorPatch.cs index f6afb88fa..16fa4480a 100644 --- a/source/GameInterface/Services/MobileParties/Patches/PartyBehaviorPatch.cs +++ b/source/GameInterface/Services/MobileParties/Patches/PartyBehaviorPatch.cs @@ -62,7 +62,7 @@ private static bool SetAiBehaviorPrefix( : targetPartyFigure.MobileParty.StringId; } - var data = new PartyBehaviorUpdateData(party.StringId, newAiBehavior, hasTargetEntity, targetEntityId, bestTargetPoint); + var data = new PartyBehaviorUpdateData(party.StringId, newAiBehavior, hasTargetEntity, targetEntityId, bestTargetPoint, party.Position2D); var message = new PartyBehaviorChangeAttempted(party, data); MessageBroker.Instance.Publish(__instance, message);