From a4927ae941c1125a5750b68e2ad0c9d139fef520 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 21 Feb 2024 18:12:41 -0500 Subject: [PATCH] Core/Instances: Added back missing cases to InstanceScript::SendEncounterUnit Port From (https://github.com/TrinityCore/TrinityCore/commit/cc7e1bdcaed1ef1f6b4394378c99c56c8438b049) --- Source/Framework/Constants/MapConst.cs | 19 ++++---- Source/Game/Maps/Instances/InstanceScript.cs | 41 +++++++++++++++-- .../Networking/Packets/InstancePackets.cs | 44 +++++++++++++++++++ 3 files changed, 90 insertions(+), 14 deletions(-) diff --git a/Source/Framework/Constants/MapConst.cs b/Source/Framework/Constants/MapConst.cs index 9411e8a2f..9b8f9f6dd 100644 --- a/Source/Framework/Constants/MapConst.cs +++ b/Source/Framework/Constants/MapConst.cs @@ -129,17 +129,14 @@ namespace Framework.Constants public enum EncounterFrameType { - SetCombatResLimit = 0, - ResetCombatResLimit = 1, - Engage = 2, - Disengage = 3, - UpdatePriority = 4, - AddTimer = 5, - EnableObjective = 6, - UpdateObjective = 7, - DisableObjective = 8, - Unk7 = 9, // Seems To Have Something To Do With Sorting The Encounter Units - AddCombatResLimit = 10 + Engage = 0, + Disengage = 1, + UpdatePriority = 2, + AddTimer = 3, + EnableObjective = 4, + UpdateObjective = 5, + DisableObjective = 6, + PhaseShiftChanged = 7 } public enum EncounterState diff --git a/Source/Game/Maps/Instances/InstanceScript.cs b/Source/Game/Maps/Instances/InstanceScript.cs index f1ae7424e..c84d392eb 100644 --- a/Source/Game/Maps/Instances/InstanceScript.cs +++ b/Source/Game/Maps/Instances/InstanceScript.cs @@ -748,7 +748,7 @@ namespace Game.Maps _temporaryEntranceId = 0; } - public void SendEncounterUnit(EncounterFrameType type, Unit unit = null, byte priority = 0) + public void SendEncounterUnit(EncounterFrameType type, Unit unit = null, int? param1 = null, int? param2 = null) { switch (type) { @@ -758,7 +758,7 @@ namespace Game.Maps InstanceEncounterEngageUnit encounterEngageMessage = new(); encounterEngageMessage.Unit = unit.GetGUID(); - encounterEngageMessage.TargetFramePriority = priority; + encounterEngageMessage.TargetFramePriority = (byte)param1.GetValueOrDefault(0); instance.SendToPlayers(encounterEngageMessage); break; case EncounterFrameType.Disengage: @@ -775,9 +775,44 @@ namespace Game.Maps InstanceEncounterChangePriority encounterChangePriorityMessage = new(); encounterChangePriorityMessage.Unit = unit.GetGUID(); - encounterChangePriorityMessage.TargetFramePriority = priority; + encounterChangePriorityMessage.TargetFramePriority = (byte)param1.GetValueOrDefault(0); instance.SendToPlayers(encounterChangePriorityMessage); break; + case EncounterFrameType.AddTimer: + { + InstanceEncounterTimerStart instanceEncounterTimerStart = new(); + instanceEncounterTimerStart.TimeRemaining = param1.GetValueOrDefault(0); + instance.SendToPlayers(instanceEncounterTimerStart); + break; + } + case EncounterFrameType.EnableObjective: + { + InstanceEncounterObjectiveStart instanceEncounterObjectiveStart = new(); + instanceEncounterObjectiveStart.ObjectiveID = param1.GetValueOrDefault(0); + instance.SendToPlayers(instanceEncounterObjectiveStart); + break; + } + case EncounterFrameType.UpdateObjective: + { + InstanceEncounterObjectiveUpdate instanceEncounterObjectiveUpdate = new(); + instanceEncounterObjectiveUpdate.ObjectiveID = param1.GetValueOrDefault(0); + instanceEncounterObjectiveUpdate.ProgressAmount = param2.GetValueOrDefault(0); + instance.SendToPlayers(instanceEncounterObjectiveUpdate); + break; + } + case EncounterFrameType.DisableObjective: + { + InstanceEncounterObjectiveComplete instanceEncounterObjectiveComplete = new(); + instanceEncounterObjectiveComplete.ObjectiveID = param1.GetValueOrDefault(0); + instance.SendToPlayers(instanceEncounterObjectiveComplete); + break; + } + case EncounterFrameType.PhaseShiftChanged: + { + InstanceEncounterPhaseShiftChanged instanceEncounterPhaseShiftChanged = new(); + instance.SendToPlayers(instanceEncounterPhaseShiftChanged); + break; + } default: break; } diff --git a/Source/Game/Networking/Packets/InstancePackets.cs b/Source/Game/Networking/Packets/InstancePackets.cs index 22d413fd6..7c42209e4 100644 --- a/Source/Game/Networking/Packets/InstancePackets.cs +++ b/Source/Game/Networking/Packets/InstancePackets.cs @@ -194,6 +194,50 @@ namespace Game.Networking.Packets public byte TargetFramePriority; // used to update the position of the unit's current frame } + class InstanceEncounterTimerStart : ServerPacket + { + public int TimeRemaining; + + public InstanceEncounterTimerStart() : base(ServerOpcodes.InstanceEncounterTimerStart) { } + + public override void Write() { } + } + + class InstanceEncounterObjectiveStart : ServerPacket + { + public int ObjectiveID; + + public InstanceEncounterObjectiveStart() : base(ServerOpcodes.InstanceEncounterObjectiveStart) { } + + public override void Write() { } + } + + class InstanceEncounterObjectiveUpdate : ServerPacket + { + public int ObjectiveID; + public int ProgressAmount; + + public InstanceEncounterObjectiveUpdate() : base(ServerOpcodes.InstanceEncounterObjectiveUpdate) { } + + public override void Write() { } + } + + class InstanceEncounterObjectiveComplete : ServerPacket + { + public int ObjectiveID; + + public InstanceEncounterObjectiveComplete() : base(ServerOpcodes.InstanceEncounterObjectiveComplete) { } + + public override void Write() { } + } + + class InstanceEncounterPhaseShiftChanged : ServerPacket + { + public InstanceEncounterPhaseShiftChanged() : base(ServerOpcodes.InstanceEncounterPhaseShiftChanged, ConnectionType.Instance) { } + + public override void Write() { } + } + class InstanceEncounterStart : ServerPacket { public InstanceEncounterStart() : base(ServerOpcodes.InstanceEncounterStart, ConnectionType.Instance) { }