aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-01-05 23:29:36 +0100
committerShauren <shauren.trinity@gmail.com>2016-05-20 23:39:39 +0200
commit91753a94b33b73185ebb0ef551c02bae422b1a46 (patch)
treeccf571fe97ac9de999353e15b8d87ae3dfadddc6 /src/server/game/Server
parent5287f70a4f5c308aec2fafeaf0c0d4dd6659f5e4 (diff)
Core/PacketIO: Updated character list packets for 7.x
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp91
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h26
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h3
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp16
5 files changed, 78 insertions, 70 deletions
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index d30779d49c2..dfa4bbb3bfa 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -24,11 +24,13 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
{
// 0 1 2 3 4 5 6 7
// "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.skin, characters.face, characters.hairStyle, "
- // 8 9 10 11 12 13 14 15
- // "characters.hairColor, characters.facialStyle, characters.level, characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, "
- // 16 17 18 19 20 21 22
+ // 8 9 10 11 12 13
+ // "characters.hairColor, characters.facialStyle, characters.customDisplay1, characters.customDisplay2, characters.customDisplay3, characters.level, "
+ // 14 15 16 17 18
+ // "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, "
+ // 19 20 21 22 23 24 25
// "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, "
- // 23 24 25 26
+ // 26 27 28 29
// "character_banned.guid, characters.slot, characters.logout_time, character_declinedname.genitive"
Guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64());
@@ -41,18 +43,21 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
HairStyle = fields[7].GetUInt8();
HairColor = fields[8].GetUInt8();
FacialHair = fields[9].GetUInt8();
- Level = fields[10].GetUInt8();
- ZoneId = int32(fields[11].GetUInt16());
- MapId = int32(fields[12].GetUInt16());
- PreLoadPosition.x = fields[13].GetFloat();
- PreLoadPosition.y = fields[14].GetFloat();
- PreLoadPosition.z = fields[15].GetFloat();
-
- if (ObjectGuid::LowType guildId = fields[16].GetUInt64())
+ CustomDisplay[0] = fields[10].GetUInt8();
+ CustomDisplay[1] = fields[11].GetUInt8();
+ CustomDisplay[2] = fields[12].GetUInt8();
+ Level = fields[13].GetUInt8();
+ ZoneId = int32(fields[14].GetUInt16());
+ MapId = int32(fields[15].GetUInt16());
+ PreLoadPosition.x = fields[16].GetFloat();
+ PreLoadPosition.y = fields[17].GetFloat();
+ PreLoadPosition.z = fields[18].GetFloat();
+
+ if (ObjectGuid::LowType guildId = fields[19].GetUInt64())
GuildGuid = ObjectGuid::Create<HighGuid::Guild>(guildId);
- uint32 playerFlags = fields[17].GetUInt32();
- uint32 atLoginFlags = fields[18].GetUInt16();
+ uint32 playerFlags = fields[20].GetUInt32();
+ uint32 atLoginFlags = fields[21].GetUInt16();
if (atLoginFlags & AT_LOGIN_RESURRECT)
playerFlags &= ~PLAYER_FLAGS_GHOST;
@@ -69,10 +74,10 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
if (atLoginFlags & AT_LOGIN_RENAME)
Flags |= CHARACTER_FLAG_RENAME;
- if (fields[23].GetUInt64())
+ if (fields[26].GetUInt64())
Flags |= CHARACTER_FLAG_LOCKED_BY_BILLING;
- if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[26].GetString().empty())
+ if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[29].GetString().empty())
Flags |= CHARACTER_FLAG_DECLINED;
if (atLoginFlags & AT_LOGIN_CUSTOMIZE)
@@ -88,10 +93,10 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
// show pet at selection character in character list only for non-ghost character
if (!(playerFlags & PLAYER_FLAGS_GHOST) && (Class == CLASS_WARLOCK || Class == CLASS_HUNTER || Class == CLASS_DEATH_KNIGHT))
{
- if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(fields[19].GetUInt32()))
+ if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(fields[22].GetUInt32()))
{
- Pet.CreatureDisplayId = fields[20].GetUInt32();
- Pet.Level = fields[21].GetUInt16();
+ Pet.CreatureDisplayId = fields[23].GetUInt32();
+ Pet.Level = fields[24].GetUInt16();
Pet.CreatureFamily = creatureInfo->family;
}
}
@@ -100,9 +105,9 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel
ProfessionIds[0] = 0;
ProfessionIds[1] = 0;
- Tokenizer equipment(fields[22].GetString(), ' ');
- ListPosition = fields[24].GetUInt8();
- LastPlayedTime = fields[25].GetUInt32();
+ Tokenizer equipment(fields[25].GetString(), ' ');
+ ListPosition = fields[27].GetUInt8();
+ LastPlayedTime = fields[28].GetUInt32();
for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot)
{
@@ -119,9 +124,17 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
_worldPacket.WriteBit(Success);
_worldPacket.WriteBit(IsDeletedCharacters);
+ _worldPacket.WriteBit(IsDemonHunterCreationAllowed);
+ _worldPacket.WriteBit(HasDemonHunterOnRealm);
+ _worldPacket.WriteBit(HasLevel70OnAccount);
+ _worldPacket.WriteBit(Unknown7x);
+ _worldPacket.WriteBit(DisabledClassesMask.is_initialized());
_worldPacket << uint32(Characters.size());
_worldPacket << uint32(FactionChangeRestrictions.size());
+ if (DisabledClassesMask)
+ _worldPacket << uint32(*DisabledClassesMask);
+
for (CharacterInfo const& charInfo : Characters)
{
_worldPacket << charInfo.Guid;
@@ -134,6 +147,7 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
_worldPacket << uint8(charInfo.HairStyle);
_worldPacket << uint8(charInfo.HairColor);
_worldPacket << uint8(charInfo.FacialHair);
+ _worldPacket.append(charInfo.CustomDisplay.data(), charInfo.CustomDisplay.size());
_worldPacket << uint8(charInfo.Level);
_worldPacket << int32(charInfo.ZoneId);
_worldPacket << int32(charInfo.MapId);
@@ -190,6 +204,7 @@ void WorldPackets::Character::CreateCharacter::Read()
_worldPacket >> CreateInfo->HairColor;
_worldPacket >> CreateInfo->FacialHairStyle;
_worldPacket >> CreateInfo->OutfitId;
+ _worldPacket.read(CreateInfo->CustomDisplay.data(), CreateInfo->CustomDisplay.size());
CreateInfo->Name = _worldPacket.ReadString(nameLength);
if (hasTemplateSet)
CreateInfo->TemplateSet = _worldPacket.read<int32>();
@@ -244,6 +259,7 @@ void WorldPackets::Character::CharCustomize::Read()
_worldPacket >> CustomizeInfo->HairStyleID;
_worldPacket >> CustomizeInfo->FacialHairStyleID;
_worldPacket >> CustomizeInfo->FaceID;
+ _worldPacket.read(CustomizeInfo->CustomDisplay.data(), CustomizeInfo->CustomDisplay.size());
CustomizeInfo->CharName = _worldPacket.ReadString(_worldPacket.ReadBits(6));
}
@@ -255,32 +271,16 @@ void WorldPackets::Character::CharRaceOrFactionChange::Read()
uint32 nameLength = _worldPacket.ReadBits(6);
- bool const hasSkinID = _worldPacket.ReadBit();
- bool const hasHairColorID = _worldPacket.ReadBit();
- bool const hasHairStyleID = _worldPacket.ReadBit();
- bool const hasFacialHairStyleID = _worldPacket.ReadBit();
- bool const hasFaceID = _worldPacket.ReadBit();
-
_worldPacket >> RaceOrFactionChangeInfo->Guid;
_worldPacket >> RaceOrFactionChangeInfo->SexID;
_worldPacket >> RaceOrFactionChangeInfo->RaceID;
-
+ _worldPacket >> RaceOrFactionChangeInfo->SkinID;
+ _worldPacket >> RaceOrFactionChangeInfo->HairColorID;
+ _worldPacket >> RaceOrFactionChangeInfo->HairStyleID;
+ _worldPacket >> RaceOrFactionChangeInfo->FacialHairStyleID;
+ _worldPacket >> RaceOrFactionChangeInfo->FaceID;
+ _worldPacket.read(RaceOrFactionChangeInfo->CustomDisplay.data(), RaceOrFactionChangeInfo->CustomDisplay.size());
RaceOrFactionChangeInfo->Name = _worldPacket.ReadString(nameLength);
-
- if (hasSkinID)
- RaceOrFactionChangeInfo->SkinID = _worldPacket.read<uint8>();
-
- if (hasHairColorID)
- RaceOrFactionChangeInfo->HairColorID = _worldPacket.read<uint8>();
-
- if (hasHairStyleID)
- RaceOrFactionChangeInfo->HairStyleID = _worldPacket.read<uint8>();
-
- if (hasFacialHairStyleID)
- RaceOrFactionChangeInfo->FacialHairStyleID = _worldPacket.read<uint8>();
-
- if (hasFaceID)
- RaceOrFactionChangeInfo->FaceID = _worldPacket.read<uint8>();
}
WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write()
@@ -300,6 +300,7 @@ WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write()
_worldPacket << uint8(Display->FacialHairStyleID);
_worldPacket << uint8(Display->FaceID);
_worldPacket << uint8(Display->RaceID);
+ _worldPacket.append(Display->CustomDisplay.data(), Display->CustomDisplay.size());
_worldPacket.WriteString(Display->Name);
}
@@ -522,6 +523,7 @@ WorldPackets::Character::CharCustomizeResponse::CharCustomizeResponse(WorldPacke
FacialHairStyleID = info->FacialHairStyleID;
FaceID = info->FaceID;
CharName = info->CharName;
+ CustomDisplay = info->CustomDisplay;
}
WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write()
@@ -533,6 +535,7 @@ WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write()
_worldPacket << uint8(HairStyleID);
_worldPacket << uint8(FacialHairStyleID);
_worldPacket << uint8(FaceID);
+ _worldPacket.append(CustomDisplay.data(), CustomDisplay.size());
_worldPacket.WriteBits(CharName.length(), 6);
_worldPacket.FlushBits();
_worldPacket.WriteString(CharName);
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 017dddd1d06..6edf7bc097c 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -48,6 +48,7 @@ namespace WorldPackets
uint8 HairStyle = 0;
uint8 HairColor = 0;
uint8 FacialHairStyle = 0;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
uint8 OutfitId = 0;
Optional<int32> TemplateSet;
std::string Name;
@@ -72,20 +73,22 @@ namespace WorldPackets
uint8 HairColorID = 0;
uint8 FacialHairStyleID = 0;
uint8 SkinID = 0;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
};
struct CharRaceOrFactionChangeInfo
{
- Optional<uint8> HairColorID;
+ uint8 HairColorID = 0;
uint8 RaceID = RACE_NONE;
uint8 SexID = GENDER_NONE;
- Optional<uint8> SkinID;
- Optional<uint8> FacialHairStyleID;
+ uint8 SkinID = 0;
+ uint8 FacialHairStyleID = 0;
ObjectGuid Guid;
bool FactionChange = false;
std::string Name;
- Optional<uint8> FaceID;
- Optional<uint8> HairStyleID;
+ uint8 FaceID = 0;
+ uint8 HairStyleID = 0;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
};
struct CharacterUndeleteInfo
@@ -123,6 +126,7 @@ namespace WorldPackets
uint8 HairStyle = 0;
uint8 HairColor = 0;
uint8 FacialHair = 0;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
uint8 Level = 0;
int32 ZoneId = 0;
int32 MapId = 0;
@@ -170,9 +174,15 @@ namespace WorldPackets
bool Success = false; ///<
bool IsDeletedCharacters = false; ///< used for character undelete list
+ bool IsDemonHunterCreationAllowed = false;
+ bool HasDemonHunterOnRealm = false;
+ bool HasLevel70OnAccount = false;
+ bool Unknown7x = false;
+
+ Optional<uint32> DisabledClassesMask;
- std::list<CharacterInfo> Characters; ///< all characters on the list
- std::list<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions; ///< @todo: research
+ std::vector<CharacterInfo> Characters; ///< all characters on the list
+ std::vector<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions; ///< @todo: research
};
class CreateCharacter final : public ClientPacket
@@ -311,6 +321,7 @@ namespace WorldPackets
uint8 FacialHairStyleID = 0;
uint8 FaceID = 0;
uint8 RaceID = RACE_NONE;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
};
CharFactionChangeResult() : ServerPacket(SMSG_CHAR_FACTION_CHANGE_RESULT, 20 + sizeof(CharFactionChangeDisplayInfo)) { }
@@ -705,6 +716,7 @@ namespace WorldPackets
uint8 HairStyleID = 0;
uint8 FacialHairStyleID = 0;
uint8 FaceID = 0;
+ std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay;
};
class CharCustomizeFailed final : public ServerPacket
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 68b835c85ab..eb64ecc386b 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -48,7 +48,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
- _worldPacket.WriteBit(UnkBit61);
+ _worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.FlushBits();
@@ -72,15 +72,6 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
_worldPacket << int32(SessionAlert->DisplayTime);
}
- /*if (bit61)
- {
- var int88 = packet.ReadInt32("int88");
- for (int i = 0; i < int88; i++)
- packet.ReadByte("byte23", i);
- }*/
-
- _worldPacket.FlushBits();
-
return &_worldPacket;
}
@@ -94,6 +85,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
_worldPacket.WriteBit(Unk14);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(IsExpansionPreorderInStore);
+ _worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.FlushBits();
_worldPacket << int32(TokenPollTimeSeconds);
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index 5d6d2a9c071..03c1e0a5369 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -84,7 +84,7 @@ namespace WorldPackets
bool RestrictedAccount = false;
bool TutorialsEnabled = false;
bool NPETutorialsEnabled = false;
- bool UnkBit61 = false;
+ bool KioskModeEnabled = false;
};
class FeatureSystemStatusGlueScreen final : public ServerPacket
@@ -102,6 +102,7 @@ namespace WorldPackets
bool Unk14 = false; // NYI
bool WillKickFromWorld = false; // NYI
bool IsExpansionPreorderInStore = false;
+ bool KioskModeEnabled = false;
int32 TokenPollTimeSeconds = 0; // NYI
int32 TokenRedeemIndex = 0; // NYI
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index bef4760025f..b7159ea08ae 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -229,9 +229,9 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ChangeSubGroup, &WorldSession::HandleChangeSubGroupOpcode);
DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode);
- DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode);
+ DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharDelete, &WorldSession::HandleCharDeleteOpcode);
- DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
+ DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessageChannel, &WorldSession::HandleChatAddonMessageChannelOpcode);
DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode);
DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode);
@@ -299,7 +299,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CONFIRM_RESPEC_WIPE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::ConfirmRespecWipe, &WorldSession::HandleConfirmRespecWipeOpcode);
DEFINE_HANDLER(CMSG_CONNECT_TO_FAILED, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ConvertRaid, &WorldSession::HandleConvertRaidOpcode);
- DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode);
+ DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode);
DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Query::DBQueryBulk, &WorldSession::HandleDBQueryBulk);
DEFINE_HANDLER(CMSG_DECLINE_GUILD_INVITES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::DeclineGuildInvites, &WorldSession::HandleDeclineGuildInvites);
@@ -965,9 +965,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_QUEUED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_AUTO_RESPONDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1046,15 +1046,15 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEIGN_DEATH_RESISTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_ESCAPED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_NOT_HOOKED, STATUS_NEVER, CONNECTION_TYPE_REALM);