lfg list group finder update to check thordekk when get time
This commit is contained in:
@@ -605,3 +605,18 @@ void WorldSession::SendLfgSlotInvalid(lfg::LfgSlotInvalidReason reason, int32 su
|
||||
slotInvalid.SubReason2 = subReason2;
|
||||
SendPacket(slotInvalid.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleDFReadyCheckResponse(WorldPackets::LFG::DFReadyCheckResponse& dfReadyCheckResponse)
|
||||
{
|
||||
TC_LOG_DEBUG("lfg", "CMSG_DF_READY_CHECK_RESPONSE {} isReady: {}", GetPlayerInfo(), dfReadyCheckResponse.IsReady);
|
||||
|
||||
Player* player = GetPlayer();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
Group const* group = player->GetGroup();
|
||||
if (!group)
|
||||
return;
|
||||
|
||||
//sLFGMgr->UpdateReadyCheck(group->GetGUID(), player->GetGUID(), dfReadyCheckResponse.IsReady);
|
||||
}
|
||||
|
||||
@@ -634,9 +634,6 @@ namespace WorldPackets::Garrison
|
||||
_worldPacket >> followerCount;
|
||||
_worldPacket >> MissionRecID;
|
||||
|
||||
// Cap before resize(): a client-controlled count can't legitimately exceed the packet's own byte size (each
|
||||
// element is >= 1 byte), so this bounds the allocation to a few KB. resize() throws std::bad_alloc, which the
|
||||
// opcode dispatcher does NOT catch (only ByteBufferException) -> an uncapped count crashes the world thread.
|
||||
followerCount = std::min<uint32>(followerCount, _worldPacket.size());
|
||||
FollowerDBIDs.resize(followerCount);
|
||||
FollowerBoardIndexes.resize(followerCount);
|
||||
@@ -718,9 +715,7 @@ namespace WorldPackets::Garrison
|
||||
|
||||
_worldPacket << Mission;
|
||||
|
||||
// Single byte where the client reads bit7 as Succeeded and bit6 as OvermaxSucceeded.
|
||||
// Written directly because TC's Bits<1> writer is LSB-first while the client reads
|
||||
// MSB-first (see SNIFF_AUDIT -10.1.8 bit-pack note).
|
||||
|
||||
_worldPacket << uint8((Succeeded ? 0x80u : 0u) | (OvermaxSucceeded ? 0x40u : 0u));
|
||||
|
||||
for (GarrisonAutoMissionRound const& round : Rounds)
|
||||
@@ -741,8 +736,7 @@ namespace WorldPackets::Garrison
|
||||
_worldPacket << uint32(tgt.OldHealth);
|
||||
_worldPacket << uint32(tgt.NewHealth);
|
||||
_worldPacket << uint32(tgt.MaxHealth);
|
||||
// bit7 set when Points is present; the client reads (n & 0x80) >> 7 then
|
||||
// gates the optional u32 read on that bit.
|
||||
|
||||
_worldPacket << uint8(tgt.Points.has_value() ? 0x80u : 0u);
|
||||
if (tgt.Points)
|
||||
_worldPacket << uint32(*tgt.Points);
|
||||
|
||||
@@ -460,4 +460,16 @@ WorldPacket const* RequestPvpRewardsResponse::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void DFReadyCheckResponse::Read()
|
||||
{
|
||||
// Client 12.1.0.69382 serializer 0x6A5240: presence bit, then IsReady, then FlushBits, then the
|
||||
// conditional uint8. Calibrated against CMSG_SET_EVERYONE_IS_ASSISTANT (0x430046, serializer 0x6A5080),
|
||||
// whose byte-for-byte identical body TrinityCore already reads in this order.
|
||||
_worldPacket >> OptionalInit(PartyIndex);
|
||||
_worldPacket >> Bits<1>(IsReady);
|
||||
_worldPacket.ResetBitPos();
|
||||
if (PartyIndex)
|
||||
_worldPacket >> *PartyIndex;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -537,6 +537,17 @@ namespace WorldPackets
|
||||
uint8 BrawlFlags = 0x00;
|
||||
uint8 ExtraFlags = 0x80;
|
||||
};
|
||||
|
||||
class DFReadyCheckResponse final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
explicit DFReadyCheckResponse(WorldPacket&& packet) : ClientPacket(CMSG_DF_READY_CHECK_RESPONSE, std::move(packet)) {}
|
||||
|
||||
void Read() override;
|
||||
|
||||
Optional<uint8> PartyIndex;
|
||||
bool IsReady = false;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -436,7 +436,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_DF_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgJoinOpcode);
|
||||
DEFINE_HANDLER(CMSG_DF_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgLeaveOpcode);
|
||||
DEFINE_HANDLER(CMSG_DF_PROPOSAL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgProposalResultOpcode);
|
||||
DEFINE_HANDLER(CMSG_DF_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_DF_READY_CHECK_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDFReadyCheckResponse);
|
||||
DEFINE_HANDLER(CMSG_DF_SET_ROLES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetRolesOpcode);
|
||||
DEFINE_HANDLER(CMSG_DF_TELEPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgTeleportOpcode);
|
||||
DEFINE_HANDLER(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleDiscardedTimeSyncAcks);
|
||||
|
||||
@@ -760,6 +760,7 @@ namespace WorldPackets
|
||||
class DFGetJoinStatus;
|
||||
class DFConfirmExpandSearch;
|
||||
struct RideTicket;
|
||||
class DFReadyCheckResponse;
|
||||
}
|
||||
|
||||
namespace LFGList
|
||||
@@ -2341,6 +2342,7 @@ public:
|
||||
void SendLfgTeleportError(lfg::LfgTeleportResult err);
|
||||
void SendLfgExpandSearchPrompt(WorldPackets::LFG::RideTicket const& ticket);
|
||||
void SendLfgSlotInvalid(lfg::LfgSlotInvalidReason reason, int32 subReason1, int32 subReason2);
|
||||
void HandleDFReadyCheckResponse(WorldPackets::LFG::DFReadyCheckResponse& dfReadyCheckResponse);
|
||||
|
||||
void HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes);
|
||||
void HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& requestPetInfo);
|
||||
|
||||
@@ -90,7 +90,7 @@ struct npc_rira_hackclaw : public BossAI
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 15s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason why) override
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
@@ -285,4 +285,4 @@ void AddSC_npc_rira_hackclaw()
|
||||
RegisterBrackenhideHollowCreatureAI(npc_rira_hackclaw);
|
||||
RegisterBrackenhideHollowCreatureAI(npc_gasthooth_186124);
|
||||
RegisterBrackenhideHollowCreatureAI(npc_gasTricktotem_186125);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ enum DragonridingSpells
|
||||
SPELL_SKYRIDING_BASICS = 376777,
|
||||
SPELL_SWITCH_FLIGHT_STYLE = 436854,
|
||||
SPELL_VIGOR = 372773,
|
||||
SPELL_LIFT_OFF_1 = 374763,
|
||||
SPELL_LIFT_OFF_1 = 374763, //383363, 404191 //12.1 sniff to verify
|
||||
SPELL_LIFT_OFF_2 = 372610,
|
||||
SPELL_LIFT_OFF_3 = 386451,
|
||||
SPELL_SURGE_FORWARD = 372608,
|
||||
|
||||
Reference in New Issue
Block a user