aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/ArenaTeam.cpp17
-rw-r--r--src/server/game/Entities/Player/Player.cpp71
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp35
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp2
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp36
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp46
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h59
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp49
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h56
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h38
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp1
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h1
15 files changed, 286 insertions, 142 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp
index 2eebf5ca534..dcd0cce55aa 100644
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ -102,20 +102,13 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid)
playerClass = player->getClass();
playerName = player->GetName();
}
- else
+ else if (CharacterInfo const* characterInfo = sWorld->GetCharacterInfo(playerGuid))
{
- // 0 1
- // SELECT name, class FROM characters WHERE guid = ?
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_NAME_CLASS);
- stmt->setUInt64(0, playerGuid.GetCounter());
- PreparedQueryResult result = CharacterDatabase.Query(stmt);
-
- if (!result)
- return false;
-
- playerName = (*result)[0].GetString();
- playerClass = (*result)[1].GetUInt8();
+ playerName = characterInfo->Name;
+ playerClass = characterInfo->Class;
}
+ else
+ return false;
// Check if player is already in a similar arena team
if ((player && player->GetArenaTeamId(GetSlot())) || Player::GetArenaTeamIdFromDB(playerGuid, GetType()) != 0)
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 42880a4b06b..c1088c0a406 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -73,6 +73,7 @@
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellMgr.h"
+#include "SpellPackets.h"
#include "Transport.h"
#include "UpdateData.h"
#include "UpdateFieldFlags.h"
@@ -3157,73 +3158,25 @@ void Player::InitStatsForLevel(bool reapplyMods)
pet->SynchronizeLevelWithOwner();
}
-void Player::SendInitialSpells()
+void Player::SendKnownSpells()
{
- time_t curTime = time(NULL);
- time_t infTime = curTime + infinityCooldownDelayCheck;
-
- uint16 spellCount = 0;
-
- WorldPacket data(SMSG_INITIAL_SPELLS, (1+2+4*m_spells.size()+2+m_spellCooldowns.size()*(2+2+2+4+4)));
- data << uint8(0);
-
- size_t countPos = data.wpos();
- data << uint16(spellCount); // spell count placeholder
-
- for (PlayerSpellMap::const_iterator itr = m_spells.begin(); itr != m_spells.end(); ++itr)
- {
- if (itr->second->state == PLAYERSPELL_REMOVED)
- continue;
-
- if (!itr->second->active || itr->second->disabled)
- continue;
-
- data << uint32(itr->first);
- data << uint16(0); // it's not slot id
-
- ++spellCount;
- }
-
- data.put<uint16>(countPos, spellCount); // write real count value
+ WorldPackets::Spell::SendKnownSpells knownSpells;
+ knownSpells.InitialLogin = false; /// @todo
- uint16 spellCooldowns = m_spellCooldowns.size();
- data << uint16(spellCooldowns);
- for (SpellCooldowns::const_iterator itr = m_spellCooldowns.begin(); itr != m_spellCooldowns.end(); ++itr)
+ for (PlayerSpellMap::value_type const& spell : m_spells)
{
- SpellInfo const* sEntry = sSpellMgr->GetSpellInfo(itr->first);
- if (!sEntry)
+ if (spell.second->state == PLAYERSPELL_REMOVED)
continue;
- data << uint32(itr->first);
-
- data << uint32(itr->second.itemid); // cast item id
- data << uint16(sEntry->GetCategory()); // spell category
-
- // send infinity cooldown in special format
- if (itr->second.end >= infTime)
- {
- data << uint32(1); // cooldown
- data << uint32(0x80000000); // category cooldown
+ if (!spell.second->active || spell.second->disabled)
continue;
- }
- time_t cooldown = itr->second.end > curTime ? (itr->second.end-curTime)*IN_MILLISECONDS : 0;
-
- if (sEntry->GetCategory()) // may be wrong, but anyway better than nothing...
- {
- data << uint32(0); // cooldown
- data << uint32(cooldown); // category cooldown
- }
- else
- {
- data << uint32(cooldown); // cooldown
- data << uint32(0); // category cooldown
- }
+ knownSpells.KnownSpells.push_back(spell.first);
}
- GetSession()->SendPacket(&data);
+ SendDirectMessage(knownSpells.Write());
- TC_LOG_DEBUG("network", "CHARACTER: Sent Initial Spells");
+ TC_LOG_DEBUG("network", "CHARACTER: Sent Known Spells");
}
void Player::RemoveMail(uint32 id)
@@ -23044,6 +22997,8 @@ void Player::SendInitialPacketsBeforeAddToMap()
// guild bank list wtf?
+ GetSession()->SendSpellCategoryCooldowns();
+
// Homebind
WorldPacket data(SMSG_BINDPOINTUPDATE, 5*4);
data << m_homebindX << m_homebindY << m_homebindZ;
@@ -23076,7 +23031,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
data << uint32(GetMap()->GetDifficulty());
GetSession()->SendPacket(&data);
- SendInitialSpells();
+ SendKnownSpells();
data.Initialize(SMSG_SEND_UNLEARN_SPELLS, 4);
data << uint32(0); // count, for (count) uint32;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 11167097e89..0f02be336a4 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1803,7 +1803,7 @@ class Player : public Unit, public GridObject<Player>
bool IsCurrentSpecMasterySpell(SpellInfo const* spellInfo) const;
void SendProficiency(ItemClass itemClass, uint32 itemSubclassMask);
- void SendInitialSpells();
+ void SendKnownSpells();
bool AddSpell(uint32 spellId, bool active, bool learning, bool dependent, bool disabled, bool loading = false, bool fromSkill = false);
void LearnSpell(uint32 spell_id, bool dependent, bool fromSkill = false);
void RemoveSpell(uint32 spell_id, bool disabled = false, bool learn_low_rank = true);
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 7d892371931..2c294fdf38d 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -854,35 +854,14 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
SendPacket(accountDataTimes.Write());
- bool featureBit4 = true;
- WorldPacket data(SMSG_FEATURE_SYSTEM_STATUS, 7); // checked in 4.2.2
- data << uint8(2); // unknown value
- data << uint32(1);
- data << uint32(1);
- data << uint32(2);
- data << uint32(0);
- data.WriteBit(1);
- data.WriteBit(1);
- data.WriteBit(0);
- data.WriteBit(featureBit4);
- data.WriteBit(0);
- data.WriteBit(0);
- data.FlushBits();
- if (featureBit4)
+ /// Send FeatureSystemStatus
{
- data << uint32(1);
- data << uint32(0);
- data << uint32(10);
- data << uint32(60);
- }
+ WorldPackets::System::FeatureSystemStatus features;
+ features.CharUndeleteEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_CHARACTER_UNDELETE_ENABLED);
+ features.BpayStoreEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_BPAY_STORE_ENABLED);
- //if (featureBit5)
- //{
- // data << uint32(0);
- // data << uint32(0);
- // data << uint32(0);
- //}
- SendPacket(&data);
+ SendPacket(features.Write());
+ }
// Send MOTD
{
@@ -930,7 +909,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
pCurrChar->SetGuildLevel(0);
}
- data.Initialize(SMSG_LEARNED_DANCE_MOVES, 4+4);
+ WorldPacket data(SMSG_LEARNED_DANCE_MOVES, 4+4);
data << uint64(0);
SendPacket(&data);
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 46ff540ef04..dda5cbf0f13 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -687,7 +687,7 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData)
/********************/
// everything's fine, do it
- WorldPacket data(MSG_MINIMAP_PING, (8+4+4));
+ WorldPacket data(SMSG_MINIMAP_PING, (8+4+4));
data << GetPlayer()->GetGUID();
data << float(x);
data << float(y);
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 7f76f13495f..424276966d4 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -35,6 +35,7 @@
#include "SpellAuraEffects.h"
#include "Player.h"
#include "Config.h"
+#include "SpellPackets.h"
void WorldSession::HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlags, SpellCastTargets& targets)
{
@@ -754,25 +755,28 @@ void WorldSession::HandleUpdateProjectilePosition(WorldPacket& recvPacket)
void WorldSession::HandleRequestCategoryCooldowns(WorldPacket& /*recvPacket*/)
{
- std::map<uint32, int32> categoryMods;
+ SendSpellCategoryCooldowns();
+}
+
+void WorldSession::SendSpellCategoryCooldowns()
+{
+ WorldPackets::Spell::CategoryCooldown cooldowns;
+
Unit::AuraEffectList const& categoryCooldownAuras = _player->GetAuraEffectsByType(SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN);
- for (Unit::AuraEffectList::const_iterator itr = categoryCooldownAuras.begin(); itr != categoryCooldownAuras.end(); ++itr)
+ for (AuraEffect* aurEff : categoryCooldownAuras)
{
- std::map<uint32, int32>::iterator cItr = categoryMods.find((*itr)->GetMiscValue());
- if (cItr == categoryMods.end())
- categoryMods[(*itr)->GetMiscValue()] = (*itr)->GetAmount();
- else
- cItr->second += (*itr)->GetAmount();
- }
+ uint32 categoryId = aurEff->GetMiscValue();
+ auto cItr = std::find_if(cooldowns.CategoryCooldowns.begin(), cooldowns.CategoryCooldowns.end(),
+ [categoryId](WorldPackets::Spell::CategoryCooldown::CategoryCooldownInfo const& cooldown)
+ {
+ return cooldown.Category == categoryId;
+ });
- WorldPacket data(SMSG_SPELL_CATEGORY_COOLDOWN, 11);
- data.WriteBits(categoryMods.size(), 23);
- data.FlushBits();
- for (std::map<uint32, int32>::const_iterator itr = categoryMods.begin(); itr != categoryMods.end(); ++itr)
- {
- data << uint32(itr->first);
- data << int32(-itr->second);
+ if (cItr == cooldowns.CategoryCooldowns.end())
+ cooldowns.CategoryCooldowns.emplace_back(aurEff->GetMiscValue(), -aurEff->GetAmount());
+ else
+ cItr->ModCooldown -= aurEff->GetAmount();
}
- SendPacket(&data);
+ SendPacket(cooldowns.Write());
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
new file mode 100644
index 00000000000..57c8bcb3e3d
--- /dev/null
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "SpellPackets.h"
+
+WorldPacket const* WorldPackets::Spell::CategoryCooldown::Write()
+{
+ _worldPacket.reserve(4 + 8 * CategoryCooldowns.size());
+
+ _worldPacket << uint32(CategoryCooldowns.size());
+
+ for (CategoryCooldownInfo const& cooldown : CategoryCooldowns)
+ {
+ _worldPacket << uint32(cooldown.Category);
+ _worldPacket << int32(cooldown.ModCooldown);
+ }
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Spell::SendKnownSpells::Write()
+{
+ _worldPacket.reserve(1 + 4 * KnownSpells.size());
+
+ _worldPacket.WriteBit(InitialLogin);
+ _worldPacket << uint32(KnownSpells.size());
+
+ for (uint32 spellId : KnownSpells)
+ _worldPacket << uint32(spellId);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
new file mode 100644
index 00000000000..6c76ca53c75
--- /dev/null
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SpellPackets_h__
+#define SpellPackets_h__
+
+#include "Packet.h"
+
+namespace WorldPackets
+{
+ namespace Spell
+ {
+ class CategoryCooldown final : public ServerPacket
+ {
+ public:
+ struct CategoryCooldownInfo
+ {
+ CategoryCooldownInfo(uint32 category, int32 cooldown)
+ : Category(category), ModCooldown(cooldown) { }
+
+ uint32 Category = 0;
+ int32 ModCooldown = 0;
+ };
+
+ CategoryCooldown() : ServerPacket(SMSG_SPELL_CATEGORY_COOLDOWN, 4) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<CategoryCooldownInfo> CategoryCooldowns;
+ };
+
+ class SendKnownSpells final : public ServerPacket
+ {
+ public:
+ SendKnownSpells() : ServerPacket(SMSG_INITIAL_SPELLS, 5) { }
+
+ WorldPacket const* Write() override;
+
+ bool InitialLogin = false;
+ std::vector<uint32> KnownSpells;
+ };
+ }
+}
+
+#endif // SpellPackets_h__
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 8181558cae7..7c8ecce3db7 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -17,6 +17,55 @@
#include "SystemPackets.h"
+WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
+{
+ _worldPacket << uint8(ComplaintStatus);
+
+ _worldPacket << uint32(ScrollOfResurrectionRequestsRemaining);
+ _worldPacket << uint32(ScrollOfResurrectionMaxRequestsPerDay);
+ _worldPacket << uint32(CfgRealmID);
+ _worldPacket << int32(CfgRealmRecID);
+
+ _worldPacket.WriteBit(VoiceEnabled);
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.HasValue);
+ _worldPacket.WriteBit(ScrollOfResurrectionEnabled);
+ _worldPacket.WriteBit(BpayStoreEnabled);
+ _worldPacket.WriteBit(BpayStoreAvailable);
+ _worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
+ _worldPacket.WriteBit(ItemRestorationButtonEnabled);
+ _worldPacket.WriteBit(BrowserEnabled);
+ _worldPacket.WriteBit(SessionAlert.HasValue);
+ _worldPacket.WriteBit(RecruitAFriendSendingEnabled);
+ _worldPacket.WriteBit(CharUndeleteEnabled);
+ _worldPacket.WriteBit(UnkBit21);
+ _worldPacket.WriteBit(UnkBit22);
+ _worldPacket.WriteBit(UnkBit90);
+
+ if (EuropaTicketSystemStatus.HasValue)
+ {
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.value.UnkBit0);
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.value.UnkBit1);
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.value.TicketSystemEnabled);
+ _worldPacket.WriteBit(EuropaTicketSystemStatus.value.SubmitBugEnabled);
+
+ _worldPacket << uint32(EuropaTicketSystemStatus.value.ThrottleState.MaxTries);
+ _worldPacket << uint32(EuropaTicketSystemStatus.value.ThrottleState.PerMilliseconds);
+ _worldPacket << uint32(EuropaTicketSystemStatus.value.ThrottleState.TryCount);
+ _worldPacket << uint32(EuropaTicketSystemStatus.value.ThrottleState.LastResetTimeBeforeNow);
+ }
+
+ if (SessionAlert.HasValue)
+ {
+ _worldPacket << int32(SessionAlert.value.Delay);
+ _worldPacket << int32(SessionAlert.value.Period);
+ _worldPacket << int32(SessionAlert.value.DisplayTime);
+ }
+
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
{
_worldPacket.WriteBit(BpayStoreEnabled);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index a2c988ac114..37b85a48b2f 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -24,6 +24,60 @@ namespace WorldPackets
{
namespace System
{
+ class FeatureSystemStatus final : public ServerPacket
+ {
+ public:
+ struct SavedThrottleObjectState
+ {
+ uint32 MaxTries = 0;
+ uint32 PerMilliseconds = 0;
+ uint32 TryCount = 0;
+ uint32 LastResetTimeBeforeNow = 0;
+ };
+
+ struct EuropaTicketConfig
+ {
+ bool UnkBit0 = false;
+ bool UnkBit1 = false;
+ bool TicketSystemEnabled = false;
+ bool SubmitBugEnabled = false;
+
+ SavedThrottleObjectState ThrottleState;
+ };
+
+ struct SessionAlertConfig
+ {
+ int32 Delay = 0;
+ int32 Period = 0;
+ int32 DisplayTime = 0;
+ };
+
+ FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { }
+
+ WorldPacket const* Write() override;
+
+ bool VoiceEnabled = false;
+ bool BrowserEnabled = false;
+ bool BpayStoreAvailable = false;
+ bool RecruitAFriendSendingEnabled = false;
+ bool BpayStoreEnabled = false;
+ Optional<SessionAlertConfig> SessionAlert;
+ uint32 ScrollOfResurrectionMaxRequestsPerDay = 0;
+ bool ScrollOfResurrectionEnabled = false;
+ Optional<EuropaTicketConfig> EuropaTicketSystemStatus;
+ uint32 ScrollOfResurrectionRequestsRemaining = 0;
+ uint32 CfgRealmID = 0;
+ uint8 ComplaintStatus = 0;
+ int32 CfgRealmRecID = 0;
+ bool ItemRestorationButtonEnabled = false;
+ bool CharUndeleteEnabled = false; ///< Implemented
+ bool BpayStoreDisabledByParentalControls = false;
+
+ bool UnkBit21 = false;
+ bool UnkBit22 = false;
+ bool UnkBit90 = false;
+ };
+
class FeatureSystemStatusGlueScreen final : public ServerPacket
{
public:
@@ -33,7 +87,7 @@ namespace WorldPackets
bool BpayStoreAvailable = false; // NYI
bool BpayStoreDisabledByParentalControls = false; // NYI
- bool CharUndeleteEnabled = false; // NYI
+ bool CharUndeleteEnabled = false;
bool BpayStoreEnabled = false; // NYI
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 9f9f11e8fa2..556560c5e70 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -415,6 +415,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_MESSAGECHAT_WHISPER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MESSAGECHAT_YELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MINIGAME_MOVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MINIMAP_PING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNTSPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_CHNG_TRANSPORT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_FALL_RESET, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
@@ -525,6 +526,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_RANDOM_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode );
DEFINE_HANDLER(CMSG_RANDOMIZE_CHAR_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_READ_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_NAME_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_SPLIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_RECLAIM_CORPSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReclaimCorpseOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REFORGE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleReforgeItemOpcode );
@@ -652,7 +654,6 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(MSG_CORPSE_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCorpseQueryOpcode );
DEFINE_OPCODE_HANDLER_OLD(MSG_INSPECT_ARENA_TEAMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectArenaTeamsOpcode );
DEFINE_OPCODE_HANDLER_OLD(MSG_LIST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode );
- DEFINE_OPCODE_HANDLER_OLD(MSG_MINIMAP_PING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_CHARM_TELEPORT_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TELEPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TELEPORT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveTeleportAck );
@@ -881,7 +882,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEIGN_DEATH_RESISTED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_ESCAPED, STATUS_UNHANDLED);
@@ -980,7 +981,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIALIZE_FACTIONS, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIAL_SETUP, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIAL_SPELLS, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIAL_SPELLS, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INIT_CURRENCY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INIT_WORLD_STATES, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSPECT_HONOR_STATS, STATUS_UNHANDLED);
@@ -1025,7 +1026,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_TELEPORT_DENIED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_UPDATE_SEARCH, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_UPDATE_STATUS, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_LFG_UPDATE_STATUS_NONE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_APPLICANT_LIST_UPDATED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_APPLICATIONS_LIST_CHANGED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_BROWSE_UPDATED, STATUS_UNHANDLED);
@@ -1062,6 +1062,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MESSAGE_BOX, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIGAME_SETUP, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIGAME_STATE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIMAP_PING, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRRORIMAGE_DATA, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_UNHANDLED);
@@ -1215,6 +1216,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BG_STATS, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_FAILED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_OK, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_SPLIT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REAL_GROUP_UPDATE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECEIVED_MAIL, STATUS_UNHANDLED);
@@ -1280,7 +1282,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELLNONMELEEDAMAGELOG, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELLORDAMAGE_IMMUNE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELLSTEALLOG, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CATEGORY_COOLDOWN, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CATEGORY_COOLDOWN, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_COOLDOWN, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_UNHANDLED);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index c5e92afa690..65c33537ec6 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -91,7 +91,7 @@ enum OpcodeClient : uint32
CMSG_BANKER_ACTIVATE = 0x1B24,
CMSG_BATTLEFIELD_JOIN = 0xBADD,
CMSG_BATTLEFIELD_LEAVE = 0xBADD,
- CMSG_BATTLEFIELD_LIST = 0xBADD,
+ CMSG_BATTLEFIELD_LIST = 0x03B1,
CMSG_BATTLEFIELD_MGR_ENTRY_INVITE_RESPONSE = 0xBADD,
CMSG_BATTLEFIELD_MGR_EXIT_REQUEST = 0xBADD,
CMSG_BATTLEFIELD_MGR_QUEUE_INVITE_RESPONSE = 0xBADD,
@@ -340,7 +340,7 @@ enum OpcodeClient : uint32
CMSG_LOOT = 0x01B1,
CMSG_LOOT_CURRENCY = 0xBADD,
CMSG_LOOT_MASTER_GIVE = 0xBADD,
- CMSG_LOOT_METHOD = 0xBADD,
+ CMSG_LOOT_METHOD = 0x0729,
CMSG_LOOT_MONEY = 0xBADD,
CMSG_LOOT_RELEASE = 0xBADD,
CMSG_LOOT_ROLL = 0xBADD,
@@ -371,6 +371,7 @@ enum OpcodeClient : uint32
CMSG_MESSAGECHAT_WHISPER = 0x1829,
CMSG_MESSAGECHAT_YELL = 0x1161,
CMSG_MINIGAME_MOVE = 0xBADD,
+ CMSG_MINIMAP_PING = 0x0837,
CMSG_MOUNTSPECIAL_ANIM = 0xBADD,
CMSG_MOVE_CHARM_TELEPORT_CHEAT = 0xBADD,
CMSG_MOVE_CHNG_TRANSPORT = 0xBADD,
@@ -463,7 +464,7 @@ enum OpcodeClient : uint32
CMSG_PLAYER_VEHICLE_ENTER = 0xBADD,
CMSG_PLAY_DANCE = 0xBADD,
CMSG_PUSHQUESTTOPARTY = 0xBADD,
- CMSG_PVP_LOG_DATA = 0xBADD,
+ CMSG_PVP_LOG_DATA = 0x08B5,
CMSG_QUERY_BATTLEFIELD_STATE = 0xBADD,
CMSG_QUERY_GUILD_MEMBERS_FOR_RECIPE = 0xBADD,
CMSG_QUERY_GUILD_MEMBER_RECIPES = 0xBADD,
@@ -493,6 +494,7 @@ enum OpcodeClient : uint32
CMSG_RANDOM_ROLL = 0x12AA,
CMSG_RANDOMIZE_CHAR_NAME = 0x1981,
CMSG_READ_ITEM = 0xBADD,
+ CMSG_REALM_NAME_QUERY = 0x1189,
CMSG_REALM_SPLIT = 0xBADD,
CMSG_RECLAIM_CORPSE = 0xBADD,
CMSG_REFORGE_ITEM = 0xBADD,
@@ -638,7 +640,6 @@ enum OpcodeClient : uint32
MSG_GM_SUMMON = 0xBADD,
MSG_INSPECT_ARENA_TEAMS = 0xBADD,
MSG_LIST_STABLED_PETS = 0xBADD,
- MSG_MINIMAP_PING = 0xBADD,
MSG_MOVE_CHARM_TELEPORT_CHEAT = 0xBADD,
MSG_MOVE_SET_ALL_SPEED_CHEAT = 0xBADD,
MSG_MOVE_SET_FLIGHT_SPEED_CHEAT = 0xBADD,
@@ -757,13 +758,13 @@ enum OpcodeServer : uint32
SMSG_BATTLE_PET_JOURNAL = 0x19A2,
SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x01A3,
SMSG_BATTLE_PET_NAME_QUERY_RESPONSE = 0x09EC,
- SMSG_BINDER_CONFIRM = 0xBADD,
+ SMSG_BINDER_CONFIRM = 0x0B11,
SMSG_BINDPOINTUPDATE = 0x0A30,
SMSG_BINDZONEREPLY = 0xBADD,
SMSG_BREAK_TARGET = 0xBADD,
SMSG_BUY_BANK_SLOT_RESULT = 0xBADD,
- SMSG_BUY_FAILED = 0xBADD,
- SMSG_BUY_ITEM = 0xBADD,
+ SMSG_BUY_FAILED = 0x013A,
+ SMSG_BUY_ITEM = 0x0BD1,
SMSG_CALENDAR_ACTION_PENDING = 0xBADD,
SMSG_CALENDAR_ARENA_TEAM = 0xBADD,
SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0xBADD,
@@ -935,7 +936,7 @@ enum OpcodeServer : uint32
SMSG_GROUP_DECLINE = 0xBADD,
SMSG_GROUP_DESTROYED = 0xBADD,
SMSG_GROUP_INVITE = 0xBADD,
- SMSG_GROUP_LIST = 0xBADD,
+ SMSG_GROUP_LIST = 0x15BE,
SMSG_GROUP_SET_LEADER = 0xBADD,
SMSG_GROUP_SET_ROLE = 0xBADD,
SMSG_GROUP_UNINVITE = 0xBADD,
@@ -1033,7 +1034,7 @@ enum OpcodeServer : uint32
SMSG_LEVELUP_INFO = 0xBADD,
SMSG_LFG_BOOT_PROPOSAL_UPDATE = 0xBADD,
SMSG_LFG_DISABLED = 0xBADD,
- SMSG_LFG_JOIN_RESULT = 0xBADD,
+ SMSG_LFG_JOIN_RESULT = 0x0F72,
SMSG_LFG_OFFER_CONTINUE = 0xBADD,
SMSG_LFG_OPEN_FROM_GOSSIP = 0xBADD,
SMSG_LFG_PARTY_INFO = 0xBADD,
@@ -1047,8 +1048,7 @@ enum OpcodeServer : uint32
SMSG_LFG_TELEPORT_DENIED = 0xBADD,
SMSG_LFG_UPDATE_LIST = 0xBADD,
SMSG_LFG_UPDATE_SEARCH = 0xBADD,
- SMSG_LFG_UPDATE_STATUS = 0xBADD,
- SMSG_LFG_UPDATE_STATUS_NONE = 0xBADD,
+ SMSG_LFG_UPDATE_STATUS = 0x07F7,
SMSG_LF_GUILD_APPLICANT_LIST_UPDATED = 0xBADD,
SMSG_LF_GUILD_APPLICATIONS_LIST_CHANGED = 0xBADD,
SMSG_LF_GUILD_BROWSE_UPDATED = 0xBADD,
@@ -1063,14 +1063,14 @@ enum OpcodeServer : uint32
SMSG_LOGOUT_CANCEL_ACK = 0x0FAD,
SMSG_LOGOUT_COMPLETE = 0x0B21,
SMSG_LOGOUT_RESPONSE = 0x052D,
- SMSG_LOG_XPGAIN = 0xBADD,
+ SMSG_LOG_XPGAIN = 0x1B53,
SMSG_LOOT_ALL_PASSED = 0xBADD,
SMSG_LOOT_CLEAR_MONEY = 0xBADD,
SMSG_LOOT_CONTENTS = 0xBADD,
SMSG_LOOT_ITEM_NOTIFY = 0xBADD,
SMSG_LOOT_LIST = 0xBADD,
SMSG_LOOT_MASTER_LIST = 0xBADD,
- SMSG_LOOT_MONEY_NOTIFY = 0xBADD,
+ SMSG_LOOT_MONEY_NOTIFY = 0x12A9,
SMSG_LOOT_RELEASE_RESPONSE = 0xBADD,
SMSG_LOOT_REMOVED = 0xBADD,
SMSG_LOOT_RESPONSE = 0xBADD,
@@ -1088,6 +1088,7 @@ enum OpcodeServer : uint32
SMSG_MESSAGE_BOX = 0xBADD,
SMSG_MINIGAME_SETUP = 0xBADD,
SMSG_MINIGAME_STATE = 0xBADD,
+ SMSG_MINIMAP_PING = 0x07BA,
SMSG_MIRRORIMAGE_DATA = 0xBADD,
SMSG_MISSILE_CANCEL = 0xBADD,
SMSG_MODIFY_COOLDOWN = 0xBADD,
@@ -1211,13 +1212,13 @@ enum OpcodeServer : uint32
SMSG_PROPOSE_LEVEL_GRANT = 0xBADD,
SMSG_PUREMOUNT_CANCELLED_OBSOLETE = 0xBADD,
SMSG_PVP_CREDIT = 0xBADD,
- SMSG_PVP_LOG_DATA = 0xBADD,
+ SMSG_PVP_LOG_DATA = 0x1ECA,
SMSG_PVP_OPTIONS_ENABLED = 0xBADD,
SMSG_PVP_SEASON = 0x09E3,
SMSG_QUERY_QUESTS_COMPLETED_RESPONSE = 0xBADD,
SMSG_QUERY_TIME_RESPONSE = 0x1DB0,
SMSG_QUESTGIVER_OFFER_REWARD = 0xBADD,
- SMSG_QUESTGIVER_QUEST_COMPLETE = 0xBADD,
+ SMSG_QUESTGIVER_QUEST_COMPLETE = 0x1773,
SMSG_QUESTGIVER_QUEST_DETAILS = 0x15B3,
SMSG_QUESTGIVER_QUEST_FAILED = 0xBADD,
SMSG_QUESTGIVER_QUEST_INVALID = 0xBADD,
@@ -1248,6 +1249,7 @@ enum OpcodeServer : uint32
SMSG_RATED_BG_STATS = 0xBADD,
SMSG_READ_ITEM_FAILED = 0xBADD,
SMSG_READ_ITEM_OK = 0xBADD,
+ SMSG_REALM_QUERY_RESPONSE = 0x011D,
SMSG_REALM_SPLIT = 0xBADD,
SMSG_REAL_GROUP_UPDATE = 0xBADD,
SMSG_RECEIVED_MAIL = 0xBADD,
@@ -1277,7 +1279,7 @@ enum OpcodeServer : uint32
SMSG_SERVERTIME = 0xBADD,
SMSG_SERVER_FIRST_ACHIEVEMENT = 0xBADD,
SMSG_SERVER_INFO_RESPONSE = 0xBADD,
- SMSG_SERVER_MESSAGE = 0xBADD,
+ SMSG_SERVER_MESSAGE = 0x0683,
SMSG_SERVER_PERF = 0xBADD,
SMSG_SET_AI_ANIM_KIT = 0xBADD,
SMSG_SET_DF_FAST_LAUNCH_RESULT = 0xBADD,
@@ -1297,7 +1299,7 @@ enum OpcodeServer : uint32
SMSG_SET_PROJECTILE_POSITION = 0xBADD,
SMSG_SET_TIME_ZONE_INFORMATION = 0x153E,
SMSG_SET_VIGNETTE = 0x09AC,
- SMSG_SHOWTAXINODES = 0xBADD,
+ SMSG_SHOWTAXINODES = 0x12A1,
SMSG_SHOW_BANK = 0x0204,
SMSG_SHOW_MAILBOX = 0xBADD,
SMSG_SHOW_RATINGS = 0xBADD,
@@ -1436,7 +1438,7 @@ enum OpcodeServer : uint32
SMSG_WORLD_SERVER_INFO = 0x11AC,
SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0xBADD,
SMSG_XP_GAIN_ABORTED = 0xBADD,
- SMSG_ZONE_UNDER_ATTACK = 0xBADD,
+ SMSG_ZONE_UNDER_ATTACK = 0x1401
};
/// Player state
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7be4efbc46b..6e863b9e580 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -1032,6 +1032,9 @@ class WorldSession
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
void HandleObjectUpdateFailedOpcode(WorldPacket& recvPacket);
void HandleRequestCategoryCooldowns(WorldPacket& recvPacket);
+
+ void SendSpellCategoryCooldowns();
+
int32 HandleEnableNagleAlgorithm();
// Compact Unit Frames (4.x)
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 9c27f876054..18a79ae0ed2 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -167,7 +167,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_SEL_CHARACTER_DATA_BY_GUID, "SELECT account, name, level FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_DEL_ACCOUNT_INSTANCE_LOCK_TIMES, "DELETE FROM account_instance_times WHERE accountId = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_ACCOUNT_INSTANCE_LOCK_TIMES, "INSERT INTO account_instance_times (accountId, instanceId, releaseTime) VALUES (?, ?, ?)", CONNECTION_ASYNC);
- PrepareStatement(CHAR_SEL_CHARACTER_NAME_CLASS, "SELECT name, class FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_MATCH_MAKER_RATING, "SELECT matchMakerRating FROM character_arena_stats WHERE guid = ? AND slot = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_CHARACTER_COUNT, "SELECT account, COUNT(guid) FROM characters WHERE account = ? GROUP BY account", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_NAME_BY_GUID, "UPDATE characters SET name = ? WHERE guid = ?", CONNECTION_ASYNC);
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index 8755acaf302..3c9f5a53411 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -158,7 +158,6 @@ enum CharacterDatabaseStatements
CHAR_SEL_ACCOUNT_BY_GUID,
CHAR_DEL_ACCOUNT_INSTANCE_LOCK_TIMES,
CHAR_INS_ACCOUNT_INSTANCE_LOCK_TIMES,
- CHAR_SEL_CHARACTER_NAME_CLASS,
CHAR_SEL_MATCH_MAKER_RATING,
CHAR_SEL_CHARACTER_COUNT,
CHAR_UPD_NAME_BY_GUID,