Clear the encounter timeline and treasure picker from dungeon sniffs.
This commit is contained in:
@@ -26511,6 +26511,15 @@ void Player::SendInitialPacketsAfterAddToMap()
|
||||
initialUpdate.SequenceIndex = m_movementCounter++;
|
||||
SendDirectMessage(initialUpdate.Write());
|
||||
}
|
||||
|
||||
// Dungeon captures clear the treasure picker cache with an empty packet once the player is on
|
||||
// the instance connection. Open world does not get that clear.
|
||||
if (GetMap()->IsDungeon())
|
||||
{
|
||||
WorldPackets::Misc::ClearTreasurePickerCache clearTreasurePicker;
|
||||
SendDirectMessage(clearTreasurePicker.Write());
|
||||
}
|
||||
|
||||
//WowCommunity
|
||||
|
||||
if (HasUnitState(UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED) || HasAuraType(SPELL_AURA_MOD_CONFUSE) || HasAuraType(SPELL_AURA_MOD_FEAR))
|
||||
|
||||
@@ -955,6 +955,10 @@ void InstanceScript::SendEncounterEnd()
|
||||
{
|
||||
WorldPackets::Instance::InstanceEncounterEnd encounterEndMessage;
|
||||
instance->SendToPlayers(encounterEndMessage.Write());
|
||||
|
||||
// The same end bundle in the dungeon captures clears the encounter timeline with a count of 0.
|
||||
WorldPackets::Instance::InstanceEncounterEventSequence clearTimeline;
|
||||
instance->SendToPlayers(clearTimeline.Write());
|
||||
}
|
||||
|
||||
void InstanceScript::SendBossKillCredit(uint32 encounterId)
|
||||
|
||||
@@ -593,6 +593,20 @@ namespace WorldPackets
|
||||
uint32 TimerID = 0;
|
||||
bool KeepTimer = false;
|
||||
};
|
||||
|
||||
// SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE. A count of 0 is the 4-byte clear retail sends
|
||||
// with the encounter-end bundle. Populated event records are variable and not written here.
|
||||
class InstanceEncounterEventSequence final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
explicit InstanceEncounterEventSequence() : ServerPacket(SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE, 4) {}
|
||||
|
||||
WorldPacket const* Write() override
|
||||
{
|
||||
_worldPacket << uint32(0);
|
||||
return &_worldPacket;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1476,6 +1476,15 @@ namespace WorldPackets
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
// SMSG_CLEAR_TREASURE_PICKER_CACHE. Dungeon captures send an empty body on the instance connection.
|
||||
class ClearTreasurePickerCache final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
explicit ClearTreasurePickerCache() : ServerPacket(SMSG_CLEAR_TREASURE_PICKER_CACHE, 0) {}
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1438,7 +1438,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_RESURRECT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TREASURE_PICKER_CACHE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLEAR_TREASURE_PICKER_CACHE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLOSE_ARTIFACT_FORGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_ERROR_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CLUB_FINDER_GET_CLUB_POSTING_IDS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
@@ -1839,7 +1839,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_EVENT_BLOCKED_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_EVENT_CAST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_EVENT_RESPAWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_EVENT_SEQUENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
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_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
|
||||
Reference in New Issue
Block a user