Core/PacketIO: Updated packets to 7.1.0.22900

This commit is contained in:
Shauren
2016-10-25 19:29:27 +02:00
parent 40baf3e94f
commit af25942aec
39 changed files with 1103 additions and 999 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
UPDATE `realmlist` SET `gamebuild`=22900 WHERE `gamebuild`=22810;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int(10) unsigned NOT NULL DEFAULT '22900';
@@ -0,0 +1,9 @@
ALTER TABLE `character_cuf_profiles`
CHANGE `unk146` `topPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame top alignment' AFTER `boolOptions`,
CHANGE `unk147` `bottomPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame bottom alignment' AFTER `topPoint`,
CHANGE `unk148` `leftPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame left alignment' AFTER `bottomPoint`,
CHANGE `unk150` `topOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from top' AFTER `leftPoint`,
CHANGE `unk152` `bottomOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from bottom' AFTER `topOffset`,
CHANGE `unk154` `leftOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from left' AFTER `bottomOffset`;
UPDATE `character_cuf_profiles` SET `boolOptions`=((`boolOptions`&0x1800000)<<2)|(`boolOptions`&0x67FFFFF);
@@ -0,0 +1 @@
ALTER TABLE `quest_objectives` ADD `Flags2` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Flags`;
@@ -626,8 +626,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_DEL_CHAR_VOID_STORAGE_ITEM_BY_SLOT, "DELETE FROM character_void_storage WHERE slot = ? AND playerGuid = ?", CONNECTION_ASYNC);
// CompactUnitFrame profiles
PrepareStatement(CHAR_SEL_CHAR_CUF_PROFILES, "SELECT id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154 FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_REP_CHAR_CUF_PROFILES, "REPLACE INTO character_cuf_profiles (guid, id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_CHAR_CUF_PROFILES, "SELECT id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, topPoint, bottomPoint, leftPoint, topOffset, bottomOffset, leftOffset FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_REP_CHAR_CUF_PROFILES, "REPLACE INTO character_cuf_profiles (guid, id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, topPoint, bottomPoint, leftPoint, topOffset, bottomOffset, leftOffset) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_CUF_PROFILES_BY_ID, "DELETE FROM character_cuf_profiles WHERE guid = ? AND id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_CUF_PROFILES, "DELETE FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
@@ -578,8 +578,6 @@ void BattlegroundMgr::SendBattlegroundList(Player* player, ObjectGuid const& gui
battlefieldList.MaxLevel = bgTemplate->MaxLevel;
battlefieldList.PvpAnywhere = guid.IsEmpty();
battlefieldList.HasRandomWinToday = player->GetRandomWinner();
battlefieldList.HasHolidayWinToday = false;
battlefieldList.IsRandomBG = bgTypeId == BATTLEGROUND_RB;
player->SendDirectMessage(battlefieldList.Write());
}
@@ -26507,6 +26507,7 @@ void Player::SendMovementSetCollisionHeight(float height)
setCollisionHeight.Height = height;
setCollisionHeight.Scale = GetObjectScale();
setCollisionHeight.MountDisplayID = GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID);
setCollisionHeight.ScaleDuration = GetUInt32Value(UNIT_FIELD_SCALE_DURATION);
setCollisionHeight.Reason = WorldPackets::Movement::UPDATE_COLLISION_HEIGHT_MOUNT;
SendDirectMessage(setCollisionHeight.Write());
+2 -2
View File
@@ -225,11 +225,11 @@ enum CUFBoolOptions
CUF_AUTO_ACTIVATE_40_PLAYERS,
CUF_AUTO_ACTIVATE_SPEC_1,
CUF_AUTO_ACTIVATE_SPEC_2,
CUF_AUTO_ACTIVATE_SPEC_3,
CUF_AUTO_ACTIVATE_SPEC_4,
CUF_AUTO_ACTIVATE_PVP,
CUF_AUTO_ACTIVATE_PVE,
// The unks is _LOCKED and _SHOWN and _DYNAMIC, unknown order
CUF_BOOL_OPTIONS_COUNT,
};
+2 -2
View File
@@ -3894,8 +3894,8 @@ void ObjectMgr::LoadQuests()
}
// Load `quest_objectives`
// 0 1 2 3 4 5 6 7 8
result = WorldDatabase.Query("SELECT ID, QuestID, Type, StorageIndex, ObjectID, Amount, Flags, ProgressBarWeight, Description FROM quest_objectives ORDER BY StorageIndex ASC");
// 0 1 2 3 4 5 6 7 8 9
result = WorldDatabase.Query("SELECT ID, QuestID, Type, StorageIndex, ObjectID, Amount, Flags, Flags2, ProgressBarWeight, Description FROM quest_objectives ORDER BY StorageIndex ASC");
if (!result)
{
+1
View File
@@ -39,6 +39,7 @@ void WorldSession::SendAuthResponse(uint32 code, bool queued, uint32 queuePos)
response.SuccessInfo->AccountExpansionLevel = GetExpansion();
response.SuccessInfo->ActiveExpansionLevel = GetExpansion();
response.SuccessInfo->VirtualRealmAddress = GetVirtualRealmAddress();
response.SuccessInfo->Time = int32(time(nullptr));
// Send current home realm. Also there is no need to send it later in realm queries.
response.SuccessInfo->VirtualRealms.emplace_back(GetVirtualRealmAddress(), true, false,
+3 -2
View File
@@ -198,8 +198,9 @@ void Quest::LoadQuestObjective(Field* fields)
obj.ObjectID = fields[4].GetInt32();
obj.Amount = fields[5].GetInt32();
obj.Flags = fields[6].GetUInt32();
obj.ProgressBarWeight = fields[7].GetFloat();
obj.Description = fields[8].GetString();
obj.Flags2 = fields[7].GetUInt32();
obj.ProgressBarWeight = fields[8].GetFloat();
obj.Description = fields[9].GetString();
Objectives.push_back(obj);
}
+1
View File
@@ -268,6 +268,7 @@ struct QuestObjective
int32 ObjectID = 0;
int32 Amount = 0;
uint32 Flags = 0;
uint32 Flags2 = 0;
float ProgressBarWeight = 0.0f;
std::string Description;
std::vector<int32> VisualEffects;
@@ -97,6 +97,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket << uint32(SuccessInfo->AvailableClasses->size());
_worldPacket << uint32(SuccessInfo->Templates.size());
_worldPacket << uint32(SuccessInfo->CurrencyID);
_worldPacket << int32(SuccessInfo->Time);
for (auto& race : *SuccessInfo->AvailableRaces)
{
@@ -130,6 +130,7 @@ namespace WorldPackets
uint32 VirtualRealmAddress = 0; ///< a special identifier made from the Index, BattleGroup and Region.
uint32 TimeSecondsUntilPCKick = 0; ///< @todo research
uint32 CurrencyID = 0; ///< this is probably used for the ingame shop. @todo implement
int32 Time = 0;
BillingInfo Billing;
@@ -219,9 +219,7 @@ WorldPacket const* WorldPackets::Battleground::BattlefieldList::Write()
_worldPacket.append(Battlefields.data(), Battlefields.size());
_worldPacket.WriteBit(PvpAnywhere);
_worldPacket.WriteBit(HasHolidayWinToday);
_worldPacket.WriteBit(HasRandomWinToday);
_worldPacket.WriteBit(IsRandomBG);
_worldPacket.FlushBits();
return &_worldPacket;
}
@@ -271,15 +271,13 @@ namespace WorldPackets
WorldPacket const* Write() override;
uint8 MaxLevel = 0;
bool PvpAnywhere = false;
ObjectGuid BattlemasterGuid;
bool IsRandomBG = false;
uint8 MinLevel = 0;
bool HasHolidayWinToday = false;
int32 BattlemasterListID = 0;
bool HasRandomWinToday = false;
uint8 MinLevel = 0;
uint8 MaxLevel = 0;
std::vector<int32> Battlefields; // Players cannot join a specific battleground instance anymore - this is always empty
bool PvpAnywhere = false;
bool HasRandomWinToday = false;
};
class GetPVPOptionsEnabled final : public ClientPacket
@@ -388,6 +388,11 @@ WorldPacket const* WorldPackets::Character::CharacterLoginFailed::Write()
return &_worldPacket;
}
void WorldPackets::Character::LogoutRequest::Read()
{
IdleLogout = _worldPacket.ReadBit();
}
WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
{
_worldPacket << int32(LogoutResult);
@@ -396,12 +401,6 @@ WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::Character::LogoutComplete::Write()
{
_worldPacket << SwitchToCharacter;
return &_worldPacket;
}
void WorldPackets::Character::LoadingScreenNotify::Read()
{
_worldPacket >> MapID;
@@ -477,7 +477,9 @@ namespace WorldPackets
public:
LogoutRequest(WorldPacket&& packet) : ClientPacket(CMSG_LOGOUT_REQUEST, std::move(packet)) { }
void Read() override { }
void Read() override;
bool IdleLogout = false;
};
class LogoutResponse final : public ServerPacket
@@ -494,11 +496,9 @@ namespace WorldPackets
class LogoutComplete final : public ServerPacket
{
public:
LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 2) { }
LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 0) { }
WorldPacket const* Write() override;
ObjectGuid SwitchToCharacter;
WorldPacket const* Write() override { return &_worldPacket; }
};
class LogoutCancel final : public ClientPacket
@@ -145,6 +145,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c
data << int32(bracket.SeasonPlayed);
data << int32(bracket.SeasonWon);
data << int32(bracket.WeeklyBestRating);
data << int32(bracket.Unk710);
data << uint8(bracket.Bracket);
return data;
@@ -126,6 +126,7 @@ namespace WorldPackets
int32 SeasonPlayed = 0;
int32 SeasonWon = 0;
int32 WeeklyBestRating = 0;
int32 Unk710 = 0;
uint8 Bracket = 0;
};
+1 -1
View File
@@ -653,7 +653,7 @@ namespace WorldPackets
void Read() override;
std::vector<std::unique_ptr<CUFProfile>> CUFProfiles;
Array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> CUFProfiles;
};
class LoadCUFProfiles final : public ServerPacket
@@ -658,6 +658,7 @@ WorldPacket const* WorldPackets::Movement::MoveSetCollisionHeight::Write()
_worldPacket << float(Height);
_worldPacket << float(Scale);
_worldPacket << uint32(MountDisplayID);
_worldPacket << int32(ScaleDuration);
_worldPacket.WriteBits(Reason, 2);
_worldPacket.FlushBits();
@@ -413,6 +413,7 @@ namespace WorldPackets
uint32 MountDisplayID = 0;
UpdateCollisionHeightReason Reason = UPDATE_COLLISION_HEIGHT_MOUNT;
uint32 SequenceIndex = 0;
int32 ScaleDuration = 0;
float Height = 1.0f;
};
@@ -47,7 +47,6 @@ void WorldPackets::Party::PartyInviteClient::Read()
_worldPacket >> PartyIndex;
_worldPacket >> ProposedRoles;
_worldPacket >> TargetGUID;
_worldPacket >> TargetCfgRealmID;
targetNameLen = _worldPacket.ReadBits(9);
targetRealmLen = _worldPacket.ReadBits(9);
@@ -419,6 +418,7 @@ WorldPacket const* WorldPackets::Party::GroupNewLeader::Write()
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo const& playerInfo)
{
data.WriteBits(playerInfo.Name.size(), 6);
data.WriteBit(playerInfo.FromSocialQueue);
data << playerInfo.GUID;
data << uint8(playerInfo.Status);
data << uint8(playerInfo.Subgroup);
@@ -49,7 +49,6 @@ namespace WorldPackets
int8 PartyIndex = 0;
int32 ProposedRoles = 0;
int32 TargetCfgRealmID = 0;
std::string TargetName;
std::string TargetRealm;
ObjectGuid TargetGUID;
@@ -492,6 +491,7 @@ namespace WorldPackets
uint8 Subgroup = 0u;
uint8 Flags = 0u;
uint8 RolesAssigned = 0u;
bool FromSocialQueue = false;
};
struct PartyLFGInfo
@@ -38,6 +38,7 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write()
_worldPacket << int32(cooldown.SpellID);
_worldPacket << int32(cooldown.Duration);
_worldPacket << int32(cooldown.CategoryDuration);
_worldPacket << float(cooldown.ModRate);
_worldPacket << uint16(cooldown.Category);
}
@@ -45,6 +46,7 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write()
{
_worldPacket << int32(history.CategoryID);
_worldPacket << int32(history.RecoveryTime);
_worldPacket << float(history.ChargeModRate);
_worldPacket << int8(history.ConsumedCharges);
}
@@ -83,6 +83,7 @@ namespace WorldPackets
int32 SpellID = 0;
int32 Duration = 0;
int32 CategoryDuration = 0;
float ModRate = 1.0f;
uint16 Category = 0;
};
@@ -90,6 +91,7 @@ namespace WorldPackets
{
int32 CategoryID = 0;
int32 RecoveryTime = 0;
float ChargeModRate = 1.0f;
int8 ConsumedCharges = 0;
};
@@ -161,6 +161,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << int32(questObjective.ObjectID);
_worldPacket << int32(questObjective.Amount);
_worldPacket << uint32(questObjective.Flags);
_worldPacket << uint32(questObjective.Flags2);
_worldPacket << float(questObjective.ProgressBarWeight);
_worldPacket << int32(questObjective.VisualEffects.size());
@@ -645,6 +645,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCooldownStru
{
data << uint32(cooldown.SrecID);
data << uint32(cooldown.ForcedCooldown);
data << float(cooldown.ModRate);
return data;
}
@@ -666,6 +667,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHistoryEntry
data << uint32(historyEntry.Category);
data << int32(historyEntry.RecoveryTime);
data << int32(historyEntry.CategoryRecoveryTime);
data << float(historyEntry.ModRate);
data.WriteBit(historyEntry.unused622_1.is_initialized());
data.WriteBit(historyEntry.unused622_2.is_initialized());
data.WriteBit(historyEntry.OnHold);
@@ -709,6 +711,7 @@ WorldPacket const* WorldPackets::Spells::SetSpellCharges::Write()
_worldPacket << int32(Category);
_worldPacket << uint32(NextRecoveryTime);
_worldPacket << uint8(ConsumedCharges);
_worldPacket << float(ChargeModRate);
_worldPacket.WriteBit(IsPet);
_worldPacket.FlushBits();
@@ -719,6 +722,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellChargeEntry
{
data << uint32(chargeEntry.Category);
data << uint32(chargeEntry.NextRecoveryTime);
data << float(chargeEntry.ChargeModRate);
data << uint8(chargeEntry.ConsumedCharges);
return data;
}
@@ -821,7 +825,7 @@ WorldPacket const* WorldPackets::Spells::ResurrectRequest::Write()
_worldPacket << uint32(ResurrectOffererVirtualRealmAddress);
_worldPacket << uint32(PetNumber);
_worldPacket << int32(SpellID);
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.WriteBits(Name.length(), 11);
_worldPacket.WriteBit(UseTimer);
_worldPacket.WriteBit(Sickness);
_worldPacket.FlushBits();
@@ -639,6 +639,7 @@ namespace WorldPackets
uint32 SrecID = 0;
uint32 ForcedCooldown = 0;
float ModRate = 1.0f;
};
class SpellCooldown : public ServerPacket
@@ -660,6 +661,7 @@ namespace WorldPackets
uint32 Category = 0;
int32 RecoveryTime = 0;
int32 CategoryRecoveryTime = 0;
float ModRate = 1.0f;
bool OnHold = false;
Optional<uint32> unused622_1; ///< This field is not used for anything in the client in 6.2.2.20444
Optional<uint32> unused622_2; ///< This field is not used for anything in the client in 6.2.2.20444
@@ -707,12 +709,14 @@ namespace WorldPackets
uint32 Category = 0;
uint32 NextRecoveryTime = 0;
uint8 ConsumedCharges = 0;
float ChargeModRate = 1.0f;
};
struct SpellChargeEntry
{
uint32 Category = 0;
uint32 NextRecoveryTime = 0;
float ChargeModRate = 1.0f;
uint8 ConsumedCharges = 0;
};
@@ -49,21 +49,35 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized());
_worldPacket.FlushBits();
if (EuropaTicketSystemStatus)
{
_worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->BugsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->ComplaintsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->SuggestionsEnabled);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.MaxTries);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.PerMilliseconds);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.TryCount);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.LastResetTimeBeforeNow);
_worldPacket.WriteBit(QuickJoinConfig.ToastsDisabled);
_worldPacket << float(QuickJoinConfig.ToastDuration);
_worldPacket << float(QuickJoinConfig.DelayDuration);
_worldPacket << float(QuickJoinConfig.QueueMultiplier);
_worldPacket << float(QuickJoinConfig.PlayerMultiplier);
_worldPacket << float(QuickJoinConfig.PlayerFriendValue);
_worldPacket << float(QuickJoinConfig.PlayerGuildValue);
_worldPacket << float(QuickJoinConfig.ThrottleInitialThreshold);
_worldPacket << float(QuickJoinConfig.ThrottleDecayTime);
_worldPacket << float(QuickJoinConfig.ThrottlePrioritySpike);
_worldPacket << float(QuickJoinConfig.ThrottleMinThreshold);
_worldPacket << float(QuickJoinConfig.ThrottlePvPPriorityNormal);
_worldPacket << float(QuickJoinConfig.ThrottlePvPPriorityLow);
_worldPacket << float(QuickJoinConfig.ThrottlePvPHonorThreshold);
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityDefault);
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityAbove);
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityBelow);
_worldPacket << float(QuickJoinConfig.ThrottleLfgListIlvlScalingAbove);
_worldPacket << float(QuickJoinConfig.ThrottleLfgListIlvlScalingBelow);
_worldPacket << float(QuickJoinConfig.ThrottleRfPriorityAbove);
_worldPacket << float(QuickJoinConfig.ThrottleRfIlvlScalingAbove);
_worldPacket << float(QuickJoinConfig.ThrottleDfMaxItemLevel);
_worldPacket << float(QuickJoinConfig.ThrottleDfBestPriority);
}
if (SessionAlert)
@@ -80,6 +94,19 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size());
}
if (EuropaTicketSystemStatus)
{
_worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->BugsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->ComplaintsEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus->SuggestionsEnabled);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.MaxTries);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.PerMilliseconds);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.TryCount);
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.LastResetTimeBeforeNow);
}
return &_worldPacket;
}
@@ -94,6 +121,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(IsExpansionPreorderInStore);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(false); // not accessed in handler
_worldPacket.WriteBit(TrialBoostEnabled);
_worldPacket.FlushBits();
@@ -52,6 +52,33 @@ namespace WorldPackets
int32 DisplayTime = 0;
};
struct SocialQueueConfig
{
bool ToastsDisabled = false;
float ToastDuration = 0.0f;
float DelayDuration = 0.0f;
float QueueMultiplier = 0.0f;
float PlayerMultiplier = 0.0f;
float PlayerFriendValue = 0.0f;
float PlayerGuildValue = 0.0f;
float ThrottleInitialThreshold = 0.0f;
float ThrottleDecayTime = 0.0f;
float ThrottlePrioritySpike = 0.0f;
float ThrottleMinThreshold = 0.0f;
float ThrottlePvPPriorityNormal = 0.0f;
float ThrottlePvPPriorityLow = 0.0f;
float ThrottlePvPHonorThreshold = 0.0f;
float ThrottleLfgListPriorityDefault = 0.0f;
float ThrottleLfgListPriorityAbove = 0.0f;
float ThrottleLfgListPriorityBelow = 0.0f;
float ThrottleLfgListIlvlScalingAbove = 0.0f;
float ThrottleLfgListIlvlScalingBelow = 0.0f;
float ThrottleRfPriorityAbove = 0.0f;
float ThrottleRfIlvlScalingAbove = 0.0f;
float ThrottleDfMaxItemLevel = 0.0f;
float ThrottleDfBestPriority = 0.0f;
};
FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { }
WorldPacket const* Write() override;
@@ -85,8 +112,10 @@ namespace WorldPackets
bool TutorialsEnabled = false;
bool NPETutorialsEnabled = false;
bool KioskModeEnabled = false;
bool CompetitiveModeEnabled = false;
Optional<std::vector<uint8>> RaceClassExpansionLevels;
SocialQueueConfig QuickJoinConfig;
};
class FeatureSystemStatusGlueScreen final : public ServerPacket
@@ -105,6 +134,7 @@ namespace WorldPackets
bool WillKickFromWorld = false; // NYI
bool IsExpansionPreorderInStore = false; // NYI
bool KioskModeEnabled = false; // NYI
bool CompetitiveModeEnabled = false; // NYI
bool TrialBoostEnabled = false; // NYI
int32 TokenPollTimeSeconds = 0; // NYI
int32 TokenRedeemIndex = 0; // NYI
@@ -29,6 +29,9 @@ WorldPacket const* WorldPackets::Totem::TotemCreated::Write()
_worldPacket << Totem;
_worldPacket << int32(Duration);
_worldPacket << int32(SpellID);
_worldPacket << float(TimeMod);
_worldPacket.WriteBit(CannotDismiss);
_worldPacket.FlushBits();
return &_worldPacket;
}
@@ -47,6 +47,8 @@ namespace WorldPackets
int32 SpellID = 0;
int32 Duration = 0;
int8 Slot = 0;
float TimeMod = 1.0f;
bool CannotDismiss = false;
};
class TotemMoved final : public ServerPacket
+2 -3
View File
@@ -795,7 +795,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_TWITTER_CONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_DISCONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TWITTER_POST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUITimeRequest);
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleUITimeRequest);
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode);
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode);
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode);
@@ -979,7 +979,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_EVENT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_NUM_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1533,7 +1532,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -315,7 +315,7 @@ void WorldSession::LogUnexpectedOpcode(WorldPacket* packet, const char* status,
}
/// Logging helper for unexpected opcodes
void WorldSession::LogUnprocessedTail(WorldPacket* packet)
void WorldSession::LogUnprocessedTail(WorldPacket const* packet)
{
if (!sLog->ShouldLog("network.opcode", LOG_LEVEL_TRACE) || packet->rpos() >= packet->wpos())
return;
+1 -1
View File
@@ -1113,7 +1113,7 @@ class TC_GAME_API WorldSession
void Handle_NULL(WorldPackets::Null& null); // not used
void Handle_EarlyProccess(WorldPacket& recvPacket); // just mark packets processed in WorldSocket::OnRead
void LogUnprocessedTail(WorldPacket* packet);
void LogUnprocessedTail(WorldPacket const* packet);
void HandleCharEnum(PreparedQueryResult result);
void HandleCharEnumOpcode(WorldPackets::Character::EnumCharacters& /*enumCharacters*/);