Misc
This commit is contained in:
@@ -26458,6 +26458,9 @@ void Player::SendInitialPacketsAfterAddToMap()
|
||||
|
||||
GetSession()->SendLoadCUFProfiles();
|
||||
|
||||
WorldPackets::Misc::UpdateRecentPlayerGuids recentPlayers;
|
||||
SendDirectMessage(recentPlayers.Write());
|
||||
|
||||
CastSpell(this, 836, true); // LOGINEFFECT
|
||||
|
||||
WorldPackets::Movement::MoveSetCompoundState setCompoundState;
|
||||
|
||||
@@ -9187,8 +9187,18 @@ void Unit::SetSpeedRate(UnitMoveType mtype, float rate)
|
||||
if (m_speed_rate[mtype] == rate)
|
||||
return;
|
||||
|
||||
float const previousRate = m_speed_rate[mtype];
|
||||
m_speed_rate[mtype] = rate;
|
||||
|
||||
bool const scalesSpline = mtype == MOVE_RUN || mtype == MOVE_FLIGHT || mtype == MOVE_SWIM;
|
||||
if (scalesSpline && previousRate > 0.0f && movespline && movespline->Initialized() && !movespline->Finalized())
|
||||
{
|
||||
WorldPackets::Movement::AdjustSplineDuration duration;
|
||||
duration.MoverGUID = GetGUID();
|
||||
duration.Scale = previousRate / rate;
|
||||
SendMessageToSet(duration.Write(), true);
|
||||
}
|
||||
|
||||
PropagateSpeedChange();
|
||||
|
||||
// Spline packets are for creatures and move_update are for players
|
||||
@@ -9723,7 +9733,18 @@ void Unit::ApplyDiminishingAura(DiminishingGroup group, bool apply)
|
||||
DiminishingReturn& diminish = m_Diminishing[group];
|
||||
|
||||
if (apply)
|
||||
{
|
||||
if (group != DIMINISHING_NONE)
|
||||
{
|
||||
WorldPackets::Combat::DiminishingReturnStart packet;
|
||||
packet.UnitGUID = GetGUID();
|
||||
packet.Group = uint8(group);
|
||||
packet.Flags = diminish.stack ? 0x80 : 0;
|
||||
SendMessageToSet(packet.Write(), true);
|
||||
}
|
||||
|
||||
++diminish.stack;
|
||||
}
|
||||
else if (diminish.stack)
|
||||
{
|
||||
--diminish.stack;
|
||||
|
||||
@@ -3565,4 +3565,8 @@ void WorldSession::HandleGetRegionwideCharacterRestrictionAndMailData(WorldPacke
|
||||
SendPacket(mail.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleRafRecruitPresenceSubscribe(WorldPackets::RaF::RafRecruitPresenceSubscribe& /*packet*/)
|
||||
{
|
||||
}
|
||||
|
||||
//WowCommunity
|
||||
|
||||
@@ -1423,6 +1423,14 @@ void WorldSession::HandleGetRemainingGameTime(WorldPackets::ClientConfig::GetRem
|
||||
{
|
||||
}
|
||||
|
||||
void WorldSession::HandleLatencyReport(WorldPackets::Misc::LatencyReport& packet)
|
||||
{
|
||||
}
|
||||
|
||||
void WorldSession::HandleWarden3Data(WorldPackets::Misc::Warden3Data& packet)
|
||||
{
|
||||
}
|
||||
|
||||
void WorldSession::HandleOverrideScreenFlash(WorldPackets::Misc::OverrideScreenFlash& /*packet*/)
|
||||
{
|
||||
// TODO: Implement screen flash override handling
|
||||
|
||||
@@ -158,4 +158,12 @@ WorldPacket const* BreakTarget::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* DiminishingReturnStart::Write()
|
||||
{
|
||||
_worldPacket << UnitGUID;
|
||||
_worldPacket << uint8(Group);
|
||||
_worldPacket << uint8(Flags);
|
||||
return &_worldPacket;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,6 +233,20 @@ namespace WorldPackets
|
||||
|
||||
ObjectGuid UnitGUID;
|
||||
};
|
||||
|
||||
// SMSG_UNIT_DIMINISHING_RETURN_START. Captures are a PackedGuid, the DR group,
|
||||
// then 0 on the first application and 0x80 once that group is already active.
|
||||
class DiminishingReturnStart final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
explicit DiminishingReturnStart() : ServerPacket(SMSG_UNIT_DIMINISHING_RETURN_START, 18) {}
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid UnitGUID;
|
||||
uint8 Group = 0;
|
||||
uint8 Flags = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1070,4 +1070,11 @@ WorldPacket const* WarfrontComplete::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* UpdateRecentPlayerGuids::Write()
|
||||
{
|
||||
_worldPacket << uint32(0);
|
||||
_worldPacket << uint32(0);
|
||||
return &_worldPacket;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1485,6 +1485,32 @@ namespace WorldPackets
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
// CMSG_LATENCY_REPORT. The body is a client metric blob. Nothing in the captures
|
||||
// requires an answer beyond accepting it.
|
||||
class LatencyReport final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
explicit LatencyReport(WorldPacket&& packet) : ClientPacket(CMSG_LATENCY_REPORT, std::move(packet)) {}
|
||||
void Read() override { _worldPacket.rfinish(); }
|
||||
};
|
||||
|
||||
// CMSG_WARDEN3_DATA. Accepted so a client that still has a check in flight is not logged
|
||||
// as unhandled. This server does not send SMSG_WARDEN3_ENABLED.
|
||||
class Warden3Data final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
explicit Warden3Data(WorldPacket&& packet) : ClientPacket(CMSG_WARDEN3_DATA, std::move(packet)) {}
|
||||
void Read() override { _worldPacket.rfinish(); }
|
||||
};
|
||||
|
||||
// SMSG_UPDATE_RECENT_PLAYER_GUIDS. The common capture is eight zero bytes: no guids.
|
||||
class UpdateRecentPlayerGuids final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
explicit UpdateRecentPlayerGuids() : ServerPacket(SMSG_UPDATE_RECENT_PLAYER_GUIDS, 8) {}
|
||||
WorldPacket const* Write() override;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1286,4 +1286,12 @@ WorldPacket const* MoveUpdateSetGravityModifier::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* AdjustSplineDuration::Write()
|
||||
{
|
||||
_worldPacket << MoverGUID;
|
||||
_worldPacket << Scale;
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -896,6 +896,20 @@ namespace WorldPackets
|
||||
float GravityModifier = 1.0f;
|
||||
};
|
||||
|
||||
// SMSG_ADJUST_SPLINE_DURATION. Dungeon captures are PackedGuid plus one float,
|
||||
// the remaining-spline scale (0.5, 1, 2 and the values between them).
|
||||
class AdjustSplineDuration final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
explicit AdjustSplineDuration() : ServerPacket(SMSG_ADJUST_SPLINE_DURATION, 16 + 4) {}
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid MoverGUID;
|
||||
float Scale = 1.0f;
|
||||
};
|
||||
|
||||
|
||||
ByteBuffer& operator>>(ByteBuffer& data, MovementAck& ack);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,6 +101,15 @@ namespace WorldPackets
|
||||
uint64 RecruitId = 0;
|
||||
};
|
||||
|
||||
// CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE. The body is a list of recruit guids.
|
||||
// No empty SMSG_RAF_ACTIVITY_STATE_CHANGED is in the captures, so the request is only accepted.
|
||||
class RafRecruitPresenceSubscribe final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
explicit RafRecruitPresenceSubscribe(WorldPacket&& packet) : ClientPacket(CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE, std::move(packet)) {}
|
||||
void Read() override { _worldPacket.rfinish(); }
|
||||
};
|
||||
|
||||
// SMSG_RAF_ACCOUNT_INFO (0x4202E9) wire (client deserializer body sub_7FF7290B46F0):
|
||||
// uint32 Field20, uint32 Count1, uint32 Count2, uint32 Count3(recruits), uint32 Count4,
|
||||
// Count1 x {6 x uint32}, uint8 presence(bit7=FieldBit24, bit6=optBlockA, bit5=optBlockB),
|
||||
|
||||
@@ -643,7 +643,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_KEEP_ALIVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess);
|
||||
DEFINE_HANDLER(CMSG_KEYBOUND_OVERRIDE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleKeyboundOverride);
|
||||
DEFINE_HANDLER(CMSG_KIOSK_ENABLE_GOD_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_LATENCY_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_LATENCY_REPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLatencyReport);
|
||||
DEFINE_HANDLER(CMSG_LEARN_PVP_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnPvpTalentsOpcode);
|
||||
DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnTalentsOpcode);
|
||||
DEFINE_HANDLER(CMSG_LEAVE_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveGroupOpcode);
|
||||
@@ -935,7 +935,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_RAF_CLAIM_ACTIVITY_REWARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRafClaimActivityReward);
|
||||
DEFINE_HANDLER(CMSG_RAF_CLAIM_NEXT_REWARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRafClaimNextReward);
|
||||
DEFINE_HANDLER(CMSG_RAF_GENERATE_RECRUITMENT_LINK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRafGenerateRecruitmentLink);
|
||||
DEFINE_HANDLER(CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRafRecruitPresenceSubscribe);
|
||||
DEFINE_HANDLER(CMSG_RAF_UPDATE_RECRUITMENT_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode);
|
||||
DEFINE_HANDLER(CMSG_READY_CHECK_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleReadyCheckResponseOpcode);
|
||||
@@ -1218,7 +1218,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_ITEM_PASSIVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVANCED_COMBAT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_JOURNAL_DATA_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
@@ -2516,7 +2516,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_DIMINISHING_RETURN_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNIT_DIMINISHING_RETURN_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLOAD_CHILD_MAP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNSET_INSTANCE_LEAVER, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
@@ -2538,7 +2538,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_LAST_INSTANCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_OBJECT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_PRIMARY_SPEC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_RECENT_PLAYER_GUIDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_RECENT_PLAYER_GUIDS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TALENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WORLD_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -834,6 +834,8 @@ namespace WorldPackets
|
||||
class LoadCUFProfiles;
|
||||
class SaveCUFProfiles;
|
||||
class OpeningCinematic;
|
||||
class LatencyReport;
|
||||
class Warden3Data;
|
||||
class TogglePvP;
|
||||
class SetPvP;
|
||||
class SetWarMode;
|
||||
@@ -1050,6 +1052,7 @@ namespace WorldPackets
|
||||
class AcceptLevelGrant;
|
||||
class GrantLevel;
|
||||
class GetRafAccountInfo;
|
||||
class RafRecruitPresenceSubscribe;
|
||||
class RafGenerateRecruitmentLink;
|
||||
class RafClaimActivityReward;
|
||||
class RafClaimNextReward;
|
||||
@@ -1653,6 +1656,7 @@ public:
|
||||
void HandleGetAccountCharListOpcode(WorldPackets::Character::GetAccountCharacterList& accountCharList);
|
||||
void HandleGetRegionwideCharacterRestrictionAndMailData(WorldPackets::Character::GetRegionwideCharacterRestrictionAndMailData& packet);
|
||||
void HandleGetRafAccountInfo(WorldPackets::RaF::GetRafAccountInfo& packet);
|
||||
void HandleRafRecruitPresenceSubscribe(WorldPackets::RaF::RafRecruitPresenceSubscribe& packet);
|
||||
void HandleConvertTimerunningCharacter(WorldPackets::Character::ConvertTimerunningCharacter& convertTimerunningCharacter);
|
||||
// Arathi Returning Player Experience: shared in-world entry point (Adventure Guide tile)
|
||||
// for CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE. See CharacterHandler.cpp for the login-time
|
||||
@@ -1797,6 +1801,8 @@ public:
|
||||
|
||||
//WowCommunity
|
||||
void HandleGetRemainingGameTime(WorldPackets::ClientConfig::GetRemainingGameTime& packet);
|
||||
void HandleLatencyReport(WorldPackets::Misc::LatencyReport& packet);
|
||||
void HandleWarden3Data(WorldPackets::Misc::Warden3Data& packet);
|
||||
|
||||
// Club Finder
|
||||
void HandleClubFinderPost(WorldPackets::ClubFinder::ClubFinderPost& clubFinderPost);
|
||||
|
||||
Reference in New Issue
Block a user