mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Instances: Added back missing cases to InstanceScript::SendEncounterUnit that are supported in 3.3.5 branch
This commit is contained in:
@@ -800,7 +800,7 @@ void InstanceScript::SetEntranceLocation(uint32 worldSafeLocationId)
|
||||
_temporaryEntranceId = 0;
|
||||
}
|
||||
|
||||
void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= nullptr*/, uint8 priority)
|
||||
void InstanceScript::SendEncounterUnit(EncounterFrameType type, Unit const* unit, Optional<int32> param1 /*= {}*/, Optional<int32> param2 /*= {}*/)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -811,7 +811,7 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= nullptr*/, ui
|
||||
|
||||
WorldPackets::Instance::InstanceEncounterEngageUnit encounterEngageMessage;
|
||||
encounterEngageMessage.Unit = unit->GetGUID();
|
||||
encounterEngageMessage.TargetFramePriority = priority;
|
||||
encounterEngageMessage.TargetFramePriority = param1.value_or(0);
|
||||
instance->SendToPlayers(encounterEngageMessage.Write());
|
||||
break;
|
||||
}
|
||||
@@ -832,10 +832,45 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= nullptr*/, ui
|
||||
|
||||
WorldPackets::Instance::InstanceEncounterChangePriority encounterChangePriorityMessage;
|
||||
encounterChangePriorityMessage.Unit = unit->GetGUID();
|
||||
encounterChangePriorityMessage.TargetFramePriority = priority;
|
||||
encounterChangePriorityMessage.TargetFramePriority = param1.value_or(0);
|
||||
instance->SendToPlayers(encounterChangePriorityMessage.Write());
|
||||
break;
|
||||
}
|
||||
case ENCOUNTER_FRAME_ADD_TIMER:
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterTimerStart instanceEncounterTimerStart;
|
||||
instanceEncounterTimerStart.TimeRemaining = param1.value_or(0);
|
||||
instance->SendToPlayers(instanceEncounterTimerStart.Write());
|
||||
break;
|
||||
}
|
||||
case ENCOUNTER_FRAME_ENABLE_OBJECTIVE:
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterObjectiveStart instanceEncounterObjectiveStart;
|
||||
instanceEncounterObjectiveStart.ObjectiveID = param1.value_or(0);
|
||||
instance->SendToPlayers(instanceEncounterObjectiveStart.Write());
|
||||
break;
|
||||
}
|
||||
case ENCOUNTER_FRAME_UPDATE_OBJECTIVE:
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterObjectiveUpdate instanceEncounterObjectiveUpdate;
|
||||
instanceEncounterObjectiveUpdate.ObjectiveID = param1.value_or(0);
|
||||
instanceEncounterObjectiveUpdate.ProgressAmount = param2.value_or(0);
|
||||
instance->SendToPlayers(instanceEncounterObjectiveUpdate.Write());
|
||||
break;
|
||||
}
|
||||
case ENCOUNTER_FRAME_DISABLE_OBJECTIVE:
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterObjectiveComplete instanceEncounterObjectiveComplete;
|
||||
instanceEncounterObjectiveComplete.ObjectiveID = param1.value_or(0);
|
||||
instance->SendToPlayers(instanceEncounterObjectiveComplete.Write());
|
||||
break;
|
||||
}
|
||||
case ENCOUNTER_FRAME_PHASE_SHIFT_CHANGED:
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterPhaseShiftChanged instanceEncounterPhaseShiftChanged;
|
||||
instance->SendToPlayers(instanceEncounterPhaseShiftChanged.Write());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -53,17 +53,14 @@ enum Difficulty : uint8;
|
||||
|
||||
enum EncounterFrameType
|
||||
{
|
||||
ENCOUNTER_FRAME_SET_COMBAT_RES_LIMIT = 0,
|
||||
ENCOUNTER_FRAME_RESET_COMBAT_RES_LIMIT = 1,
|
||||
ENCOUNTER_FRAME_ENGAGE = 2,
|
||||
ENCOUNTER_FRAME_DISENGAGE = 3,
|
||||
ENCOUNTER_FRAME_UPDATE_PRIORITY = 4,
|
||||
ENCOUNTER_FRAME_ADD_TIMER = 5,
|
||||
ENCOUNTER_FRAME_ENABLE_OBJECTIVE = 6,
|
||||
ENCOUNTER_FRAME_UPDATE_OBJECTIVE = 7,
|
||||
ENCOUNTER_FRAME_DISABLE_OBJECTIVE = 8,
|
||||
ENCOUNTER_FRAME_UNK7 = 9, // Seems to have something to do with sorting the encounter units
|
||||
ENCOUNTER_FRAME_ADD_COMBAT_RES_LIMIT = 10
|
||||
ENCOUNTER_FRAME_ENGAGE = 0,
|
||||
ENCOUNTER_FRAME_DISENGAGE = 1,
|
||||
ENCOUNTER_FRAME_UPDATE_PRIORITY = 2,
|
||||
ENCOUNTER_FRAME_ADD_TIMER = 3,
|
||||
ENCOUNTER_FRAME_ENABLE_OBJECTIVE = 4,
|
||||
ENCOUNTER_FRAME_UPDATE_OBJECTIVE = 5,
|
||||
ENCOUNTER_FRAME_DISABLE_OBJECTIVE = 6,
|
||||
ENCOUNTER_FRAME_PHASE_SHIFT_CHANGED = 7
|
||||
};
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
@@ -303,7 +300,7 @@ class TC_GAME_API InstanceScript : public ZoneScript
|
||||
void ResetAreaTriggerDone(uint32 id) { _activatedAreaTriggers.erase(id); }
|
||||
bool IsAreaTriggerDone(uint32 id) const { return _activatedAreaTriggers.find(id) != _activatedAreaTriggers.end(); }
|
||||
|
||||
void SendEncounterUnit(uint32 type, Unit* unit = nullptr, uint8 priority = 0);
|
||||
void SendEncounterUnit(EncounterFrameType type, Unit const* unit, Optional<int32> param1 = {}, Optional<int32> param2 = {});
|
||||
void SendEncounterStart(uint32 inCombatResCount = 0, uint32 maxInCombatResCount = 0, uint32 inCombatResChargeRecovery = 0, uint32 nextCombatResChargeTime = 0);
|
||||
void SendEncounterEnd();
|
||||
|
||||
|
||||
@@ -218,6 +218,14 @@ namespace WorldPackets
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
class InstanceEncounterPhaseShiftChanged final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
InstanceEncounterPhaseShiftChanged() : ServerPacket(SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, 0) { }
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
class InstanceEncounterInCombatResurrection final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -1529,12 +1529,12 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_TIMER_START, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_TIMER_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_UPDATE_ALLOW_RELEASE_IN_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_UPDATE_SUPPRESS_RELEASE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_GROUP_SIZE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -1646,7 +1646,7 @@ class spell_halion_twilight_realm_handlers : public SpellScriptLoader
|
||||
{
|
||||
GetTarget()->RemoveAurasDueToSpell(SPELL_TWILIGHT_REALM);
|
||||
if (InstanceScript* instance = GetTarget()->GetInstanceScript())
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_UNK7);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_PHASE_SHIFT_CHANGED, nullptr);
|
||||
}
|
||||
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/)
|
||||
@@ -1657,7 +1657,7 @@ class spell_halion_twilight_realm_handlers : public SpellScriptLoader
|
||||
|
||||
target->RemoveAurasDueToSpell(_beforeHitSpellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_UNK7);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_PHASE_SHIFT_CHANGED, nullptr);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
Reference in New Issue
Block a user