aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/bnetserver/Packets/AuthenticationPackets.cpp79
-rw-r--r--src/server/bnetserver/Packets/AuthenticationPackets.h61
-rw-r--r--src/server/bnetserver/Packets/CachePackets.cpp21
-rw-r--r--src/server/bnetserver/Packets/ConnectionPackets.cpp25
-rw-r--r--src/server/bnetserver/Packets/PacketManager.cpp3
-rw-r--r--src/server/bnetserver/Packets/WoWRealmPackets.cpp41
-rw-r--r--src/server/bnetserver/Server/Session.cpp2
-rw-r--r--src/server/bnetserver/Server/Session.h2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp2
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp2
-rw-r--r--src/server/game/DataStores/DBCStores.cpp4
-rw-r--r--src/server/game/DataStores/DBCStores.h2
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp8
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h18
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h2
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp14
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h3383
-rw-r--r--src/server/game/Spells/SpellEffects.cpp4
-rw-r--r--src/tools/map_extractor/CMakeLists.txt6
-rw-r--r--src/tools/map_extractor/System.cpp831
-rw-r--r--src/tools/map_extractor/adt.cpp178
-rw-r--r--src/tools/map_extractor/adt.h105
-rw-r--r--src/tools/map_extractor/dbcfile.cpp13
-rw-r--r--src/tools/map_extractor/dbcfile.h2
-rw-r--r--src/tools/map_extractor/loadlib.cpp132
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h531
-rw-r--r--src/tools/map_extractor/loadlib/loadlib.h44
-rw-r--r--src/tools/map_extractor/wdt.cpp84
-rw-r--r--src/tools/map_extractor/wdt.h54
-rw-r--r--src/tools/vmap4_assembler/CMakeLists.txt2
-rw-r--r--src/tools/vmap4_extractor/CMakeLists.txt6
34 files changed, 3125 insertions, 2544 deletions
diff --git a/src/server/bnetserver/Packets/AuthenticationPackets.cpp b/src/server/bnetserver/Packets/AuthenticationPackets.cpp
index f5704f67153..f6743a7c2f0 100644
--- a/src/server/bnetserver/Packets/AuthenticationPackets.cpp
+++ b/src/server/bnetserver/Packets/AuthenticationPackets.cpp
@@ -19,43 +19,6 @@
#include "Session.h"
#include "Util.h"
-void Battlenet::Authentication::LogonRequest::Read()
-{
- Program = _stream.ReadFourCC();
- Platform = _stream.ReadFourCC();
- Locale = _stream.ReadFourCC();
-
- Components.resize(_stream.Read<uint32>(6));
- for (size_t i = 0; i < Components.size(); ++i)
- {
- Component& component = Components[i];
- component.Program = _stream.ReadFourCC();
- component.Platform = _stream.ReadFourCC();
- component.Build = _stream.Read<uint32>(32);
- }
-
- if (_stream.Read<uint32>(1))
- Login = _stream.ReadString(9, 3);
-}
-
-std::string Battlenet::Authentication::LogonRequest::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::Authentication::LogonRequest Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
- for (Component const& component : Components)
- stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
-
- if (!Login.empty())
- stream << std::endl << "Battlenet::Authentication::LogonRequest Login: " << Login;
-
- return stream.str();
-}
-
-void Battlenet::Authentication::LogonRequest::CallHandler(Session* session)
-{
- session->HandleLogonRequest(*this);
-}
-
void Battlenet::Authentication::ResumeRequest::Read()
{
Program = _stream.ReadFourCC();
@@ -159,6 +122,47 @@ void Battlenet::Authentication::ProofResponse::CallHandler(Session* session)
session->HandleProofResponse(*this);
}
+void Battlenet::Authentication::LogonRequest3::Read()
+{
+ Program = _stream.ReadFourCC();
+ Platform = _stream.ReadFourCC();
+ Locale = _stream.ReadFourCC();
+
+ Components.resize(_stream.Read<uint32>(6));
+ for (size_t i = 0; i < Components.size(); ++i)
+ {
+ Component& component = Components[i];
+ component.Program = _stream.ReadFourCC();
+ component.Platform = _stream.ReadFourCC();
+ component.Build = _stream.Read<uint32>(32);
+ }
+
+ if (_stream.Read<uint32>(1))
+ Login = _stream.ReadString(9, 3);
+
+ Compatibility = _stream.Read<uint64>(64);
+}
+
+std::string Battlenet::Authentication::LogonRequest3::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::LogonRequest3 Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
+ for (Component const& component : Components)
+ stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
+
+ if (!Login.empty())
+ stream << std::endl << " Login: " << Login;
+
+ stream << " Compatibility: " << Compatibility;
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::LogonRequest3::CallHandler(Session* session)
+{
+ session->HandleLogonRequest(*this);
+}
+
Battlenet::Authentication::LogonResponse::~LogonResponse()
{
for (ModuleInfo* m : Modules)
@@ -205,6 +209,7 @@ void Battlenet::Authentication::LogonResponse::Write()
_stream.Write(GameAccountFlags, 64);
_stream.Write(FailedLogins, 32);
+ _stream.Write(false, 1); // RaF
}
else
{
diff --git a/src/server/bnetserver/Packets/AuthenticationPackets.h b/src/server/bnetserver/Packets/AuthenticationPackets.h
index c698d3125cf..bcaa0e72011 100644
--- a/src/server/bnetserver/Packets/AuthenticationPackets.h
+++ b/src/server/bnetserver/Packets/AuthenticationPackets.h
@@ -28,34 +28,19 @@ namespace Battlenet
{
enum Opcode
{
- CMSG_LOGON_REQUEST = 0x0,
- CMSG_RESUME_REQUEST = 0x1,
- CMSG_PROOF_RESPONSE = 0x2,
-
- SMSG_LOGON_RESPONSE = 0x0,
- SMSG_RESUME_RESPONSE = 0x1,
- SMSG_PROOF_REQUEST = 0x2,
- SMSG_PATCH = 0x3, // Not implemented
- SMSG_AUTHORIZED_LICENSES = 0x4 // Not implemented
- };
-
- class LogonRequest final : public ClientPacket
- {
- public:
- LogonRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
- {
- ASSERT(header == PacketHeader(CMSG_LOGON_REQUEST, AUTHENTICATION) && "Invalid packet header for LogonRequest");
- }
-
- void Read() override;
- std::string ToString() const override;
- void CallHandler(Session* session) override;
-
- std::string Program;
- std::string Platform;
- std::string Locale;
- std::vector<Component> Components;
- std::string Login;
+ CMSG_LOGON_REQUEST = 0x0, // Deprecated
+ CMSG_RESUME_REQUEST = 0x1,
+ CMSG_PROOF_RESPONSE = 0x2,
+ CMSG_GENERATE_SINGLE_SIGN_ON_TOKEN_REQUEST_2 = 0x8, // Not implemented
+ CMSG_LOGON_REQUEST_3 = 0x9,
+ CMSG_SINGLE_SIGN_ON_REQUEST_3 = 0xA, // Not implemented
+
+ SMSG_LOGON_RESPONSE = 0x0,
+ SMSG_RESUME_RESPONSE = 0x1,
+ SMSG_PROOF_REQUEST = 0x2,
+ SMSG_PATCH = 0x3, // Not implemented
+ SMSG_AUTHORIZED_LICENSES = 0x4, // Not implemented
+ SMSG_GENERATE_SINGLE_SIGN_ON_TOKEN_REQUEST_2 = 0x8 // Not implemented
};
class ResumeRequest final : public ClientPacket
@@ -96,6 +81,26 @@ namespace Battlenet
std::vector<BitStream*> Modules;
};
+ class LogonRequest3 final : public ClientPacket
+ {
+ public:
+ LogonRequest3(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_LOGON_REQUEST_3, AUTHENTICATION) && "Invalid packet header for LogonRequest3");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ std::string Program;
+ std::string Platform;
+ std::string Locale;
+ std::vector<Component> Components;
+ std::string Login;
+ uint64 Compatibility;
+ };
+
class ResponseFailure
{
public:
diff --git a/src/server/bnetserver/Packets/CachePackets.cpp b/src/server/bnetserver/Packets/CachePackets.cpp
index b4fa6c6499d..deacfd34065 100644
--- a/src/server/bnetserver/Packets/CachePackets.cpp
+++ b/src/server/bnetserver/Packets/CachePackets.cpp
@@ -21,20 +21,19 @@
void Battlenet::Cache::GetStreamItemsRequest::Read()
{
+ _stream.WriteSkip(31);
+ Index = _stream.Read<uint32>(32);
+ ReferenceTime = _stream.Read<int32>(32) - std::numeric_limits<int32>::min();
+ _stream.Read<bool>(1); // StreamDirection
+ _stream.Read<uint8>(6); // Module count, always 0
+ Locale = _stream.ReadFourCC();
if (_stream.Read<bool>(1))
{
- _stream.Read<uint16>(11); // padding
ItemName = _stream.ReadFourCC();
Channel = _stream.ReadFourCC();
}
else
_stream.Read<uint16>(16);
-
- _stream.Read<bool>(1); // StreamDirection
- ReferenceTime = _stream.Read<int32>(32) - std::numeric_limits<int32>::min();
- Locale = _stream.ReadFourCC();
- Index = _stream.Read<uint32>(32);
- _stream.Read<uint8>(6); // Module count, always 0
}
std::string Battlenet::Cache::GetStreamItemsRequest::ToString() const
@@ -59,19 +58,17 @@ Battlenet::Cache::GetStreamItemsResponse::~GetStreamItemsResponse()
void Battlenet::Cache::GetStreamItemsResponse::Write()
{
_stream.Write(0, 16);
+ _stream.Write(1, 16);
+ _stream.Write(Index, 32);
_stream.Write(Modules.size(), 6);
for (ModuleInfo const* info : Modules)
{
_stream.WriteBytes(info->Type.c_str(), 4);
_stream.WriteFourCC(info->Region);
_stream.WriteBytes(info->ModuleId, 32);
+ _stream.WriteSkip(27);
_stream.WriteBytes(info->Data, 4);
}
-
- _stream.Write(Index, 32);
- _stream.Write(0, 17); // padding
- _stream.Write(1, 16);
- _stream.Write(0, 2);
}
std::string Battlenet::Cache::GetStreamItemsResponse::ToString() const
diff --git a/src/server/bnetserver/Packets/ConnectionPackets.cpp b/src/server/bnetserver/Packets/ConnectionPackets.cpp
index aa934cb631a..3b7a9949552 100644
--- a/src/server/bnetserver/Packets/ConnectionPackets.cpp
+++ b/src/server/bnetserver/Packets/ConnectionPackets.cpp
@@ -63,7 +63,20 @@ std::string Battlenet::Connection::DisconnectRequest::ToString() const
void Battlenet::Connection::ConnectionClosing::Read()
{
+ Packets.resize(_stream.Read<uint8>(6));
+ for (size_t i = 0; i < Packets.size(); ++i)
+ {
+ PacketInfo& info = Packets[i];
+ info.CommandName = _stream.ReadFourCC();
+ info.Timestamp = _stream.Read<uint32>(32);
+ info.Size = _stream.Read<uint32>(16);
+ info.Channel = _stream.ReadFourCC();
+ info.LayerId = _stream.Read<uint32>(16);
+ }
+
Reason = _stream.Read<ClosingReason>(4);
+ _stream.ReadBytes(_stream.Read<uint8>(8)); // BadData
+
if (_stream.Read<bool>(1)) // HasHeader
{
Header.Opcode = _stream.Read<uint32>(6);
@@ -72,18 +85,6 @@ void Battlenet::Connection::ConnectionClosing::Read()
}
Now = _stream.Read<time_t>(32);
- _stream.Read<uint32>(25);
- auto bytes = _stream.ReadBytes(_stream.Read<uint8>(8)); // BadData
- Packets.resize(_stream.Read<uint8>(6));
- for (size_t i = 0; i < Packets.size(); ++i)
- {
- PacketInfo& info = Packets[i];
- info.CommandName = _stream.ReadFourCC();
- info.LayerId = _stream.Read<uint32>(16);
- info.Channel = _stream.ReadFourCC();
- info.Timestamp = _stream.Read<uint32>(32);
- info.Size = _stream.Read<uint32>(16);
- }
}
std::string Battlenet::Connection::ConnectionClosing::ToString() const
diff --git a/src/server/bnetserver/Packets/PacketManager.cpp b/src/server/bnetserver/Packets/PacketManager.cpp
index e18f3dc5ffb..cbfd0c8b2b6 100644
--- a/src/server/bnetserver/Packets/PacketManager.cpp
+++ b/src/server/bnetserver/Packets/PacketManager.cpp
@@ -79,9 +79,10 @@ Battlenet::PacketManager::PacketManager()
void Battlenet::PacketManager::RegisterAuthenticationPackets()
{
- REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_LOGON_REQUEST, AUTHENTICATION), Authentication::LogonRequest);
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Authentication::CMSG_LOGON_REQUEST, AUTHENTICATION), "Authentication::LogonRequest3");
REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_RESUME_REQUEST, AUTHENTICATION), Authentication::ResumeRequest);
REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_PROOF_RESPONSE, AUTHENTICATION), Authentication::ProofResponse);
+ REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_LOGON_REQUEST_3, AUTHENTICATION), Authentication::LogonRequest3);
REGISTER_SERVER_PACKET(PacketHeader(Authentication::SMSG_LOGON_RESPONSE, AUTHENTICATION), Authentication::LogonResponse);
REGISTER_SERVER_PACKET(PacketHeader(Authentication::SMSG_RESUME_RESPONSE, AUTHENTICATION), Authentication::ResumeResponse);
diff --git a/src/server/bnetserver/Packets/WoWRealmPackets.cpp b/src/server/bnetserver/Packets/WoWRealmPackets.cpp
index 986152cbccb..714c43b8eb4 100644
--- a/src/server/bnetserver/Packets/WoWRealmPackets.cpp
+++ b/src/server/bnetserver/Packets/WoWRealmPackets.cpp
@@ -74,9 +74,10 @@ void Battlenet::WoWRealm::ListSubscribeResponse::Write()
_stream.Write(CharacterCounts.size(), 7);
for (CharacterCountEntry const& entry : CharacterCounts)
{
+ _stream.Write(entry.Realm.Region, 8);
+ _stream.Write(0, 12);
_stream.Write(entry.Realm.Battlegroup, 8);
_stream.Write(entry.Realm.Index, 32);
- _stream.Write(entry.Realm.Region, 8);
_stream.Write(entry.CharacterCount, 16);
}
@@ -116,11 +117,12 @@ void Battlenet::WoWRealm::ListUpdate::Write()
_stream.Write(UpdateState, 1);
if (UpdateState == UPDATE)
{
- _stream.Write(Type + -std::numeric_limits<int32>::min(), 32);
+ _stream.Write(Timezone, 32);
_stream.WriteFloat(Population);
- _stream.Write(Flags, 8);
_stream.Write(Lock, 8);
- _stream.Write(Timezone, 32);
+ _stream.Write(0, 19);
+ _stream.Write(Type + -std::numeric_limits<int32>::min(), 32);
+ _stream.WriteString(Name, 10);
_stream.Write(!Version.empty(), 1);
if (!Version.empty())
{
@@ -137,12 +139,13 @@ void Battlenet::WoWRealm::ListUpdate::Write()
_stream.WriteBytes(&port, 2);
}
- _stream.WriteString(Name, 10);
+ _stream.Write(Flags, 8);
}
+ _stream.Write(Id.Region, 8);
+ _stream.Write(0, 12);
_stream.Write(Id.Battlegroup, 8);
_stream.Write(Id.Index, 32);
- _stream.Write(Id.Region, 8);
}
std::string Battlenet::WoWRealm::ListUpdate::ToString() const
@@ -170,15 +173,13 @@ void Battlenet::WoWRealm::ToonReady::Write()
uint32 realmAddress = ((Realm.Battlegroup << 16) & 0xFF0000) | uint16(Realm.Index);
_stream.Write(realmAddress, 32);
_stream.WriteString(Name, 7, -2);
- _stream.WriteSkip(7);
- _stream.Write(Guid, 64);
- _stream.WriteFourCC(Game);
- _stream.Write(Realm.Region, 8);
_stream.WriteSkip(21);
- _stream.Write(realmAddress, 32);
- _stream.WriteSkip(9);
_stream.Write(0, 64); // Unknown
_stream.Write(0, 32); // Unknown
+ _stream.Write(Guid, 64);
+ _stream.Write(realmAddress, 32);
+ _stream.Write(Realm.Region, 8);
+ _stream.WriteFourCC(Game);
}
std::string Battlenet::WoWRealm::ToonReady::ToString() const
@@ -198,27 +199,27 @@ void Battlenet::WoWRealm::JoinResponseV2::Write()
if (Response == SUCCESS)
{
_stream.Write(ServerSeed, 32);
- _stream.Write(IPv6.size(), 5);
- for (tcp::endpoint const& addr : IPv6)
+ _stream.Write(IPv4.size(), 5);
+ for (tcp::endpoint const& addr : IPv4)
{
- boost::asio::ip::address_v6::bytes_type ip = addr.address().to_v6().to_bytes();
+ boost::asio::ip::address_v4::bytes_type ip = addr.address().to_v4().to_bytes();
uint16 port = addr.port();
EndianConvertReverse(port);
- _stream.WriteBytes(ip.data(), 16);
+ _stream.WriteBytes(ip.data(), 4);
_stream.WriteBytes(&port, 2);
}
- _stream.Write(IPv4.size(), 5);
- for (tcp::endpoint const& addr : IPv4)
+ _stream.Write(IPv6.size(), 5);
+ for (tcp::endpoint const& addr : IPv6)
{
- boost::asio::ip::address_v4::bytes_type ip = addr.address().to_v4().to_bytes();
+ boost::asio::ip::address_v6::bytes_type ip = addr.address().to_v6().to_bytes();
uint16 port = addr.port();
EndianConvertReverse(port);
- _stream.WriteBytes(ip.data(), 4);
+ _stream.WriteBytes(ip.data(), 16);
_stream.WriteBytes(&port, 2);
}
}
diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp
index 9a5f60b296e..edd00e5db2d 100644
--- a/src/server/bnetserver/Server/Session.cpp
+++ b/src/server/bnetserver/Server/Session.cpp
@@ -93,7 +93,7 @@ void Battlenet::Session::LogUnhandledPacket(PacketHeader const& header)
TC_LOG_DEBUG("session.packets", "%s Received unhandled packet %s", GetClientInfo().c_str(), sPacketManager.GetClientPacketName(header));
}
-void Battlenet::Session::HandleLogonRequest(Authentication::LogonRequest const& logonRequest)
+void Battlenet::Session::HandleLogonRequest(Authentication::LogonRequest3 const& logonRequest)
{
// Verify that this IP is not in the ip_banned table
LoginDatabase.Execute(LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS));
diff --git a/src/server/bnetserver/Server/Session.h b/src/server/bnetserver/Server/Session.h
index c932115a04b..ded5170ae32 100644
--- a/src/server/bnetserver/Server/Session.h
+++ b/src/server/bnetserver/Server/Session.h
@@ -63,7 +63,7 @@ namespace Battlenet
void LogUnhandledPacket(PacketHeader const& header);
// Authentication
- void HandleLogonRequest(Authentication::LogonRequest const& logonRequest);
+ void HandleLogonRequest(Authentication::LogonRequest3 const& logonRequest);
void HandleResumeRequest(Authentication::ResumeRequest const& resumeRequest);
void HandleProofResponse(Authentication::ProofResponse const& proofResponse);
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index 0b69391f935..ef7f30ee087 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -72,7 +72,7 @@ bool npc_escortAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_CAN_ASSIST))
return false;
//not a player
diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
index 00aa8eacc93..7958c330272 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
@@ -69,7 +69,7 @@ bool FollowerAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_CAN_ASSIST))
return false;
//not a player
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index bdad018c622..92f02583915 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -498,7 +498,7 @@ bool SmartAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_CAN_ASSIST))
return false;
//not a player
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index 05a1eb71e90..9b8f0447527 100644
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -957,6 +957,10 @@ uint32 GetMaxLevelForExpansion(uint32 expansion)
return 80;
case CONTENT_81_85:
return 85;
+ case CONTENT_86_90:
+ return 90;
+ case CONTENT_91_100:
+ return 100;
default:
break;
}
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index eeaa45c9042..885f6041a60 100644
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -52,6 +52,8 @@ enum ContentLevels
CONTENT_61_70 = 1,
CONTENT_71_80 = 2,
CONTENT_81_85 = 3,
+ CONTENT_86_90 = 4,
+ CONTENT_91_100 = 5,
MAX_CONTENT
};
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 0ed4f0d21bb..46c9c80851b 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -954,7 +954,7 @@ bool GameObject::IsTransport() const
if (!gInfo)
return false;
- return gInfo->type == GAMEOBJECT_TYPE_TRANSPORT || gInfo->type == GAMEOBJECT_TYPE_MO_TRANSPORT;
+ return gInfo->type == GAMEOBJECT_TYPE_TRANSPORT || gInfo->type == GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT;
}
// is Dynamic transport = non-stop Transport
@@ -965,7 +965,7 @@ bool GameObject::IsDynTransport() const
if (!gInfo)
return false;
- return gInfo->type == GAMEOBJECT_TYPE_MO_TRANSPORT || (gInfo->type == GAMEOBJECT_TYPE_TRANSPORT && m_goValue.Transport.StopFrames->empty());
+ return gInfo->type == GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT || (gInfo->type == GAMEOBJECT_TYPE_TRANSPORT && m_goValue.Transport.StopFrames->empty());
}
bool GameObject::IsDestructibleBuilding() const
@@ -1497,7 +1497,7 @@ void GameObject::Use(Unit* user)
return;
}
- case GAMEOBJECT_TYPE_SUMMONING_RITUAL: //18
+ case GAMEOBJECT_TYPE_RITUAL: //18
{
if (user->GetTypeId() != TYPEID_PLAYER)
return;
@@ -2289,7 +2289,7 @@ void GameObject::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* t
pathProgress = int16(timer / float(GetTransportPeriod()) * 65535.0f);
break;
}
- case GAMEOBJECT_TYPE_MO_TRANSPORT:
+ case GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT:
{
float timer = float(m_goValue.Transport.PathProgress % GetUInt32Value(GAMEOBJECT_LEVEL));
pathProgress = int16(timer / float(GetUInt32Value(GAMEOBJECT_LEVEL)) * 65535.0f);
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index bb6a862ad4a..bfad50f1687 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -226,7 +226,7 @@ struct GameObjectTemplate
uint32 openTextID; //3 can be used to replace castBarCaption?
} camera;
//14 GAMEOBJECT_TYPE_MAPOBJECT - empty
- //15 GAMEOBJECT_TYPE_MO_TRANSPORT
+ //15 GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT
struct
{
uint32 taxiPathId; //0
@@ -241,7 +241,7 @@ struct GameObjectTemplate
} moTransport;
//16 GAMEOBJECT_TYPE_DUELFLAG - empty
//17 GAMEOBJECT_TYPE_FISHINGNODE - empty
- //18 GAMEOBJECT_TYPE_SUMMONING_RITUAL
+ //18 GAMEOBJECT_TYPE_RITUAL
struct
{
uint32 reqParticipants; //0
@@ -840,13 +840,13 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
GameObjectModel* m_model;
void GetRespawnPosition(float &x, float &y, float &z, float* ori = NULL) const;
- Transport* ToTransport() { if (GetGOInfo()->type == GAMEOBJECT_TYPE_MO_TRANSPORT) return reinterpret_cast<Transport*>(this); else return NULL; }
- Transport const* ToTransport() const { if (GetGOInfo()->type == GAMEOBJECT_TYPE_MO_TRANSPORT) return reinterpret_cast<Transport const*>(this); else return NULL; }
+ Transport* ToTransport() { if (GetGOInfo()->type == GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return reinterpret_cast<Transport*>(this); else return NULL; }
+ Transport const* ToTransport() const { if (GetGOInfo()->type == GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return reinterpret_cast<Transport const*>(this); else return NULL; }
- float GetStationaryX() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetPositionX(); return GetPositionX(); }
- float GetStationaryY() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetPositionY(); return GetPositionY(); }
- float GetStationaryZ() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetPositionZ(); return GetPositionZ(); }
- float GetStationaryO() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetOrientation(); return GetOrientation(); }
+ float GetStationaryX() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetPositionX(); return GetPositionX(); }
+ float GetStationaryY() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetPositionY(); return GetPositionY(); }
+ float GetStationaryZ() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetPositionZ(); return GetPositionZ(); }
+ float GetStationaryO() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetOrientation(); return GetOrientation(); }
float GetInteractionDistance() const;
@@ -865,7 +865,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
// For traps this: spell casting cooldown, for doors/buttons: reset time.
std::list<uint32> m_SkillupList;
- ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_SUMMONING_RITUAL where GO is not summoned (no owner)
+ ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_RITUAL where GO is not summoned (no owner)
GuidSet m_unique_users;
uint32 m_usetimes;
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index c9c17efe3f9..b604f23e3e8 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -67,7 +67,7 @@ enum HighGuid
HIGHGUID_CORPSE = 0xF101, // blizz F100
HIGHGUID_AREATRIGGER = 0xF102,
HIGHGUID_BATTLEGROUND = 0x1F1,
- HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
+ HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC0 (for GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT)
HIGHGUID_INSTANCE = 0x1F4, // blizz 1F40
HIGHGUID_GROUP = 0x1F5,
HIGHGUID_GUILD = 0x1FF
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index dd4dbb41f87..f237c1aa71a 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -93,7 +93,7 @@ bool Transport::Create(uint32 guidlow, uint32 entry, uint32 mapid, float x, floa
SetEntry(goinfo->entry);
SetDisplayId(goinfo->displayId);
SetGoState(!goinfo->moTransport.canBeStopped ? GO_STATE_READY : GO_STATE_ACTIVE);
- SetGoType(GAMEOBJECT_TYPE_MO_TRANSPORT);
+ SetGoType(GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT);
SetGoAnimProgress(animprogress);
SetName(goinfo->name);
UpdateRotationFields(0.0f, 1.0f);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 30a22f4d193..1bf6993ad4b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -10328,7 +10328,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
}
Creature const* creatureAttacker = ToCreature();
- if (creatureAttacker && creatureAttacker->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER)
+ if (creatureAttacker && creatureAttacker->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT)
return false;
Player const* playerAffectingAttacker = HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE) ? GetAffectingPlayer() : NULL;
@@ -10415,7 +10415,7 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
// can't assist non-friendly targets
if (GetReactionTo(target) < REP_NEUTRAL
&& target->GetReactionTo(this) < REP_NEUTRAL
- && (!ToCreature() || !(ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER)))
+ && (!ToCreature() || !(ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT)))
return false;
// PvP case
@@ -10449,7 +10449,7 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
&& !((target->GetByteValue(UNIT_FIELD_BYTES_2, 1) & UNIT_BYTE2_FLAG_PVP)))
{
if (Creature const* creatureTarget = target->ToCreature())
- return creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER || creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS;
+ return creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT || creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_CAN_ASSIST;
}
return true;
}
@@ -14520,8 +14520,8 @@ bool Unit::IsInPartyWith(Unit const* unit) const
if (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_PLAYER)
return u1->ToPlayer()->IsInSameGroupWith(u2->ToPlayer());
- else if ((u2->GetTypeId() == TYPEID_PLAYER && u1->GetTypeId() == TYPEID_UNIT && u1->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER) ||
- (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_UNIT && u2->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER))
+ else if ((u2->GetTypeId() == TYPEID_PLAYER && u1->GetTypeId() == TYPEID_UNIT && u1->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT) ||
+ (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_UNIT && u2->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT))
return true;
else
return false;
@@ -14539,8 +14539,8 @@ bool Unit::IsInRaidWith(Unit const* unit) const
if (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_PLAYER)
return u1->ToPlayer()->IsInSameRaidWith(u2->ToPlayer());
- else if ((u2->GetTypeId() == TYPEID_PLAYER && u1->GetTypeId() == TYPEID_UNIT && u1->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER) ||
- (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_UNIT && u2->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_PARTY_MEMBER))
+ else if ((u2->GetTypeId() == TYPEID_PLAYER && u1->GetTypeId() == TYPEID_UNIT && u1->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT) ||
+ (u1->GetTypeId() == TYPEID_PLAYER && u2->GetTypeId() == TYPEID_UNIT && u2->ToCreature()->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT))
return true;
else
return false;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index ce87a7bfa72..6ceee339d70 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -6755,7 +6755,7 @@ void ObjectMgr::LoadGameObjectTemplate()
CheckGOLockId(&got, got.camera.lockId, 0);
break;
}
- case GAMEOBJECT_TYPE_MO_TRANSPORT: //15
+ case GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT: //15
{
if (got.moTransport.taxiPathId)
{
@@ -6767,7 +6767,7 @@ void ObjectMgr::LoadGameObjectTemplate()
_transportMaps.insert(transportMap);
break;
}
- case GAMEOBJECT_TYPE_SUMMONING_RITUAL: //18
+ case GAMEOBJECT_TYPE_RITUAL: //18
break;
case GAMEOBJECT_TYPE_SPELLCASTER: //22
{
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index ba67fbd1e4b..c0736fb6c42 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -51,7 +51,9 @@ enum Expansions
EXPANSION_THE_BURNING_CRUSADE = 1,
EXPANSION_WRATH_OF_THE_LICH_KING = 2,
EXPANSION_CATACLYSM = 3,
- MAX_EXPANSIONS = 4
+ EXPANSION_MISTS_OF_PANDARIA = 4,
+ EXPANSION_WARLORDS_OF_DRAENOR = 5,
+ MAX_EXPANSIONS = 6
};
enum Gender
@@ -61,7 +63,7 @@ enum Gender
GENDER_NONE = 2
};
-// Race value is index in ChrRaces.dbc
+// ChrRaces.dbc (6.0.2.18988)
enum Races
{
RACE_NONE = 0,
@@ -88,20 +90,27 @@ enum Races
//RACE_ICE_TROLL = 21,
RACE_WORGEN = 22,
//RACE_GILNEAN = 23
+ RACE_PANDAREN_NEUTRAL = 24,
+ RACE_PANDAREN_ALLIANCE = 25,
+ RACE_PANDAREN_HORDE = 26
};
// max+1 for player race
-#define MAX_RACES 23
+#define MAX_RACES 27
#define RACEMASK_ALL_PLAYABLE \
((1<<(RACE_HUMAN-1)) |(1<<(RACE_ORC-1)) |(1<<(RACE_DWARF-1)) | \
(1<<(RACE_NIGHTELF-1))|(1<<(RACE_UNDEAD_PLAYER-1))|(1<<(RACE_TAUREN-1)) | \
(1<<(RACE_GNOME-1)) |(1<<(RACE_TROLL-1)) |(1<<(RACE_BLOODELF-1))| \
- (1<<(RACE_DRAENEI-1)) |(1<<(RACE_GOBLIN-1)) |(1<<(RACE_WORGEN-1)))
+ (1<<(RACE_DRAENEI-1)) |(1<<(RACE_GOBLIN-1)) |(1<<(RACE_WORGEN-1)) | \
+ (1<<(RACE_PANDAREN_NEUTRAL-1)) | (1<<(RACE_PANDAREN_ALLIANCE-1)) | (1<<(RACE_PANDAREN_HORDE-1)))
+
+#define RACEMASK_NEUTRAL (1<<(RACE_PANDAREN_NEUTRAL-1))
#define RACEMASK_ALLIANCE \
((1<<(RACE_HUMAN-1)) | (1<<(RACE_DWARF-1)) | (1<<(RACE_NIGHTELF-1)) | \
- (1<<(RACE_GNOME-1)) | (1<<(RACE_DRAENEI-1)) | (1<<(RACE_WORGEN-1)))
+ (1<<(RACE_GNOME-1)) | (1<<(RACE_DRAENEI-1)) | (1<<(RACE_WORGEN-1)) | \
+ (1<<(RACE_PANDAREN_ALLIANCE-1)))
#define RACEMASK_HORDE RACEMASK_ALL_PLAYABLE & ~RACEMASK_ALLIANCE
@@ -118,7 +127,7 @@ enum Classes
CLASS_SHAMAN = 7,
CLASS_MAGE = 8,
CLASS_WARLOCK = 9,
- //CLASS_UNK = 10,
+ CLASS_MONK = 10,
CLASS_DRUID = 11
};
@@ -181,20 +190,26 @@ enum Stats
#define MAX_STATS 5
-enum Powers
+enum Powers // (6.0)
{
POWER_MANA = 0,
POWER_RAGE = 1,
POWER_FOCUS = 2,
POWER_ENERGY = 3,
- POWER_UNUSED = 4,
+ POWER_COMBO_POINTS = 4,
POWER_RUNES = 5,
POWER_RUNIC_POWER = 6,
POWER_SOUL_SHARDS = 7,
POWER_ECLIPSE = 8,
POWER_HOLY_POWER = 9,
POWER_ALTERNATE_POWER = 10, // Used in some quests
- MAX_POWERS = 11,
+ POWER_DARK_FORCE = 11,
+ POWER_CHI = 12,
+ POWER_SHADOW_ORBS = 13,
+ POWER_BURNING_EMBERS = 14,
+ POWER_DEMONIC_FURY = 15,
+ POWER_ARCANE_CHARGES = 16,
+ MAX_POWERS = 17,
POWER_ALL = 127, // default for class?
POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value)
};
@@ -249,14 +264,14 @@ inline SpellSchools GetFirstSchoolInMask(SpellSchoolMask mask)
enum ItemQualities
{
- ITEM_QUALITY_POOR = 0, //GREY
- ITEM_QUALITY_NORMAL = 1, //WHITE
- ITEM_QUALITY_UNCOMMON = 2, //GREEN
- ITEM_QUALITY_RARE = 3, //BLUE
- ITEM_QUALITY_EPIC = 4, //PURPLE
- ITEM_QUALITY_LEGENDARY = 5, //ORANGE
- ITEM_QUALITY_ARTIFACT = 6, //LIGHT YELLOW
- ITEM_QUALITY_HEIRLOOM = 7
+ ITEM_QUALITY_POOR = 0, // GREY
+ ITEM_QUALITY_NORMAL = 1, // WHITE
+ ITEM_QUALITY_UNCOMMON = 2, // GREEN
+ ITEM_QUALITY_RARE = 3, // BLUE
+ ITEM_QUALITY_EPIC = 4, // PURPLE
+ ITEM_QUALITY_LEGENDARY = 5, // ORANGE
+ ITEM_QUALITY_ARTIFACT = 6, // LIGHT YELLOW
+ ITEM_QUALITY_HEIRLOOM = 7
};
#define MAX_ITEM_QUALITY 8
@@ -269,14 +284,14 @@ enum SpellCategory
const uint32 ItemQualityColors[MAX_ITEM_QUALITY] =
{
- 0xff9d9d9d, //GREY
- 0xffffffff, //WHITE
- 0xff1eff00, //GREEN
- 0xff0070dd, //BLUE
- 0xffa335ee, //PURPLE
- 0xffff8000, //ORANGE
- 0xffe6cc80, //LIGHT YELLOW
- 0xffe6cc80 //LIGHT YELLOW
+ 0xff9d9d9d, // GREY
+ 0xffffffff, // WHITE
+ 0xff1eff00, // GREEN
+ 0xff0070dd, // BLUE
+ 0xffa335ee, // PURPLE
+ 0xffff8000, // ORANGE
+ 0xffe6cc80, // LIGHT YELLOW
+ 0xffe6cc80 // LIGHT YELLOW
};
// ***********************************
@@ -679,6 +694,106 @@ enum SpellAttr10
SPELL_ATTR10_UNK31 = 0x80000000 // 31
};
+enum SpellAttr11
+{
+ SPELL_ATTR11_UNK0 = 0x00000001, // 0
+ SPELL_ATTR11_UNK1 = 0x00000002, // 1
+ SPELL_ATTR11_UNK2 = 0x00000004, // 2
+ SPELL_ATTR11_UNK3 = 0x00000008, // 3
+ SPELL_ATTR11_UNK4 = 0x00000010, // 4
+ SPELL_ATTR11_UNK5 = 0x00000020, // 5
+ SPELL_ATTR11_UNK6 = 0x00000040, // 6
+ SPELL_ATTR11_UNK7 = 0x00000080, // 7
+ SPELL_ATTR11_UNK8 = 0x00000100, // 8
+ SPELL_ATTR11_UNK9 = 0x00000200, // 9
+ SPELL_ATTR11_UNK10 = 0x00000400, // 10
+ SPELL_ATTR11_UNK11 = 0x00000800, // 11
+ SPELL_ATTR11_UNK12 = 0x00001000, // 12
+ SPELL_ATTR11_UNK13 = 0x00002000, // 13
+ SPELL_ATTR11_UNK14 = 0x00004000, // 14
+ SPELL_ATTR11_UNK15 = 0x00008000, // 15
+ SPELL_ATTR11_UNK16 = 0x00010000, // 16
+ SPELL_ATTR11_UNK17 = 0x00020000, // 17
+ SPELL_ATTR11_UNK18 = 0x00040000, // 18
+ SPELL_ATTR11_UNK19 = 0x00080000, // 19
+ SPELL_ATTR11_UNK20 = 0x00100000, // 20
+ SPELL_ATTR11_UNK21 = 0x00200000, // 21
+ SPELL_ATTR11_UNK22 = 0x00400000, // 22
+ SPELL_ATTR11_UNK23 = 0x00800000, // 23
+ SPELL_ATTR11_UNK24 = 0x01000000, // 24
+ SPELL_ATTR11_UNK25 = 0x02000000, // 25
+ SPELL_ATTR11_UNK26 = 0x04000000, // 26
+ SPELL_ATTR11_UNK27 = 0x08000000, // 27
+ SPELL_ATTR11_UNK28 = 0x10000000, // 28
+ SPELL_ATTR11_UNK29 = 0x20000000, // 29
+ SPELL_ATTR11_UNK30 = 0x40000000, // 30
+ SPELL_ATTR11_UNK31 = 0x80000000 // 31
+};
+
+enum SpellAttr12
+{
+ SPELL_ATTR12_UNK0 = 0x00000001, // 0
+ SPELL_ATTR12_UNK1 = 0x00000002, // 1
+ SPELL_ATTR12_UNK2 = 0x00000004, // 2
+ SPELL_ATTR12_UNK3 = 0x00000008, // 3
+ SPELL_ATTR12_UNK4 = 0x00000010, // 4
+ SPELL_ATTR12_UNK5 = 0x00000020, // 5
+ SPELL_ATTR12_UNK6 = 0x00000040, // 6
+ SPELL_ATTR12_UNK7 = 0x00000080, // 7
+ SPELL_ATTR12_UNK8 = 0x00000100, // 8
+ SPELL_ATTR12_UNK9 = 0x00000200, // 9
+ SPELL_ATTR12_UNK10 = 0x00000400, // 10
+ SPELL_ATTR12_UNK11 = 0x00000800, // 11
+ SPELL_ATTR12_UNK12 = 0x00001000, // 12
+ SPELL_ATTR12_UNK13 = 0x00002000, // 13
+ SPELL_ATTR12_UNK14 = 0x00004000, // 14
+ SPELL_ATTR12_UNK15 = 0x00008000, // 15
+ SPELL_ATTR12_UNK16 = 0x00010000, // 16
+ SPELL_ATTR12_UNK17 = 0x00020000, // 17
+ SPELL_ATTR12_UNK18 = 0x00040000, // 18
+ SPELL_ATTR12_UNK19 = 0x00080000, // 19
+ SPELL_ATTR12_UNK20 = 0x00100000, // 20
+ SPELL_ATTR12_UNK21 = 0x00200000, // 21
+ SPELL_ATTR12_UNK22 = 0x00400000, // 22
+ SPELL_ATTR12_UNK23 = 0x00800000, // 23
+ SPELL_ATTR12_UNK24 = 0x01000000, // 24
+ SPELL_ATTR12_UNK25 = 0x02000000, // 25
+ SPELL_ATTR12_UNK26 = 0x04000000, // 26
+ SPELL_ATTR12_UNK27 = 0x08000000, // 27
+ SPELL_ATTR12_UNK28 = 0x10000000, // 28
+ SPELL_ATTR12_UNK29 = 0x20000000, // 29
+ SPELL_ATTR12_UNK30 = 0x40000000, // 30
+ SPELL_ATTR12_UNK31 = 0x80000000 // 31
+};
+
+enum SpellAttr13
+{
+ SPELL_ATTR13_UNK0 = 0x00000001, // 0
+ SPELL_ATTR13_UNK1 = 0x00000002, // 1
+ SPELL_ATTR13_UNK2 = 0x00000004, // 2
+ SPELL_ATTR13_UNK3 = 0x00000008, // 3
+ SPELL_ATTR13_UNK4 = 0x00000010, // 4
+ SPELL_ATTR13_UNK5 = 0x00000020, // 5
+ SPELL_ATTR13_UNK6 = 0x00000040, // 6
+ SPELL_ATTR13_UNK7 = 0x00000080, // 7
+ SPELL_ATTR13_UNK8 = 0x00000100, // 8
+ SPELL_ATTR13_UNK9 = 0x00000200, // 9
+ SPELL_ATTR13_UNK10 = 0x00000400, // 10
+ SPELL_ATTR13_UNK11 = 0x00000800, // 11
+ SPELL_ATTR13_UNK12 = 0x00001000, // 12
+ SPELL_ATTR13_UNK13 = 0x00002000, // 13
+ SPELL_ATTR13_UNK14 = 0x00004000, // 14
+ SPELL_ATTR13_UNK15 = 0x00008000, // 15
+ SPELL_ATTR13_UNK16 = 0x00010000, // 16
+ SPELL_ATTR13_UNK17 = 0x00020000, // 17
+ SPELL_ATTR13_UNK18 = 0x00040000, // 18
+ SPELL_ATTR13_UNK19 = 0x00080000, // 19
+ SPELL_ATTR13_UNK20 = 0x00100000, // 20
+ SPELL_ATTR13_UNK21 = 0x00200000, // 21
+ SPELL_ATTR13_UNK22 = 0x00400000, // 22
+ SPELL_ATTR13_UNK23 = 0x00800000 // 23
+};
+
#define MIN_TALENT_SPEC 0
#define MAX_TALENT_SPEC 1
#define MIN_TALENT_SPECS 1
@@ -689,11 +804,11 @@ enum SpellAttr10
// Custom values
enum SpellClickUserTypes
{
- SPELL_CLICK_USER_ANY = 0,
+ SPELL_CLICK_USER_ANY = 0,
SPELL_CLICK_USER_FRIEND = 1,
- SPELL_CLICK_USER_RAID = 2,
- SPELL_CLICK_USER_PARTY = 3,
- SPELL_CLICK_USER_MAX = 4
+ SPELL_CLICK_USER_RAID = 2,
+ SPELL_CLICK_USER_PARTY = 3,
+ SPELL_CLICK_USER_MAX = 4
};
enum SpellClickCastFlags
@@ -741,32 +856,37 @@ enum CharacterSlot
SLOT_EMPTY = 19
};
+// Languages.dbc (6.0.2.18988)
enum Language
{
- LANG_UNIVERSAL = 0,
- LANG_ORCISH = 1,
- LANG_DARNASSIAN = 2,
- LANG_TAURAHE = 3,
- LANG_DWARVISH = 6,
- LANG_COMMON = 7,
- LANG_DEMONIC = 8,
- LANG_TITAN = 9,
- LANG_THALASSIAN = 10,
- LANG_DRACONIC = 11,
- LANG_KALIMAG = 12,
- LANG_GNOMISH = 13,
- LANG_TROLL = 14,
- LANG_GUTTERSPEAK = 33,
- LANG_DRAENEI = 35,
- LANG_ZOMBIE = 36,
- LANG_GNOMISH_BINARY = 37,
- LANG_GOBLIN_BINARY = 38,
- LANG_WORGEN = 39,
- LANG_GOBLIN = 40,
- LANG_ADDON = 0xFFFFFFFF // used by addons, in 2.4.0 not exist, replaced by messagetype?
+ LANG_UNIVERSAL = 0,
+ LANG_ORCISH = 1,
+ LANG_DARNASSIAN = 2,
+ LANG_TAURAHE = 3,
+ LANG_DWARVISH = 6,
+ LANG_COMMON = 7,
+ LANG_DEMONIC = 8,
+ LANG_TITAN = 9,
+ LANG_THALASSIAN = 10,
+ LANG_DRACONIC = 11,
+ LANG_KALIMAG = 12,
+ LANG_GNOMISH = 13,
+ LANG_TROLL = 14,
+ LANG_GUTTERSPEAK = 33,
+ LANG_DRAENEI = 35,
+ LANG_ZOMBIE = 36,
+ LANG_GNOMISH_BINARY = 37,
+ LANG_GOBLIN_BINARY = 38,
+ LANG_WORGEN = 39,
+ LANG_GOBLIN = 40,
+ LANG_PANDAREN_NEUTRAL = 42,
+ LANG_PANDAREN_ALLIANCE = 43,
+ LANG_PANDAREN_HORDE = 44,
+ LANG_RIKKITUN = 168,
+ LANG_ADDON = 0xFFFFFFFF // used by addons, in 2.4.0 not exist, replaced by messagetype?
};
-#define LANGUAGES_COUNT 21
+#define LANGUAGES_COUNT 25
enum TeamId
{
@@ -974,213 +1094,249 @@ enum SpellEffects
TOTAL_SPELL_EFFECTS = 183,
};
-enum SpellCastResult
+enum SpellCastResult // (6.0)
{
- SPELL_FAILED_SUCCESS = 0,
- SPELL_FAILED_AFFECTING_COMBAT = 1,
- SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 2,
- SPELL_FAILED_ALREADY_AT_FULL_MANA = 3,
- SPELL_FAILED_ALREADY_AT_FULL_POWER = 4,
- SPELL_FAILED_ALREADY_BEING_TAMED = 5,
- SPELL_FAILED_ALREADY_HAVE_CHARM = 6,
- SPELL_FAILED_ALREADY_HAVE_SUMMON = 7,
- SPELL_FAILED_ALREADY_HAVE_PET = 8,
- SPELL_FAILED_ALREADY_OPEN = 9,
- SPELL_FAILED_AURA_BOUNCED = 10,
- SPELL_FAILED_AUTOTRACK_INTERRUPTED = 11,
- SPELL_FAILED_BAD_IMPLICIT_TARGETS = 12,
- SPELL_FAILED_BAD_TARGETS = 13,
- SPELL_FAILED_CANT_BE_CHARMED = 14,
- SPELL_FAILED_CANT_BE_DISENCHANTED = 15,
- SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL = 16,
- SPELL_FAILED_CANT_BE_MILLED = 17,
- SPELL_FAILED_CANT_BE_PROSPECTED = 18,
- SPELL_FAILED_CANT_CAST_ON_TAPPED = 19,
- SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = 20,
- SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = 21,
- SPELL_FAILED_CANT_STEALTH = 22,
- SPELL_FAILED_CASTER_AURASTATE = 23,
- SPELL_FAILED_CASTER_DEAD = 24,
- SPELL_FAILED_CHARMED = 25,
- SPELL_FAILED_CHEST_IN_USE = 26,
- SPELL_FAILED_CONFUSED = 27,
- SPELL_FAILED_DONT_REPORT = 28,
- SPELL_FAILED_EQUIPPED_ITEM = 29,
- SPELL_FAILED_EQUIPPED_ITEM_CLASS = 30,
- SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = 31,
- SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = 32,
- SPELL_FAILED_ERROR = 33,
- SPELL_FAILED_FALLING = 34,
- SPELL_FAILED_FIZZLE = 35,
- SPELL_FAILED_FLEEING = 36,
- SPELL_FAILED_FOOD_LOWLEVEL = 37,
- SPELL_FAILED_HIGHLEVEL = 38,
- SPELL_FAILED_HUNGER_SATIATED = 39,
- SPELL_FAILED_IMMUNE = 40,
- SPELL_FAILED_INCORRECT_AREA = 41,
- SPELL_FAILED_INTERRUPTED = 42,
- SPELL_FAILED_INTERRUPTED_COMBAT = 43,
- SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 44,
- SPELL_FAILED_ITEM_GONE = 45,
- SPELL_FAILED_ITEM_NOT_FOUND = 46,
- SPELL_FAILED_ITEM_NOT_READY = 47,
- SPELL_FAILED_LEVEL_REQUIREMENT = 48,
- SPELL_FAILED_LINE_OF_SIGHT = 49,
- SPELL_FAILED_LOWLEVEL = 50,
- SPELL_FAILED_LOW_CASTLEVEL = 51,
- SPELL_FAILED_MAINHAND_EMPTY = 52,
- SPELL_FAILED_MOVING = 53,
- SPELL_FAILED_NEED_AMMO = 54,
- SPELL_FAILED_NEED_AMMO_POUCH = 55,
- SPELL_FAILED_NEED_EXOTIC_AMMO = 56,
- SPELL_FAILED_NEED_MORE_ITEMS = 57,
- SPELL_FAILED_NOPATH = 58,
- SPELL_FAILED_NOT_BEHIND = 59,
- SPELL_FAILED_NOT_FISHABLE = 60,
- SPELL_FAILED_NOT_FLYING = 61,
- SPELL_FAILED_NOT_HERE = 62,
- SPELL_FAILED_NOT_INFRONT = 63,
- SPELL_FAILED_NOT_IN_CONTROL = 64,
- SPELL_FAILED_NOT_KNOWN = 65,
- SPELL_FAILED_NOT_MOUNTED = 66,
- SPELL_FAILED_NOT_ON_TAXI = 67,
- SPELL_FAILED_NOT_ON_TRANSPORT = 68,
- SPELL_FAILED_NOT_READY = 69,
- SPELL_FAILED_NOT_SHAPESHIFT = 70,
- SPELL_FAILED_NOT_STANDING = 71,
- SPELL_FAILED_NOT_TRADEABLE = 72,
- SPELL_FAILED_NOT_TRADING = 73,
- SPELL_FAILED_NOT_UNSHEATHED = 74,
- SPELL_FAILED_NOT_WHILE_GHOST = 75,
- SPELL_FAILED_NOT_WHILE_LOOTING = 76,
- SPELL_FAILED_NO_AMMO = 77,
- SPELL_FAILED_NO_CHARGES_REMAIN = 78,
- SPELL_FAILED_NO_CHAMPION = 79,
- SPELL_FAILED_NO_COMBO_POINTS = 80,
- SPELL_FAILED_NO_DUELING = 81,
- SPELL_FAILED_NO_ENDURANCE = 82,
- SPELL_FAILED_NO_FISH = 83,
- SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 84,
- SPELL_FAILED_NO_MOUNTS_ALLOWED = 85,
- SPELL_FAILED_NO_PET = 86,
- SPELL_FAILED_NO_POWER = 87,
- SPELL_FAILED_NOTHING_TO_DISPEL = 88,
- SPELL_FAILED_NOTHING_TO_STEAL = 89,
- SPELL_FAILED_ONLY_ABOVEWATER = 90,
- SPELL_FAILED_ONLY_DAYTIME = 91,
- SPELL_FAILED_ONLY_INDOORS = 92,
- SPELL_FAILED_ONLY_MOUNTED = 93,
- SPELL_FAILED_ONLY_NIGHTTIME = 94,
- SPELL_FAILED_ONLY_OUTDOORS = 95,
- SPELL_FAILED_ONLY_SHAPESHIFT = 96,
- SPELL_FAILED_ONLY_STEALTHED = 97,
- SPELL_FAILED_ONLY_UNDERWATER = 98,
- SPELL_FAILED_OUT_OF_RANGE = 99,
- SPELL_FAILED_PACIFIED = 100,
- SPELL_FAILED_POSSESSED = 101,
- SPELL_FAILED_REAGENTS = 102,
- SPELL_FAILED_REQUIRES_AREA = 103,
- SPELL_FAILED_REQUIRES_SPELL_FOCUS = 104,
- SPELL_FAILED_ROOTED = 105,
- SPELL_FAILED_SILENCED = 106,
- SPELL_FAILED_SPELL_IN_PROGRESS = 107,
- SPELL_FAILED_SPELL_LEARNED = 108,
- SPELL_FAILED_SPELL_UNAVAILABLE = 109,
- SPELL_FAILED_STUNNED = 110,
- SPELL_FAILED_TARGETS_DEAD = 111,
- SPELL_FAILED_TARGET_AFFECTING_COMBAT = 112,
- SPELL_FAILED_TARGET_AURASTATE = 113,
- SPELL_FAILED_TARGET_DUELING = 114,
- SPELL_FAILED_TARGET_ENEMY = 115,
- SPELL_FAILED_TARGET_ENRAGED = 116,
- SPELL_FAILED_TARGET_FRIENDLY = 117,
- SPELL_FAILED_TARGET_IN_COMBAT = 118,
- SPELL_FAILED_TARGET_IS_PLAYER = 119,
- SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 120,
- SPELL_FAILED_TARGET_NOT_DEAD = 121,
- SPELL_FAILED_TARGET_NOT_IN_PARTY = 122,
- SPELL_FAILED_TARGET_NOT_LOOTED = 123,
- SPELL_FAILED_TARGET_NOT_PLAYER = 124,
- SPELL_FAILED_TARGET_NO_POCKETS = 125,
- SPELL_FAILED_TARGET_NO_WEAPONS = 126,
- SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 127,
- SPELL_FAILED_TARGET_UNSKINNABLE = 128,
- SPELL_FAILED_THIRST_SATIATED = 129,
- SPELL_FAILED_TOO_CLOSE = 130,
- SPELL_FAILED_TOO_MANY_OF_ITEM = 131,
- SPELL_FAILED_TOTEM_CATEGORY = 132,
- SPELL_FAILED_TOTEMS = 133,
- SPELL_FAILED_TRY_AGAIN = 134,
- SPELL_FAILED_UNIT_NOT_BEHIND = 135,
- SPELL_FAILED_UNIT_NOT_INFRONT = 136,
- SPELL_FAILED_VISION_OBSCURED = 137,
- SPELL_FAILED_WRONG_PET_FOOD = 138,
- SPELL_FAILED_NOT_WHILE_FATIGUED = 139,
- SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 140,
- SPELL_FAILED_NOT_WHILE_TRADING = 141,
- SPELL_FAILED_TARGET_NOT_IN_RAID = 142,
- SPELL_FAILED_TARGET_FREEFORALL = 143,
- SPELL_FAILED_NO_EDIBLE_CORPSES = 144,
- SPELL_FAILED_ONLY_BATTLEGROUNDS = 145,
- SPELL_FAILED_TARGET_NOT_GHOST = 146,
- SPELL_FAILED_TRANSFORM_UNUSABLE = 147,
- SPELL_FAILED_WRONG_WEATHER = 148,
- SPELL_FAILED_DAMAGE_IMMUNE = 149,
- SPELL_FAILED_PREVENTED_BY_MECHANIC = 150,
- SPELL_FAILED_PLAY_TIME = 151,
- SPELL_FAILED_REPUTATION = 152,
- SPELL_FAILED_MIN_SKILL = 153,
- SPELL_FAILED_NOT_IN_RATED_BATTLEGROUND = 154,
- SPELL_FAILED_NOT_ON_SHAPESHIFT = 155,
- SPELL_FAILED_NOT_ON_STEALTHED = 156,
- SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 157,
- SPELL_FAILED_NOT_ON_MOUNTED = 158,
- SPELL_FAILED_TOO_SHALLOW = 159,
- SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 160,
- SPELL_FAILED_TARGET_IS_TRIVIAL = 161,
- SPELL_FAILED_BM_OR_INVISGOD = 162,
- SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 163,
- SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 164,
- SPELL_FAILED_NOT_IDLE = 165,
- SPELL_FAILED_NOT_INACTIVE = 166,
- SPELL_FAILED_PARTIAL_PLAYTIME = 167,
- SPELL_FAILED_NO_PLAYTIME = 168,
- SPELL_FAILED_NOT_IN_BATTLEGROUND = 169,
- SPELL_FAILED_NOT_IN_RAID_INSTANCE = 170,
- SPELL_FAILED_ONLY_IN_ARENA = 171,
- SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 172,
- SPELL_FAILED_ON_USE_ENCHANT = 173,
- SPELL_FAILED_NOT_ON_GROUND = 174,
- SPELL_FAILED_CUSTOM_ERROR = 175,
- SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 176,
- SPELL_FAILED_TOO_MANY_SOCKETS = 177,
- SPELL_FAILED_INVALID_GLYPH = 178,
- SPELL_FAILED_UNIQUE_GLYPH = 179,
- SPELL_FAILED_GLYPH_SOCKET_LOCKED = 180,
- SPELL_FAILED_NO_VALID_TARGETS = 181,
- SPELL_FAILED_ITEM_AT_MAX_CHARGES = 182,
- SPELL_FAILED_NOT_IN_BARBERSHOP = 183,
- SPELL_FAILED_FISHING_TOO_LOW = 184,
- SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW = 185,
- SPELL_FAILED_SUMMON_PENDING = 186,
- SPELL_FAILED_MAX_SOCKETS = 187,
- SPELL_FAILED_PET_CAN_RENAME = 188,
- SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED = 189,
- SPELL_FAILED_NO_ACTIONS = 190,
- SPELL_FAILED_CURRENCY_WEIGHT_MISMATCH = 191,
- SPELL_FAILED_WEIGHT_NOT_ENOUGH = 192,
- SPELL_FAILED_WEIGHT_TOO_MUCH = 193,
- SPELL_FAILED_NO_VACANT_SEAT = 194,
- SPELL_FAILED_NO_LIQUID = 195,
- SPELL_FAILED_ONLY_NOT_SWIMMING = 196,
- SPELL_FAILED_BY_NOT_MOVING = 197,
- SPELL_FAILED_IN_COMBAT_RES_LIMIT_REACHED = 198,
- SPELL_FAILED_NOT_IN_ARENA = 199,
- SPELL_FAILED_TARGET_NOT_GROUNDED = 200,
- SPELL_FAILED_EXCEEDED_WEEKLY_USAGE = 201,
- SPELL_FAILED_NOT_IN_LFG_DUNGEON = 202,
- SPELL_FAILED_UNKNOWN = 254, // custom value, default case
- SPELL_CAST_OK = 255, // custom value, must not be sent to client
+ SPELL_FAILED_SUCCESS = 0,
+ SPELL_FAILED_AFFECTING_COMBAT = 1,
+ SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 2,
+ SPELL_FAILED_ALREADY_AT_FULL_MANA = 3,
+ SPELL_FAILED_ALREADY_AT_FULL_POWER = 4,
+ SPELL_FAILED_ALREADY_BEING_TAMED = 5,
+ SPELL_FAILED_ALREADY_HAVE_CHARM = 6,
+ SPELL_FAILED_ALREADY_HAVE_SUMMON = 7,
+ SPELL_FAILED_ALREADY_HAVE_PET = 8,
+ SPELL_FAILED_ALREADY_OPEN = 9,
+ SPELL_FAILED_AURA_BOUNCED = 10,
+ SPELL_FAILED_AUTOTRACK_INTERRUPTED = 11,
+ SPELL_FAILED_BAD_IMPLICIT_TARGETS = 12,
+ SPELL_FAILED_BAD_TARGETS = 13,
+ SPELL_FAILED_PVP_TARGET_WHILE_UNFLAGGED = 14,
+ SPELL_FAILED_CANT_BE_CHARMED = 15,
+ SPELL_FAILED_CANT_BE_DISENCHANTED = 16,
+ SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL = 17,
+ SPELL_FAILED_CANT_BE_MILLED = 18,
+ SPELL_FAILED_CANT_BE_PROSPECTED = 19,
+ SPELL_FAILED_CANT_CAST_ON_TAPPED = 20,
+ SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = 21,
+ SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = 22,
+ SPELL_FAILED_CANT_STEALTH = 23,
+ SPELL_FAILED_CANT_UNTALENT = 24,
+ SPELL_FAILED_CASTER_AURASTATE = 25,
+ SPELL_FAILED_CASTER_DEAD = 26,
+ SPELL_FAILED_CHARMED = 27,
+ SPELL_FAILED_CHEST_IN_USE = 28,
+ SPELL_FAILED_CONFUSED = 29,
+ SPELL_FAILED_DONT_REPORT = 30,
+ SPELL_FAILED_EQUIPPED_ITEM = 31,
+ SPELL_FAILED_EQUIPPED_ITEM_CLASS = 32,
+ SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = 33,
+ SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = 34,
+ SPELL_FAILED_ERROR = 35,
+ SPELL_FAILED_FALLING = 36,
+ SPELL_FAILED_FIZZLE = 37,
+ SPELL_FAILED_FLEEING = 38,
+ SPELL_FAILED_FOOD_LOWLEVEL = 39,
+ SPELL_FAILED_GARRISON_NOT_OWNED = 40,
+ SPELL_FAILED_GARRISON_OWNED = 41,
+ SPELL_FAILED_GARRISON_MAX_LEVEL = 42,
+ SPELL_FAILED_GARRISON_NOT_UPGRADEABLE = 43,
+ SPELL_FAILED_HIGHLEVEL = 44,
+ SPELL_FAILED_HUNGER_SATIATED = 45,
+ SPELL_FAILED_IMMUNE = 46,
+ SPELL_FAILED_INCORRECT_AREA = 47,
+ SPELL_FAILED_INTERRUPTED = 48,
+ SPELL_FAILED_INTERRUPTED_COMBAT = 49,
+ SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 50,
+ SPELL_FAILED_ITEM_GONE = 51,
+ SPELL_FAILED_ITEM_NOT_FOUND = 52,
+ SPELL_FAILED_ITEM_NOT_READY = 53,
+ SPELL_FAILED_LEVEL_REQUIREMENT = 54,
+ SPELL_FAILED_LINE_OF_SIGHT = 55,
+ SPELL_FAILED_LOWLEVEL = 56,
+ SPELL_FAILED_LOW_CASTLEVEL = 57,
+ SPELL_FAILED_MAINHAND_EMPTY = 58,
+ SPELL_FAILED_MOVING = 59,
+ SPELL_FAILED_NEED_AMMO = 60,
+ SPELL_FAILED_NEED_AMMO_POUCH = 61,
+ SPELL_FAILED_NEED_EXOTIC_AMMO = 62,
+ SPELL_FAILED_NEED_MORE_ITEMS = 63,
+ SPELL_FAILED_NOPATH = 64,
+ SPELL_FAILED_NOT_BEHIND = 65,
+ SPELL_FAILED_NOT_FISHABLE = 66,
+ SPELL_FAILED_NOT_FLYING = 67,
+ SPELL_FAILED_NOT_HERE = 68,
+ SPELL_FAILED_NOT_INFRONT = 69,
+ SPELL_FAILED_NOT_IN_CONTROL = 70,
+ SPELL_FAILED_NOT_KNOWN = 71,
+ SPELL_FAILED_NOT_MOUNTED = 72,
+ SPELL_FAILED_NOT_ON_TAXI = 73,
+ SPELL_FAILED_NOT_ON_TRANSPORT = 74,
+ SPELL_FAILED_NOT_READY = 75,
+ SPELL_FAILED_NOT_SHAPESHIFT = 76,
+ SPELL_FAILED_NOT_STANDING = 77,
+ SPELL_FAILED_NOT_TRADEABLE = 78,
+ SPELL_FAILED_NOT_TRADING = 79,
+ SPELL_FAILED_NOT_UNSHEATHED = 80,
+ SPELL_FAILED_NOT_WHILE_GHOST = 81,
+ SPELL_FAILED_NOT_WHILE_LOOTING = 82,
+ SPELL_FAILED_NO_AMMO = 83,
+ SPELL_FAILED_NO_CHARGES_REMAIN = 84,
+ SPELL_FAILED_NO_CHAMPION = 85,
+ SPELL_FAILED_NO_COMBO_POINTS = 86,
+ SPELL_FAILED_NO_DUELING = 87,
+ SPELL_FAILED_NO_ENDURANCE = 88,
+ SPELL_FAILED_NO_FISH = 89,
+ SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 90,
+ SPELL_FAILED_NO_MOUNTS_ALLOWED = 91,
+ SPELL_FAILED_NO_PET = 92,
+ SPELL_FAILED_NO_POWER = 93,
+ SPELL_FAILED_NOTHING_TO_DISPEL = 94,
+ SPELL_FAILED_NOTHING_TO_STEAL = 95,
+ SPELL_FAILED_ONLY_ABOVEWATER = 96,
+ SPELL_FAILED_ONLY_DAYTIME = 97,
+ SPELL_FAILED_ONLY_INDOORS = 98,
+ SPELL_FAILED_ONLY_MOUNTED = 99,
+ SPELL_FAILED_ONLY_NIGHTTIME = 100,
+ SPELL_FAILED_ONLY_OUTDOORS = 101,
+ SPELL_FAILED_ONLY_SHAPESHIFT = 102,
+ SPELL_FAILED_ONLY_STEALTHED = 103,
+ SPELL_FAILED_ONLY_UNDERWATER = 104,
+ SPELL_FAILED_OUT_OF_RANGE = 105,
+ SPELL_FAILED_PACIFIED = 106,
+ SPELL_FAILED_POSSESSED = 107,
+ SPELL_FAILED_REAGENTS = 108,
+ SPELL_FAILED_REQUIRES_AREA = 109,
+ SPELL_FAILED_REQUIRES_SPELL_FOCUS = 110,
+ SPELL_FAILED_ROOTED = 111,
+ SPELL_FAILED_SILENCED = 112,
+ SPELL_FAILED_SPELL_IN_PROGRESS = 113,
+ SPELL_FAILED_SPELL_LEARNED = 114,
+ SPELL_FAILED_SPELL_UNAVAILABLE = 115,
+ SPELL_FAILED_STUNNED = 116,
+ SPELL_FAILED_TARGETS_DEAD = 117,
+ SPELL_FAILED_TARGET_AFFECTING_COMBAT = 118,
+ SPELL_FAILED_TARGET_AURASTATE = 119,
+ SPELL_FAILED_TARGET_DUELING = 120,
+ SPELL_FAILED_TARGET_ENEMY = 121,
+ SPELL_FAILED_TARGET_ENRAGED = 122,
+ SPELL_FAILED_TARGET_FRIENDLY = 123,
+ SPELL_FAILED_TARGET_IN_COMBAT = 124,
+ SPELL_FAILED_TARGET_IN_PET_BATTLE = 125,
+ SPELL_FAILED_TARGET_IS_PLAYER = 126,
+ SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 127,
+ SPELL_FAILED_TARGET_NOT_DEAD = 128,
+ SPELL_FAILED_TARGET_NOT_IN_PARTY = 129,
+ SPELL_FAILED_TARGET_NOT_LOOTED = 130,
+ SPELL_FAILED_TARGET_NOT_PLAYER = 131,
+ SPELL_FAILED_TARGET_NO_POCKETS = 132,
+ SPELL_FAILED_TARGET_NO_WEAPONS = 133,
+ SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 134,
+ SPELL_FAILED_TARGET_UNSKINNABLE = 135,
+ SPELL_FAILED_THIRST_SATIATED = 136,
+ SPELL_FAILED_TOO_CLOSE = 137,
+ SPELL_FAILED_TOO_MANY_OF_ITEM = 138,
+ SPELL_FAILED_TOTEM_CATEGORY = 139,
+ SPELL_FAILED_TOTEMS = 140,
+ SPELL_FAILED_TRY_AGAIN = 141,
+ SPELL_FAILED_UNIT_NOT_BEHIND = 142,
+ SPELL_FAILED_UNIT_NOT_INFRONT = 143,
+ SPELL_FAILED_VISION_OBSCURED = 144,
+ SPELL_FAILED_WRONG_PET_FOOD = 145,
+ SPELL_FAILED_NOT_WHILE_FATIGUED = 146,
+ SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 147,
+ SPELL_FAILED_NOT_WHILE_TRADING = 148,
+ SPELL_FAILED_TARGET_NOT_IN_RAID = 149,
+ SPELL_FAILED_TARGET_FREEFORALL = 150,
+ SPELL_FAILED_NO_EDIBLE_CORPSES = 151,
+ SPELL_FAILED_ONLY_BATTLEGROUNDS = 152,
+ SPELL_FAILED_TARGET_NOT_GHOST = 153,
+ SPELL_FAILED_TRANSFORM_UNUSABLE = 154,
+ SPELL_FAILED_WRONG_WEATHER = 155,
+ SPELL_FAILED_DAMAGE_IMMUNE = 156,
+ SPELL_FAILED_PREVENTED_BY_MECHANIC = 157,
+ SPELL_FAILED_PLAY_TIME = 158,
+ SPELL_FAILED_REPUTATION = 159,
+ SPELL_FAILED_MIN_SKILL = 160,
+ SPELL_FAILED_NOT_IN_RATED_BATTLEGROUND = 161,
+ SPELL_FAILED_NOT_ON_SHAPESHIFT = 162,
+ SPELL_FAILED_NOT_ON_STEALTHED = 163,
+ SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 164,
+ SPELL_FAILED_NOT_ON_MOUNTED = 165,
+ SPELL_FAILED_TOO_SHALLOW = 166,
+ SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 167,
+ SPELL_FAILED_TARGET_IS_TRIVIAL = 168,
+ SPELL_FAILED_BM_OR_INVISGOD = 169,
+ SPELL_FAILED_GROUND_MOUNT_NOT_ALLOWED = 170,
+ SPELL_FAILED_FLOATING_MOUNT_NOT_ALLOWED = 171,
+ SPELL_FAILED_UNDERWATER_MOUNT_NOT_ALLOWED = 172,
+ SPELL_FAILED_FLYING_MOUNT_NOT_ALLOWED = 173,
+ SPELL_FAILED_APPRENTICE_RIDING_REQUIREMENT = 174,
+ SPELL_FAILED_JOURNEYMAN_RIDING_REQUIREMENT = 175,
+ SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 176,
+ SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 177,
+ SPELL_FAILED_MASTER_RIDING_REQUIREMENT = 178,
+ SPELL_FAILED_COLD_RIDING_REQUIREMENT = 179,
+ SPELL_FAILED_FLIGHT_MASTER_RIDING_REQUIREMENT = 180,
+ SPELL_FAILED_CS_RIDING_REQUIREMENT = 181,
+ SPELL_FAILED_PANDA_RIDING_REQUIREMENT = 182,
+ SPELL_FAILED_MOUNT_NO_FLOAT_HERE = 183,
+ SPELL_FAILED_MOUNT_NO_UNDERWATER_HERE = 184,
+ SPELL_FAILED_MOUNT_ABOVE_WATER_HERE = 185,
+ SPELL_FAILED_MOUNT_COLLECTED_ON_OTHER_CHAR = 186,
+ SPELL_FAILED_NOT_IDLE = 187,
+ SPELL_FAILED_NOT_INACTIVE = 188,
+ SPELL_FAILED_PARTIAL_PLAYTIME = 189,
+ SPELL_FAILED_NO_PLAYTIME = 190,
+ SPELL_FAILED_NOT_IN_BATTLEGROUND = 191,
+ SPELL_FAILED_NOT_IN_RAID_INSTANCE = 192,
+ SPELL_FAILED_ONLY_IN_ARENA = 193,
+ SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 194,
+ SPELL_FAILED_ON_USE_ENCHANT = 195,
+ SPELL_FAILED_NOT_ON_GROUND = 196,
+ SPELL_FAILED_CUSTOM_ERROR = 197,
+ SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 198,
+ SPELL_FAILED_TOO_MANY_SOCKETS = 199,
+ SPELL_FAILED_INVALID_GLYPH = 200,
+ SPELL_FAILED_UNIQUE_GLYPH = 201,
+ SPELL_FAILED_GLYPH_SOCKET_LOCKED = 202,
+ SPELL_FAILED_GLYPH_EXCLUSIVE_CATEGORY = 203,
+ SPELL_FAILED_GLYPH_INVALID_SPEC = 204,
+ SPELL_FAILED_GLYPH_NO_SPEC = 205,
+ SPELL_FAILED_NO_VALID_TARGETS = 206,
+ SPELL_FAILED_ITEM_AT_MAX_CHARGES = 207,
+ SPELL_FAILED_NOT_IN_BARBERSHOP = 208,
+ SPELL_FAILED_FISHING_TOO_LOW = 209,
+ SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW = 210,
+ SPELL_FAILED_SUMMON_PENDING = 211,
+ SPELL_FAILED_MAX_SOCKETS = 212,
+ SPELL_FAILED_PET_CAN_RENAME = 213,
+ SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED = 214,
+ SPELL_FAILED_TARGET_HAS_RESURRECT_PENDING = 215,
+ SPELL_FAILED_NO_ACTIONS = 216,
+ SPELL_FAILED_CURRENCY_WEIGHT_MISMATCH = 217,
+ SPELL_FAILED_WEIGHT_NOT_ENOUGH = 218,
+ SPELL_FAILED_WEIGHT_TOO_MUCH = 219,
+ SPELL_FAILED_NO_VACANT_SEAT = 220,
+ SPELL_FAILED_NO_LIQUID = 221,
+ SPELL_FAILED_ONLY_NOT_SWIMMING = 222,
+ SPELL_FAILED_BY_NOT_MOVING = 223,
+ SPELL_FAILED_IN_COMBAT_RES_LIMIT_REACHED = 224,
+ SPELL_FAILED_NOT_IN_ARENA = 225,
+ SPELL_FAILED_TARGET_NOT_GROUNDED = 226,
+ SPELL_FAILED_EXCEEDED_WEEKLY_USAGE = 227,
+ SPELL_FAILED_NOT_IN_LFG_DUNGEON = 228,
+ SPELL_FAILED_BAD_TARGET_FILTER = 229,
+ SPELL_FAILED_NOT_ENOUGH_TARGETS = 230,
+ SPELL_FAILED_NO_SPEC = 231,
+ SPELL_FAILED_CANT_ADD_BATTLE_PET = 232,
+ SPELL_FAILED_CANT_UPGRADE_BATTLE_PET = 233,
+ SPELL_FAILED_WRONG_BATTLE_PET_TYPE = 234,
+ SPELL_FAILED_NO_DUNGEON_ENCOUNTER = 235,
+ SPELL_FAILED_NO_TELEPORT_FROM_DUNGEON = 236,
+ SPELL_FAILED_MAX_LEVEL_TOO_LOW = 237,
+ SPELL_FAILED_CANT_REPLACE_ITEM_BONUS = 238,
+ SPELL_FAILED_UNKNOWN = 254, // custom value, default case
+ SPELL_CAST_OK = 255 // custom value, must not be sent to client
};
enum SpellCustomErrors
@@ -1461,7 +1617,7 @@ enum Mechanics
MECHANIC_INTERRUPT = 26,
MECHANIC_DAZE = 27,
MECHANIC_DISCOVERY = 28,
- MECHANIC_IMMUNE_SHIELD = 29, // Divine (Blessing) Shield/Protection and Ice Block
+ MECHANIC_IMMUNE_SHIELD = 29, // Divine (Blessing) Shield/Protection and Ice Block
MECHANIC_SAPPED = 30,
MECHANIC_ENRAGED = 31,
MECHANIC_WOUNDED = 32,
@@ -1683,47 +1839,57 @@ enum SpellPreventionType
SPELL_PREVENTION_TYPE_UNK = 3 // Only a few spells have this, but most of the should be interruptable.
};
-enum GameobjectTypes
+enum GameobjectTypes // (6.0.2.18988)
{
- GAMEOBJECT_TYPE_DOOR = 0,
- GAMEOBJECT_TYPE_BUTTON = 1,
- GAMEOBJECT_TYPE_QUESTGIVER = 2,
- GAMEOBJECT_TYPE_CHEST = 3,
- GAMEOBJECT_TYPE_BINDER = 4,
- GAMEOBJECT_TYPE_GENERIC = 5,
- GAMEOBJECT_TYPE_TRAP = 6,
- GAMEOBJECT_TYPE_CHAIR = 7,
- GAMEOBJECT_TYPE_SPELL_FOCUS = 8,
- GAMEOBJECT_TYPE_TEXT = 9,
- GAMEOBJECT_TYPE_GOOBER = 10,
- GAMEOBJECT_TYPE_TRANSPORT = 11,
- GAMEOBJECT_TYPE_AREADAMAGE = 12,
- GAMEOBJECT_TYPE_CAMERA = 13,
- GAMEOBJECT_TYPE_MAP_OBJECT = 14,
- GAMEOBJECT_TYPE_MO_TRANSPORT = 15,
- GAMEOBJECT_TYPE_DUEL_ARBITER = 16,
- GAMEOBJECT_TYPE_FISHINGNODE = 17,
- GAMEOBJECT_TYPE_SUMMONING_RITUAL = 18,
- GAMEOBJECT_TYPE_MAILBOX = 19,
- GAMEOBJECT_TYPE_DO_NOT_USE = 20,
- GAMEOBJECT_TYPE_GUARDPOST = 21,
- GAMEOBJECT_TYPE_SPELLCASTER = 22,
- GAMEOBJECT_TYPE_MEETINGSTONE = 23,
- GAMEOBJECT_TYPE_FLAGSTAND = 24,
- GAMEOBJECT_TYPE_FISHINGHOLE = 25,
- GAMEOBJECT_TYPE_FLAGDROP = 26,
- GAMEOBJECT_TYPE_MINI_GAME = 27,
- GAMEOBJECT_TYPE_DO_NOT_USE_2 = 28,
- GAMEOBJECT_TYPE_CAPTURE_POINT = 29,
- GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
- GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
- GAMEOBJECT_TYPE_BARBER_CHAIR = 32,
- GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
- GAMEOBJECT_TYPE_GUILD_BANK = 34,
- GAMEOBJECT_TYPE_TRAPDOOR = 35
+ GAMEOBJECT_TYPE_DOOR = 0,
+ GAMEOBJECT_TYPE_BUTTON = 1,
+ GAMEOBJECT_TYPE_QUESTGIVER = 2,
+ GAMEOBJECT_TYPE_CHEST = 3,
+ GAMEOBJECT_TYPE_BINDER = 4,
+ GAMEOBJECT_TYPE_GENERIC = 5,
+ GAMEOBJECT_TYPE_TRAP = 6,
+ GAMEOBJECT_TYPE_CHAIR = 7,
+ GAMEOBJECT_TYPE_SPELL_FOCUS = 8,
+ GAMEOBJECT_TYPE_TEXT = 9,
+ GAMEOBJECT_TYPE_GOOBER = 10,
+ GAMEOBJECT_TYPE_TRANSPORT = 11,
+ GAMEOBJECT_TYPE_AREADAMAGE = 12,
+ GAMEOBJECT_TYPE_CAMERA = 13,
+ GAMEOBJECT_TYPE_MAP_OBJECT = 14,
+ GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT = 15,
+ GAMEOBJECT_TYPE_DUEL_ARBITER = 16,
+ GAMEOBJECT_TYPE_FISHINGNODE = 17,
+ GAMEOBJECT_TYPE_RITUAL = 18,
+ GAMEOBJECT_TYPE_MAILBOX = 19,
+ GAMEOBJECT_TYPE_DO_NOT_USE = 20,
+ GAMEOBJECT_TYPE_GUARDPOST = 21,
+ GAMEOBJECT_TYPE_SPELLCASTER = 22,
+ GAMEOBJECT_TYPE_MEETINGSTONE = 23,
+ GAMEOBJECT_TYPE_FLAGSTAND = 24,
+ GAMEOBJECT_TYPE_FISHINGHOLE = 25,
+ GAMEOBJECT_TYPE_FLAGDROP = 26,
+ GAMEOBJECT_TYPE_MINI_GAME = 27,
+ GAMEOBJECT_TYPE_DO_NOT_USE_2 = 28,
+ GAMEOBJECT_TYPE_CONTROL_ZONE = 29,
+ GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
+ GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
+ GAMEOBJECT_TYPE_BARBER_CHAIR = 32,
+ GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
+ GAMEOBJECT_TYPE_GUILD_BANK = 34,
+ GAMEOBJECT_TYPE_TRAPDOOR = 35,
+ GAMEOBJECT_TYPE_NEW_FLAG = 36,
+ GAMEOBJECT_TYPE_NEW_FLAG_DROP = 37,
+ GAMEOBJECT_TYPE_GARRISON_BUILDING = 38,
+ GAMEOBJECT_TYPE_GARRISON_PLOT = 39,
+ GAMEOBJECT_TYPE_CLIENT_CREATURE = 40,
+ GAMEOBJECT_TYPE_CLIENT_ITEM = 41,
+ GAMEOBJECT_TYPE_CAPTURE_POINT = 42,
+ GAMEOBJECT_TYPE_TROPHY = 43,
+ GAMEOBJECT_TYPE_PHASEABLE_MO = 44,
+ GAMEOBJECT_TYPE_SHIPMENT = 45
};
-#define MAX_GAMEOBJECT_TYPE 36 // sending to client this or greater value can crash client.
+#define MAX_GAMEOBJECT_TYPE 46 // sending to client this or greater value can crash client.
#define MAX_GAMEOBJECT_DATA 32 // Max number of uint32 vars in gameobject_template data field
enum GameObjectFlags
@@ -1756,7 +1922,7 @@ enum GameObjectDestructibleState
GO_DESTRUCTIBLE_REBUILDING = 3
};
-// EmotesText.dbc
+// EmotesText.dbc (6.0.2.18988)
enum TextEmotes
{
TEXT_EMOTE_AGREE = 1,
@@ -2011,864 +2177,1103 @@ enum TextEmotes
TEXT_EMOTE_OBJECT = 450,
TEXT_EMOTE_SWEAT = 451,
TEXT_EMOTE_YW = 453,
- TEXT_EMOTE_READ = 456
+ TEXT_EMOTE_READ = 456,
+ TEXT_EMOTE_BOOT = 506
};
-// Emotes.dbc
+// Emotes.dbc (6.0.2.18988)
enum Emote
{
- EMOTE_ONESHOT_NONE = 0,
- EMOTE_ONESHOT_TALK = 1,
- EMOTE_ONESHOT_BOW = 2,
- EMOTE_ONESHOT_WAVE = 3,
- EMOTE_ONESHOT_CHEER = 4,
- EMOTE_ONESHOT_EXCLAMATION = 5,
- EMOTE_ONESHOT_QUESTION = 6,
- EMOTE_ONESHOT_EAT = 7,
- EMOTE_STATE_DANCE = 10,
- EMOTE_ONESHOT_LAUGH = 11,
- EMOTE_STATE_SLEEP = 12,
- EMOTE_STATE_SIT = 13,
- EMOTE_ONESHOT_RUDE = 14,
- EMOTE_ONESHOT_ROAR = 15,
- EMOTE_ONESHOT_KNEEL = 16,
- EMOTE_ONESHOT_KISS = 17,
- EMOTE_ONESHOT_CRY = 18,
- EMOTE_ONESHOT_CHICKEN = 19,
- EMOTE_ONESHOT_BEG = 20,
- EMOTE_ONESHOT_APPLAUD = 21,
- EMOTE_ONESHOT_SHOUT = 22,
- EMOTE_ONESHOT_FLEX = 23,
- EMOTE_ONESHOT_SHY = 24,
- EMOTE_ONESHOT_POINT = 25,
- EMOTE_STATE_STAND = 26,
- EMOTE_STATE_READY_UNARMED = 27,
- EMOTE_STATE_WORK_SHEATHED = 28,
- EMOTE_STATE_POINT = 29,
- EMOTE_STATE_NONE = 30,
- EMOTE_ONESHOT_WOUND = 33,
- EMOTE_ONESHOT_WOUND_CRITICAL = 34,
- EMOTE_ONESHOT_ATTACK_UNARMED = 35,
- EMOTE_ONESHOT_ATTACK1H = 36,
- EMOTE_ONESHOT_ATTACK2HTIGHT = 37,
- EMOTE_ONESHOT_ATTACK2H_LOOSE = 38,
- EMOTE_ONESHOT_PARRY_UNARMED = 39,
- EMOTE_ONESHOT_PARRY_SHIELD = 43,
- EMOTE_ONESHOT_READY_UNARMED = 44,
- EMOTE_ONESHOT_READY1H = 45,
- EMOTE_ONESHOT_READY_BOW = 48,
- EMOTE_ONESHOT_SPELL_PRECAST = 50,
- EMOTE_ONESHOT_SPELL_CAST = 51,
- EMOTE_ONESHOT_BATTLE_ROAR = 53,
- EMOTE_ONESHOT_SPECIALATTACK1H = 54,
- EMOTE_ONESHOT_KICK = 60,
- EMOTE_ONESHOT_ATTACK_THROWN = 61,
- EMOTE_STATE_STUN = 64,
- EMOTE_STATE_DEAD = 65,
- EMOTE_ONESHOT_SALUTE = 66,
- EMOTE_STATE_KNEEL = 68,
- EMOTE_STATE_USE_STANDING = 69,
- EMOTE_ONESHOT_WAVE_NO_SHEATHE = 70,
- EMOTE_ONESHOT_CHEER_NO_SHEATHE = 71,
- EMOTE_ONESHOT_EAT_NO_SHEATHE = 92,
- EMOTE_STATE_STUN_NO_SHEATHE = 93,
- EMOTE_ONESHOT_DANCE = 94,
- EMOTE_ONESHOT_SALUTE_NO_SHEATH = 113,
- EMOTE_STATE_USE_STANDING_NO_SHEATHE = 133,
- EMOTE_ONESHOT_LAUGH_NO_SHEATHE = 153,
- EMOTE_STATE_WORK = 173,
- EMOTE_STATE_SPELL_PRECAST = 193,
- EMOTE_ONESHOT_READY_RIFLE = 213,
- EMOTE_STATE_READY_RIFLE = 214,
- EMOTE_STATE_WORK_MINING = 233,
- EMOTE_STATE_WORK_CHOPWOOD = 234,
- EMOTE_STATE_APPLAUD = 253,
- EMOTE_ONESHOT_LIFTOFF = 254,
- EMOTE_ONESHOT_YES = 273,
- EMOTE_ONESHOT_NO = 274,
- EMOTE_ONESHOT_TRAIN = 275,
- EMOTE_ONESHOT_LAND = 293,
- EMOTE_STATE_AT_EASE = 313,
- EMOTE_STATE_READY1H = 333,
- EMOTE_STATE_SPELL_KNEEL_START = 353,
- EMOTE_STATE_SUBMERGED = 373,
- EMOTE_ONESHOT_SUBMERGE = 374,
- EMOTE_STATE_READY2H = 375,
- EMOTE_STATE_READY_BOW = 376,
- EMOTE_ONESHOT_MOUNT_SPECIAL = 377,
- EMOTE_STATE_TALK = 378,
- EMOTE_STATE_FISHING = 379,
- EMOTE_ONESHOT_FISHING = 380,
- EMOTE_ONESHOT_LOOT = 381,
- EMOTE_STATE_WHIRLWIND = 382,
- EMOTE_STATE_DROWNED = 383,
- EMOTE_STATE_HOLD_BOW = 384,
- EMOTE_STATE_HOLD_RIFLE = 385,
- EMOTE_STATE_HOLD_THROWN = 386,
- EMOTE_ONESHOT_DROWN = 387,
- EMOTE_ONESHOT_STOMP = 388,
- EMOTE_ONESHOT_ATTACK_OFF = 389,
- EMOTE_ONESHOT_ATTACK_OFF_PIERCE = 390,
- EMOTE_STATE_ROAR = 391,
- EMOTE_STATE_LAUGH = 392,
- EMOTE_ONESHOT_CREATURE_SPECIAL = 393,
- EMOTE_ONESHOT_JUMPLANDRUN = 394,
- EMOTE_ONESHOT_JUMPEND = 395,
- EMOTE_ONESHOT_TALK_NO_SHEATHE = 396,
- EMOTE_ONESHOT_POINT_NO_SHEATHE = 397,
- EMOTE_STATE_CANNIBALIZE = 398,
- EMOTE_ONESHOT_JUMPSTART = 399,
- EMOTE_STATE_DANCESPECIAL = 400,
- EMOTE_ONESHOT_DANCESPECIAL = 401,
- EMOTE_ONESHOT_CUSTOM_SPELL_01 = 402,
- EMOTE_ONESHOT_CUSTOM_SPELL_02 = 403,
- EMOTE_ONESHOT_CUSTOM_SPELL_03 = 404,
- EMOTE_ONESHOT_CUSTOM_SPELL_04 = 405,
- EMOTE_ONESHOT_CUSTOM_SPELL_05 = 406,
- EMOTE_ONESHOT_CUSTOM_SPELL_06 = 407,
- EMOTE_ONESHOT_CUSTOM_SPELL_07 = 408,
- EMOTE_ONESHOT_CUSTOM_SPELL_08 = 409,
- EMOTE_ONESHOT_CUSTOM_SPELL_09 = 410,
- EMOTE_ONESHOT_CUSTOM_SPELL_10 = 411,
- EMOTE_STATE_EXCLAIM = 412,
- EMOTE_STATE_DANCE_CUSTOM = 413,
- EMOTE_STATE_SIT_CHAIR_MED = 415,
- EMOTE_STATE_CUSTOM_SPELL_01 = 416,
- EMOTE_STATE_CUSTOM_SPELL_02 = 417,
- EMOTE_STATE_EAT = 418,
- EMOTE_STATE_CUSTOM_SPELL_04 = 419,
- EMOTE_STATE_CUSTOM_SPELL_03 = 420,
- EMOTE_STATE_CUSTOM_SPELL_05 = 421,
- EMOTE_STATE_SPELLEFFECT_HOLD = 422,
- EMOTE_STATE_EAT_NO_SHEATHE = 423,
- EMOTE_STATE_MOUNT = 424,
- EMOTE_STATE_READY2HL = 425,
- EMOTE_STATE_SIT_CHAIR_HIGH = 426,
- EMOTE_STATE_FALL = 427,
- EMOTE_STATE_LOOT = 428,
- EMOTE_STATE_SUBMERGED_NEW = 429,
- EMOTE_ONESHOT_COWER = 430,
- EMOTE_STATE_COWER = 431,
- EMOTE_ONESHOT_USE_STANDING = 432,
- EMOTE_STATE_STEALTH_STAND = 433,
- EMOTE_ONESHOT_OMNICAST_GHOUL = 434,
- EMOTE_ONESHOT_ATTACK_BOW = 435,
- EMOTE_ONESHOT_ATTACK_RIFLE = 436,
- EMOTE_STATE_SWIM_IDLE = 437,
- EMOTE_STATE_ATTACK_UNARMED = 438,
- EMOTE_ONESHOT_SPELL_CAST_W_SOUND = 439,
- EMOTE_ONESHOT_DODGE = 440,
- EMOTE_ONESHOT_PARRY1H = 441,
- EMOTE_ONESHOT_PARRY2H = 442,
- EMOTE_ONESHOT_PARRY2HL = 443,
- EMOTE_STATE_FLYFALL = 444,
- EMOTE_ONESHOT_FLYDEATH = 445,
- EMOTE_STATE_FLY_FALL = 446,
- EMOTE_ONESHOT_FLY_SIT_GROUND_DOWN = 447,
- EMOTE_ONESHOT_FLY_SIT_GROUND_UP = 448,
- EMOTE_ONESHOT_EMERGE = 449,
- EMOTE_ONESHOT_DRAGON_SPIT = 450,
- EMOTE_STATE_SPECIAL_UNARMED = 451,
- EMOTE_ONESHOT_FLYGRAB = 452,
- EMOTE_STATE_FLYGRABCLOSED = 453,
- EMOTE_ONESHOT_FLYGRABTHROWN = 454,
- EMOTE_STATE_FLY_SIT_GROUND = 455,
- EMOTE_STATE_WALK_BACKWARDS = 456,
- EMOTE_ONESHOT_FLYTALK = 457,
- EMOTE_ONESHOT_FLYATTACK1H = 458,
- EMOTE_STATE_CUSTOM_SPELL_08 = 459,
- EMOTE_ONESHOT_FLY_DRAGON_SPIT = 460,
- EMOTE_STATE_SIT_CHAIR_LOW = 461,
- EMOTE_ONESHOT_STUN = 462,
- EMOTE_ONESHOT_SPELL_CAST_OMNI = 463,
- EMOTE_STATE_READY_THROWN = 465,
- EMOTE_ONESHOT_WORK_CHOPWOOD = 466,
- EMOTE_ONESHOT_WORK_MINING = 467,
- EMOTE_STATE_SPELL_CHANNEL_OMNI = 468,
- EMOTE_STATE_SPELL_CHANNEL_DIRECTED = 469,
- EMOTE_STAND_STATE_NONE = 470,
- EMOTE_STATE_READYJOUST = 471,
- EMOTE_STATE_STRANGULATE = 473,
- EMOTE_STATE_READY_SPELL_OMNI = 474,
- EMOTE_STATE_HOLD_JOUST = 475,
- EMOTE_ONESHOT_CRY_JAINA = 476,
- EMOTE_ONESHOT_SPECIAL_UNARMED = 477,
- EMOTE_STATE_DANCE_NOSHEATHE = 478,
- EMOTE_ONESHOT_SNIFF = 479,
- EMOTE_ONESHOT_DRAGONSTOMP = 480,
- EMOTE_ONESHOT_KNOCKDOWN = 482,
- EMOTE_STATE_READ = 483,
- EMOTE_ONESHOT_FLYEMOTETALK = 485,
- EMOTE_STATE_READ_ALLOWMOVEMENT = 492,
- EMOTE_STATE_READY1H_ALLOW_MOVEMENT = 505,
- EMOTE_STATE_READY2H_ALLOW_MOVEMENT = 506,
- EMOTE_ONESHOT_OPEN = 517,
- EMOTE_STATE_READ_CHRISTMAS = 518
+ EMOTE_ONESHOT_NONE = 0,
+ EMOTE_ONESHOT_TALK = 1,
+ EMOTE_ONESHOT_BOW = 2,
+ EMOTE_ONESHOT_WAVE = 3,
+ EMOTE_ONESHOT_CHEER = 4,
+ EMOTE_ONESHOT_EXCLAMATION = 5,
+ EMOTE_ONESHOT_QUESTION = 6,
+ EMOTE_ONESHOT_EAT = 7,
+ EMOTE_STATE_DANCE = 10,
+ EMOTE_ONESHOT_LAUGH = 11,
+ EMOTE_STATE_SLEEP = 12,
+ EMOTE_STATE_SIT = 13,
+ EMOTE_ONESHOT_RUDE = 14,
+ EMOTE_ONESHOT_ROAR = 15,
+ EMOTE_ONESHOT_KNEEL = 16,
+ EMOTE_ONESHOT_KISS = 17,
+ EMOTE_ONESHOT_CRY = 18,
+ EMOTE_ONESHOT_CHICKEN = 19,
+ EMOTE_ONESHOT_BEG = 20,
+ EMOTE_ONESHOT_APPLAUD = 21,
+ EMOTE_ONESHOT_SHOUT = 22,
+ EMOTE_ONESHOT_FLEX = 23,
+ EMOTE_ONESHOT_SHY = 24,
+ EMOTE_ONESHOT_POINT = 25,
+ EMOTE_STATE_STAND = 26,
+ EMOTE_STATE_READY_UNARMED = 27,
+ EMOTE_STATE_WORK_SHEATHED = 28,
+ EMOTE_STATE_POINT = 29,
+ EMOTE_STATE_NONE = 30,
+ EMOTE_ONESHOT_WOUND = 33,
+ EMOTE_ONESHOT_WOUND_CRITICAL = 34,
+ EMOTE_ONESHOT_ATTACK_UNARMED = 35,
+ EMOTE_ONESHOT_ATTACK1H = 36,
+ EMOTE_ONESHOT_ATTACK2HTIGHT = 37,
+ EMOTE_ONESHOT_ATTACK2H_LOOSE = 38,
+ EMOTE_ONESHOT_PARRY_UNARMED = 39,
+ EMOTE_ONESHOT_PARRY_SHIELD = 43,
+ EMOTE_ONESHOT_READY_UNARMED = 44,
+ EMOTE_ONESHOT_READY1H = 45,
+ EMOTE_ONESHOT_READY_BOW = 48,
+ EMOTE_ONESHOT_SPELL_PRECAST = 50,
+ EMOTE_ONESHOT_SPELL_CAST = 51,
+ EMOTE_ONESHOT_BATTLE_ROAR = 53,
+ EMOTE_ONESHOT_SPECIALATTACK1H = 54,
+ EMOTE_ONESHOT_KICK = 60,
+ EMOTE_ONESHOT_ATTACK_THROWN = 61,
+ EMOTE_STATE_STUN = 64,
+ EMOTE_STATE_DEAD = 65,
+ EMOTE_ONESHOT_SALUTE = 66,
+ EMOTE_STATE_KNEEL = 68,
+ EMOTE_STATE_USE_STANDING = 69,
+ EMOTE_ONESHOT_WAVE_NO_SHEATHE = 70,
+ EMOTE_ONESHOT_CHEER_NO_SHEATHE = 71,
+ EMOTE_ONESHOT_EAT_NO_SHEATHE = 92,
+ EMOTE_STATE_STUN_NO_SHEATHE = 93,
+ EMOTE_ONESHOT_DANCE = 94,
+ EMOTE_ONESHOT_SALUTE_NO_SHEATH = 113,
+ EMOTE_STATE_USE_STANDING_NO_SHEATHE = 133,
+ EMOTE_ONESHOT_LAUGH_NO_SHEATHE = 153,
+ EMOTE_STATE_WORK = 173,
+ EMOTE_STATE_SPELL_PRECAST = 193,
+ EMOTE_ONESHOT_READY_RIFLE = 213,
+ EMOTE_STATE_READY_RIFLE = 214,
+ EMOTE_STATE_WORK_MINING = 233,
+ EMOTE_STATE_WORK_CHOPWOOD = 234,
+ EMOTE_STATE_APPLAUD = 253,
+ EMOTE_ONESHOT_LIFTOFF = 254,
+ EMOTE_ONESHOT_YES = 273,
+ EMOTE_ONESHOT_NO = 274,
+ EMOTE_ONESHOT_TRAIN = 275,
+ EMOTE_ONESHOT_LAND = 293,
+ EMOTE_STATE_AT_EASE = 313,
+ EMOTE_STATE_READY1H = 333,
+ EMOTE_STATE_SPELL_KNEEL_START = 353,
+ EMOTE_STATE_SUBMERGED = 373,
+ EMOTE_ONESHOT_SUBMERGE = 374,
+ EMOTE_STATE_READY2H = 375,
+ EMOTE_STATE_READY_BOW = 376,
+ EMOTE_ONESHOT_MOUNT_SPECIAL = 377,
+ EMOTE_STATE_TALK = 378,
+ EMOTE_STATE_FISHING = 379,
+ EMOTE_ONESHOT_FISHING = 380,
+ EMOTE_ONESHOT_LOOT = 381,
+ EMOTE_STATE_WHIRLWIND = 382,
+ EMOTE_STATE_DROWNED = 383,
+ EMOTE_STATE_HOLD_BOW = 384,
+ EMOTE_STATE_HOLD_RIFLE = 385,
+ EMOTE_STATE_HOLD_THROWN = 386,
+ EMOTE_ONESHOT_DROWN = 387,
+ EMOTE_ONESHOT_STOMP = 388,
+ EMOTE_ONESHOT_ATTACK_OFF = 389,
+ EMOTE_ONESHOT_ATTACK_OFF_PIERCE = 390,
+ EMOTE_STATE_ROAR = 391,
+ EMOTE_STATE_LAUGH = 392,
+ EMOTE_ONESHOT_CREATURE_SPECIAL = 393,
+ EMOTE_ONESHOT_JUMPLANDRUN = 394,
+ EMOTE_ONESHOT_JUMPEND = 395,
+ EMOTE_ONESHOT_TALK_NO_SHEATHE = 396,
+ EMOTE_ONESHOT_POINT_NO_SHEATHE = 397,
+ EMOTE_STATE_CANNIBALIZE = 398,
+ EMOTE_ONESHOT_JUMPSTART = 399,
+ EMOTE_STATE_DANCESPECIAL = 400,
+ EMOTE_ONESHOT_DANCESPECIAL = 401,
+ EMOTE_ONESHOT_CUSTOM_SPELL_01 = 402,
+ EMOTE_ONESHOT_CUSTOM_SPELL_02 = 403,
+ EMOTE_ONESHOT_CUSTOM_SPELL_03 = 404,
+ EMOTE_ONESHOT_CUSTOM_SPELL_04 = 405,
+ EMOTE_ONESHOT_CUSTOM_SPELL_05 = 406,
+ EMOTE_ONESHOT_CUSTOM_SPELL_06 = 407,
+ EMOTE_ONESHOT_CUSTOM_SPELL_07 = 408,
+ EMOTE_ONESHOT_CUSTOM_SPELL_08 = 409,
+ EMOTE_ONESHOT_CUSTOM_SPELL_09 = 410,
+ EMOTE_ONESHOT_CUSTOM_SPELL_10 = 411,
+ EMOTE_STATE_EXCLAIM = 412,
+ EMOTE_STATE_DANCE_CUSTOM = 413,
+ EMOTE_STATE_SIT_CHAIR_MED = 415,
+ EMOTE_STATE_CUSTOM_SPELL_01 = 416,
+ EMOTE_STATE_CUSTOM_SPELL_02 = 417,
+ EMOTE_STATE_EAT = 418,
+ EMOTE_STATE_CUSTOM_SPELL_04 = 419,
+ EMOTE_STATE_CUSTOM_SPELL_03 = 420,
+ EMOTE_STATE_CUSTOM_SPELL_05 = 421,
+ EMOTE_STATE_SPELLEFFECT_HOLD = 422,
+ EMOTE_STATE_EAT_NO_SHEATHE = 423,
+ EMOTE_STATE_MOUNT = 424,
+ EMOTE_STATE_READY2HL = 425,
+ EMOTE_STATE_SIT_CHAIR_HIGH = 426,
+ EMOTE_STATE_FALL = 427,
+ EMOTE_STATE_LOOT = 428,
+ EMOTE_STATE_SUBMERGED_NEW = 429,
+ EMOTE_ONESHOT_COWER = 430,
+ EMOTE_STATE_COWER = 431,
+ EMOTE_ONESHOT_USE_STANDING = 432,
+ EMOTE_STATE_STEALTH_STAND = 433,
+ EMOTE_ONESHOT_OMNICAST_GHOUL = 434,
+ EMOTE_ONESHOT_ATTACK_BOW = 435,
+ EMOTE_ONESHOT_ATTACK_RIFLE = 436,
+ EMOTE_STATE_SWIM_IDLE = 437,
+ EMOTE_STATE_ATTACK_UNARMED = 438,
+ EMOTE_ONESHOT_SPELL_CAST_W_SOUND = 439,
+ EMOTE_ONESHOT_DODGE = 440,
+ EMOTE_ONESHOT_PARRY1H = 441,
+ EMOTE_ONESHOT_PARRY2H = 442,
+ EMOTE_ONESHOT_PARRY2HL = 443,
+ EMOTE_STATE_FLYFALL = 444,
+ EMOTE_ONESHOT_FLYDEATH = 445,
+ EMOTE_STATE_FLY_FALL = 446,
+ EMOTE_ONESHOT_FLY_SIT_GROUND_DOWN = 447,
+ EMOTE_ONESHOT_FLY_SIT_GROUND_UP = 448,
+ EMOTE_ONESHOT_EMERGE = 449,
+ EMOTE_ONESHOT_DRAGON_SPIT = 450,
+ EMOTE_STATE_SPECIAL_UNARMED = 451,
+ EMOTE_ONESHOT_FLYGRAB = 452,
+ EMOTE_STATE_FLYGRABCLOSED = 453,
+ EMOTE_ONESHOT_FLYGRABTHROWN = 454,
+ EMOTE_STATE_FLY_SIT_GROUND = 455,
+ EMOTE_STATE_WALK_BACKWARDS = 456,
+ EMOTE_ONESHOT_FLYTALK = 457,
+ EMOTE_ONESHOT_FLYATTACK1H = 458,
+ EMOTE_STATE_CUSTOM_SPELL_08 = 459,
+ EMOTE_ONESHOT_FLY_DRAGON_SPIT = 460,
+ EMOTE_STATE_SIT_CHAIR_LOW = 461,
+ EMOTE_ONESHOT_STUN = 462,
+ EMOTE_ONESHOT_SPELL_CAST_OMNI = 463,
+ EMOTE_STATE_READY_THROWN = 465,
+ EMOTE_ONESHOT_WORK_CHOPWOOD = 466,
+ EMOTE_ONESHOT_WORK_MINING = 467,
+ EMOTE_STATE_SPELL_CHANNEL_OMNI = 468,
+ EMOTE_STATE_SPELL_CHANNEL_DIRECTED = 469,
+ EMOTE_STAND_STATE_NONE = 470,
+ EMOTE_STATE_READYJOUST = 471,
+ EMOTE_STATE_STRANGULATE = 472,
+ EMOTE_STATE_STRANGULATE2 = 473,
+ EMOTE_STATE_READY_SPELL_OMNI = 474,
+ EMOTE_STATE_HOLD_JOUST = 475,
+ EMOTE_ONESHOT_CRY_JAINA = 476,
+ EMOTE_ONESHOT_SPECIAL_UNARMED = 477,
+ EMOTE_STATE_DANCE_NOSHEATHE = 478,
+ EMOTE_ONESHOT_SNIFF = 479,
+ EMOTE_ONESHOT_DRAGONSTOMP = 480,
+ EMOTE_ONESHOT_KNOCKDOWN = 482,
+ EMOTE_STATE_READ = 483,
+ EMOTE_ONESHOT_FLYEMOTETALK = 485,
+ EMOTE_STATE_READ_ALLOWMOVEMENT = 492,
+ EMOTE_STATE_CUSTOM_SPELL_06 = 498,
+ EMOTE_STATE_CUSTOM_SPELL_07 = 499,
+ EMOTE_STATE_CUSTOM_SPELL_08_2 = 500,
+ EMOTE_STATE_CUSTOM_SPELL_09 = 501,
+ EMOTE_STATE_CUSTOM_SPELL_10 = 502,
+ EMOTE_STATE_READY1H_ALLOW_MOVEMENT = 505,
+ EMOTE_STATE_READY2H_ALLOW_MOVEMENT = 506,
+ EMOTE_ONESHOT_MONKOFFENSE_ATTACKUNARMED = 507,
+ EMOTE_ONESHOT_MONKOFFENSE_SPECIALUNARMED = 508,
+ EMOTE_ONESHOT_MONKOFFENSE_PARRYUNARMED = 509,
+ EMOTE_STATE_MONKOFFENSE_READYUNARMED = 510,
+ EMOTE_ONESHOT_PALMSTRIKE = 511,
+ EMOTE_STATE_CRANE = 512,
+ EMOTE_ONESHOT_OPEN = 517,
+ EMOTE_STATE_READ_CHRISTMAS = 518,
+ EMOTE_ONESHOT_FLYATTACK2HL = 526,
+ EMOTE_ONESHOT_FLYATTACKTHROWN = 527,
+ EMOTE_STATE_FLYREADYSPELLDIRECTED = 528,
+ EMOTE_STATE_FLY_READY_1H = 531,
+ EMOTE_STATE_MEDITATE = 533,
+ EMOTE_STATE_FLY_READY_2HL = 534,
+ EMOTE_ONESHOT_TOGROUND = 535,
+ EMOTE_ONESHOT_TOFLY = 536,
+ EMOTE_STATE_ATTACKTHROWN = 537,
+ EMOTE_STATE_SPELL_CHANNEL_DIRECTED_NOSOUND = 538,
+ EMOTE_ONESHOT_WORK = 539,
+ EMOTE_STATE_READYUNARMED_NOSOUND = 540,
+ EMOTE_ONESHOT_MONKOFFENSE_ATTACKUNARMEDOFF = 543,
+ EMOTE_RECLINED_MOUNT_PASSENGER = 546,
+ EMOTE_ONESHOT_QUESTION_2 = 547,
+ EMOTE_ONESHOT_SPELL_CHANNEL_DIRECTED_NOSOUND = 549,
+ EMOTE_STATE_KNEEL_2 = 550,
+ EMOTE_ONESHOT_FLYATTACKUNARMED = 551,
+ EMOTE_ONESHOT_FLYCOMBATWOUND = 552,
+ EMOTE_ONESHOT_MOUNTSELFSPECIAL = 553,
+ EMOTE_ONESHOT_ATTACKUNARMED_NOSOUND = 554,
+ EMOTE_STATE_WOUNDCRITICAL_DOESNT_WORK = 555,
+ EMOTE_ONESHOT_ATTACK1H_NO_SOUND = 556,
+ EMOTE_STATE_MOUNT_SELF_IDLE = 557,
+ EMOTE_ONESHOT_WALK = 558,
+ EMOTE_STATE_OPENED = 559,
+ EMOTE_STATE_CUSTOMSPELL03 = 564,
+ EMOTE_ONESHOT_BREATHOFFIRE = 565,
+ EMOTE_STATE_ATTACK1H = 567,
+ EMOTE_STATE_WORK_CHOPWOOD_2 = 568,
+ EMOTE_STATE_USESTANDING_LOOP = 569,
+ EMOTE_STATE_USESTANDING = 572,
+ EMOTE_ONESHOT_SHEATH = 573,
+ EMOTE_ONESHOT_LAUGH_NO_SOUND = 574,
+ EMOTE_RECLINED_MOUNT = 575,
+ EMOTE_ONESHOT_ATTACK1H_2 = 577,
+ EMOTE_STATE_CRY_NOSOUND = 578,
+ EMOTE_ONESHOT_CRY_NOSOUND = 579,
+ EMOTE_ONESHOT_COMBATCRITICAL = 584,
+ EMOTE_STATE_TRAIN = 585,
+ EMOTE_STATE_WORK_CHOPWOOD_LUMBER_AXE = 586,
+ EMOTE_ONESHOT_SPECIALATTACK2H = 587,
+ EMOTE_STATE_READ_AND_TALK = 588,
+ EMOTE_ONESHOT_STAND_VAR1 = 589,
+ EMOTE_REXXAR_STRANGLES_GOBLIN = 590,
+ EMOTE_ONESHOT_STAND_VAR2 = 591,
+ EMOTE_ONESHOT_DEATH = 592,
+ EMOTE_STATE_TALKONCE = 595,
+ EMOTE_STATE_ATTACK2H = 596,
+ EMOTE_STATE_SIT_GROUND = 598,
+ EMOTE_STATE_WORK_CHOPWOOD3 = 599,
+ EMOTE_STATE_CUSTOMSPELL01 = 601,
+ EMOTE_ONESHOT_COMBATWOUND = 602,
+ EMOTE_ONESHOT_TALK_EXCLAMATION = 603,
+ EMOTE_ONESHOT_QUESTION2 = 604,
+ EMOTE_STATE_CRY = 605,
+ EMOTE_STATE_USESTANDING_LOOP2 = 606,
+ EMOTE_STATE_WORK_SMITH = 613,
+ EMOTE_STATE_WORK_CHOPWOOD4 = 614,
+ EMOTE_STATE_CUSTOMSPELL02 = 615,
+ EMOTE_STATE_READ_AND_SIT = 616,
+ EMOTE_STATE_PARRY_UNARMED = 619,
+ EMOTE_STATE_BLOCK_SHIELD = 620,
+ EMOTE_STATE_SIT_GROUND_2 = 621
};
-// AnimationData.dbc
+// AnimationData.dbc (6.0.2.18988)
enum Anim
{
- ANIM_STAND = 0,
- ANIM_DEATH = 1,
- ANIM_SPELL = 2,
- ANIM_STOP = 3,
- ANIM_WALK = 4,
- ANIM_RUN = 5,
- ANIM_DEAD = 6,
- ANIM_RISE = 7,
- ANIM_STAND_WOUND = 8,
- ANIM_COMBAT_WOUND = 9,
- ANIM_COMBAT_CRITICAL = 10,
- ANIM_SHUFFLE_LEFT = 11,
- ANIM_SHUFFLE_RIGHT = 12,
- ANIM_WALK_BACKWARDS = 13,
- ANIM_STUN = 14,
- ANIM_HANDS_CLOSED = 15,
- ANIM_ATTACK_UNARMED = 16,
- ANIM_ATTACK1H = 17,
- ANIM_ATTACK2H = 18,
- ANIM_ATTACK2HL = 19,
- ANIM_PARRY_UNARMED = 20,
- ANIM_PARRY1H = 21,
- ANIM_PARRY2H = 22,
- ANIM_PARRY2HL = 23,
- ANIM_SHIELD_BLOCK = 24,
- ANIM_READY_UNARMED = 25,
- ANIM_READY1H = 26,
- ANIM_READY2H = 27,
- ANIM_READY2HL = 28,
- ANIM_READY_BOW = 29,
- ANIM_DODGE = 30,
- ANIM_SPELL_PRECAST = 31,
- ANIM_SPELL_CAST = 32,
- ANIM_SPELL_CAST_AREA = 33,
- ANIM_NPC_WELCOME = 34,
- ANIM_NPC_GOODBYE = 35,
- ANIM_BLOCK = 36,
- ANIM_JUMP_START = 37,
- ANIM_JUMP = 38,
- ANIM_JUMP_END = 39,
- ANIM_FALL = 40,
- ANIM_SWIM_IDLE = 41,
- ANIM_SWIM = 42,
- ANIM_SWIM_LEFT = 43,
- ANIM_SWIM_RIGHT = 44,
- ANIM_SWIM_BACKWARDS = 45,
- ANIM_ATTACK_BOW = 46,
- ANIM_FIRE_BOW = 47,
- ANIM_READY_RIFLE = 48,
- ANIM_ATTACK_RIFLE = 49,
- ANIM_LOOT = 50,
- ANIM_READY_SPELL_DIRECTED = 51,
- ANIM_READY_SPELL_OMNI = 52,
- ANIM_SPELL_CAST_DIRECTED = 53,
- ANIM_SPELL_CAST_OMNI = 54,
- ANIM_BATTLE_ROAR = 55,
- ANIM_READY_ABILITY = 56,
- ANIM_SPECIAL1H = 57,
- ANIM_SPECIAL2H = 58,
- ANIM_SHIELD_BASH = 59,
- ANIM_EMOTE_TALK = 60,
- ANIM_EMOTE_EAT = 61,
- ANIM_EMOTE_WORK = 62,
- ANIM_EMOTE_USE_STANDING = 63,
- ANIM_EMOTE_TALK_EXCLAMATION = 64,
- ANIM_EMOTE_TALK_QUESTION = 65,
- ANIM_EMOTE_BOW = 66,
- ANIM_EMOTE_WAVE = 67,
- ANIM_EMOTE_CHEER = 68,
- ANIM_EMOTE_DANCE = 69,
- ANIM_EMOTE_LAUGH = 70,
- ANIM_EMOTE_SLEEP = 71,
- ANIM_EMOTE_SIT_GROUND = 72,
- ANIM_EMOTE_RUDE = 73,
- ANIM_EMOTE_ROAR = 74,
- ANIM_EMOTE_KNEEL = 75,
- ANIM_EMOTE_KISS = 76,
- ANIM_EMOTE_CRY = 77,
- ANIM_EMOTE_CHICKEN = 78,
- ANIM_EMOTE_BEG = 79,
- ANIM_EMOTE_APPLAUD = 80,
- ANIM_EMOTE_SHOUT = 81,
- ANIM_EMOTE_FLEX = 82,
- ANIM_EMOTE_SHY = 83,
- ANIM_EMOTE_POINT = 84,
- ANIM_ATTACK1H_PIERCE = 85,
- ANIM_ATTACK2H_LOOSE_PIERCE = 86,
- ANIM_ATTACK_OFF = 87,
- ANIM_ATTACK_OFF_PIERCE = 88,
- ANIM_SHEATHE = 89,
- ANIM_HIP_SHEATHE = 90,
- ANIM_MOUNT = 91,
- ANIM_RUN_RIGHT = 92,
- ANIM_RUN_LEFT = 93,
- ANIM_MOUNT_SPECIAL = 94,
- ANIM_KICK = 95,
- ANIM_SIT_GROUND_DOWN = 96,
- ANIM_SIT_GROUND = 97,
- ANIM_SIT_GROUND_UP = 98,
- ANIM_SLEEP_DOWN = 99,
- ANIM_SLEEP = 100,
- ANIM_SLEEP_UP = 101,
- ANIM_SIT_CHAIR_LOW = 102,
- ANIM_SIT_CHAIR_MED = 103,
- ANIM_SIT_CHAIR_HIGH = 104,
- ANIM_LOAD_BOW = 105,
- ANIM_LOAD_RIFLE = 106,
- ANIM_ATTACK_THROWN = 107,
- ANIM_READY_THROWN = 108,
- ANIM_HOLD_BOW = 109,
- ANIM_HOLD_RIFLE = 110,
- ANIM_HOLD_THROWN = 111,
- ANIM_LOAD_THROWN = 112,
- ANIM_EMOTE_SALUTE = 113,
- ANIM_KNEEL_START = 114,
- ANIM_KNEEL_LOOP = 115,
- ANIM_KNEEL_END = 116,
- ANIM_ATTACK_UNARMED_OFF = 117,
- ANIM_SPECIAL_UNARMED = 118,
- ANIM_STEALTH_WALK = 119,
- ANIM_STEALTH_STAND = 120,
- ANIM_KNOCKDOWN = 121,
- ANIM_EATING_LOOP = 122,
- ANIM_USE_STANDING_LOOP = 123,
- ANIM_CHANNEL_CAST_DIRECTED = 124,
- ANIM_CHANNEL_CAST_OMNI = 125,
- ANIM_WHIRLWIND = 126,
- ANIM_BIRTH = 127,
- ANIM_USE_STANDING_START = 128,
- ANIM_USE_STANDING_END = 129,
- ANIM_CREATURE_SPECIAL = 130,
- ANIM_DROWN = 131,
- ANIM_DROWNED = 132,
- ANIM_FISHING_CAST = 133,
- ANIM_FISHING_LOOP = 134,
- ANIM_FLY = 135,
- ANIM_EMOTE_WORK_NO_SHEATHE = 136,
- ANIM_EMOTE_STUN_NO_SHEATHE = 137,
- ANIM_EMOTE_USE_STANDING_NO_SHEATHE = 138,
- ANIM_SPELL_SLEEP_DOWN = 139,
- ANIM_SPELL_KNEEL_START = 140,
- ANIM_SPELL_KNEEL_LOOP = 141,
- ANIM_SPELL_KNEEL_END = 142,
- ANIM_SPRINT = 143,
- ANIM_IN_FIGHT = 144,
- ANIM_SPAWN = 145,
- ANIM_CLOSE = 146,
- ANIM_CLOSED = 147,
- ANIM_OPEN = 148,
- ANIM_OPENED = 149,
- ANIM_DESTROY = 150,
- ANIM_DESTROYED = 151,
- ANIM_REBUILD = 152,
- ANIM_CUSTOM_0 = 153,
- ANIM_CUSTOM_1 = 154,
- ANIM_CUSTOM_2 = 155,
- ANIM_CUSTOM_3 = 156,
- ANIM_DESPAWN = 157,
- ANIM_HOLD = 158,
- ANIM_DECAY = 159,
- ANIM_BOW_PULL = 160,
- ANIM_BOW_RELEASE = 161,
- ANIM_SHIP_START = 162,
- ANIM_SHIP_MOVING = 163,
- ANIM_SHIP_STOP = 164,
- ANIM_GROUP_ARROW = 165,
- ANIM_ARROW = 166,
- ANIM_CORPSE_ARROW = 167,
- ANIM_GUIDE_ARROW = 168,
- ANIM_SWAY = 169,
- ANIM_DRUID_CAT_POUNCE = 170,
- ANIM_DRUID_CAT_RIP = 171,
- ANIM_DRUID_CAT_RAKE = 172,
- ANIM_DRUID_CAT_RAVAGE = 173,
- ANIM_DRUID_CAT_CLAW = 174,
- ANIM_DRUID_CAT_COWER = 175,
- ANIM_DRUID_BEAR_SWIPE = 176,
- ANIM_DRUID_BEAR_BITE = 177,
- ANIM_DRUID_BEAR_MAUL = 178,
- ANIM_DRUID_BEAR_BASH = 179,
- ANIM_DRAGON_TAIL = 180,
- ANIM_DRAGON_STOMP = 181,
- ANIM_DRAGON_SPIT = 182,
- ANIM_DRAGON_SPIT_HOVER = 183,
- ANIM_DRAGON_SPIT_FLY = 184,
- ANIM_EMOTE_YES = 185,
- ANIM_EMOTE_NO = 186,
- ANIM_JUMP_LAND_RUN = 187,
- ANIM_LOOT_HOLD = 188,
- ANIM_LOOT_UP = 189,
- ANIM_STAND_HIGH = 190,
- ANIM_IMPACT = 191,
- ANIM_LIFTOFF = 192,
- ANIM_HOVER = 193,
- ANIM_SUCCUBUS_ENTICE = 194,
- ANIM_EMOTE_TRAIN = 195,
- ANIM_EMOTE_DEAD = 196,
- ANIM_EMOTE_DANCE_ONCE = 197,
- ANIM_DEFLECT = 198,
- ANIM_EMOTE_EAT_NO_SHEATHE = 199,
- ANIM_LAND = 200,
- ANIM_SUBMERGE = 201,
- ANIM_SUBMERGED = 202,
- ANIM_CANNIBALIZE = 203,
- ANIM_ARROW_BIRTH = 204,
- ANIM_GROUP_ARROW_BIRTH = 205,
- ANIM_CORPSE_ARROW_BIRTH = 206,
- ANIM_GUIDE_ARROW_BIRTH = 207,
- ANIM_EMOTE_TALK_NO_SHEATHE = 208,
- ANIM_EMOTE_POINT_NO_SHEATHE = 209,
- ANIM_EMOTE_SALUTE_NO_SHEATHE = 210,
- ANIM_EMOTE_DANCE_SPECIAL = 211,
- ANIM_MUTILATE = 212,
- ANIM_CUSTOM_SPELL_01 = 213,
- ANIM_CUSTOM_SPELL_02 = 214,
- ANIM_CUSTOM_SPELL_03 = 215,
- ANIM_CUSTOM_SPELL_04 = 216,
- ANIM_CUSTOM_SPELL_05 = 217,
- ANIM_CUSTOM_SPELL_06 = 218,
- ANIM_CUSTOM_SPELL_07 = 219,
- ANIM_CUSTOM_SPELL_08 = 220,
- ANIM_CUSTOM_SPELL_09 = 221,
- ANIM_CUSTOM_SPELL_10 = 222,
- ANIM_STEALTH_RUN = 223,
- ANIM_EMERGE = 224,
- ANIM_COWER = 225,
- ANIM_GRAB = 226,
- ANIM_GRAB_CLOSED = 227,
- ANIM_GRAB_THROWN = 228,
- ANIM_FLY_STAND = 229,
- ANIM_FLY_DEATH = 230,
- ANIM_FLY_SPELL = 231,
- ANIM_FLY_STOP = 232,
- ANIM_FLY_WALK = 233,
- ANIM_FLY_RUN = 234,
- ANIM_FLY_DEAD = 235,
- ANIM_FLY_RISE = 236,
- ANIM_FLY_STAND_WOUND = 237,
- ANIM_FLY_COMBAT_WOUND = 238,
- ANIM_FLY_COMBAT_CRITICAL = 239,
- ANIM_FLY_SHUFFLE_LEFT = 240,
- ANIM_FLY_SHUFFLE_RIGHT = 241,
- ANIM_FLY_WALK_BACKWARDS = 242,
- ANIM_FLY_STUN = 243,
- ANIM_FLY_HANDS_CLOSED = 244,
- ANIM_FLY_ATTACK_UNARMED = 245,
- ANIM_FLY_ATTACK1H = 246,
- ANIM_FLY_ATTACK2H = 247,
- ANIM_FLY_ATTACK2HL = 248,
- ANIM_FLY_PARRY_UNARMED = 249,
- ANIM_FLY_PARRY1H = 250,
- ANIM_FLY_PARRY2H = 251,
- ANIM_FLY_PARRY2HL = 252,
- ANIM_FLY_SHIELD_BLOCK = 253,
- ANIM_FLY_READY_UNARMED = 254,
- ANIM_FLY_READY1H = 255,
- ANIM_FLY_READY2H = 256,
- ANIM_FLY_READY2HL = 257,
- ANIM_FLY_READY_BOW = 258,
- ANIM_FLY_DODGE = 259,
- ANIM_FLY_SPELL_PRECAST = 260,
- ANIM_FLY_SPELL_CAST = 261,
- ANIM_FLY_SPELL_CAST_AREA = 262,
- ANIM_FLY_NPC_WELCOME = 263,
- ANIM_FLY_NPC_GOODBYE = 264,
- ANIM_FLY_BLOCK = 265,
- ANIM_FLY_JUMP_START = 266,
- ANIM_FLY_JUMP = 267,
- ANIM_FLY_JUMP_END = 268,
- ANIM_FLY_FALL = 269,
- ANIM_FLY_SWIM_IDLE = 270,
- ANIM_FLY_SWIM = 271,
- ANIM_FLY_SWIM_LEFT = 272,
- ANIM_FLY_SWIM_RIGHT = 273,
- ANIM_FLY_SWIM_BACKWARDS = 274,
- ANIM_FLY_ATTACK_BOW = 275,
- ANIM_FLY_FIRE_BOW = 276,
- ANIM_FLY_READY_RIFLE = 277,
- ANIM_FLY_ATTACK_RIFLE = 278,
- ANIM_FLY_LOOT = 279,
- ANIM_FLY_READY_SPELL_DIRECTED = 280,
- ANIM_FLY_READY_SPELL_OMNI = 281,
- ANIM_FLY_SPELL_CAST_DIRECTED = 282,
- ANIM_FLY_SPELL_CAST_OMNI = 283,
- ANIM_FLY_SPELL_BATTLE_ROAR = 284,
- ANIM_FLY_READY_ABILITY = 285,
- ANIM_FLY_SPECIAL1H = 286,
- ANIM_FLY_SPECIAL2H = 287,
- ANIM_FLY_SHIELD_BASH = 288,
- ANIM_FLY_EMOTE_TALK = 289,
- ANIM_FLY_EMOTE_EAT = 290,
- ANIM_FLY_EMOTE_WORK = 291,
- ANIM_FLY_USE_STANDING = 292,
- ANIM_FLY_EMOTE_TALK_EXCLAMATION = 293,
- ANIM_FLY_EMOTE_TALK_QUESTION = 294,
- ANIM_FLY_EMOTE_BOW = 295,
- ANIM_FLY_EMOTE_WAVE = 296,
- ANIM_FLY_EMOTE_CHEER = 297,
- ANIM_FLY_EMOTE_DANCE = 298,
- ANIM_FLY_EMOTE_LAUGH = 299,
- ANIM_FLY_EMOTE_SLEEP = 300,
- ANIM_FLY_EMOTE_SIT_GROUND = 301,
- ANIM_FLY_EMOTE_RUDE = 302,
- ANIM_FLY_EMOTE_ROAR = 303,
- ANIM_FLY_EMOTE_KNEEL = 304,
- ANIM_FLY_EMOTE_KISS = 305,
- ANIM_FLY_EMOTE_CRY = 306,
- ANIM_FLY_EMOTE_CHICKEN = 307,
- ANIM_FLY_EMOTE_BEG = 308,
- ANIM_FLY_EMOTE_APPLAUD = 309,
- ANIM_FLY_EMOTE_SHOUT = 310,
- ANIM_FLY_EMOTE_FLEX = 311,
- ANIM_FLY_EMOTE_SHY = 312,
- ANIM_FLY_EMOTE_POINT = 313,
- ANIM_FLY_ATTACK1H_PIERCE = 314,
- ANIM_FLY_ATTACK2H_LOOSE_PIERCE = 315,
- ANIM_FLY_ATTACK_OFF = 316,
- ANIM_FLY_ATTACK_OFF_PIERCE = 317,
- ANIM_FLY_SHEATH = 318,
- ANIM_FLY_HIP_SHEATH = 319,
- ANIM_FLY_MOUNT = 320,
- ANIM_FLY_RUN_RIGHT = 321,
- ANIM_FLY_RUN_LEFT = 322,
- ANIM_FLY_MOUNT_SPECIAL = 323,
- ANIM_FLY_KICK = 324,
- ANIM_FLY_SIT_GROUND_DOWN = 325,
- ANIM_FLY_SIT_GROUND = 326,
- ANIM_FLY_SIT_GROUND_UP = 327,
- ANIM_FLY_SLEEP_DOWN = 328,
- ANIM_FLY_SLEEP = 329,
- ANIM_FLY_SLEEP_UP = 330,
- ANIM_FLY_SIT_CHAIR_LOW = 331,
- ANIM_FLY_SIT_CHAIR_MED = 332,
- ANIM_FLY_SIT_CHAIR_HIGH = 333,
- ANIM_FLY_LOAD_BOW = 334,
- ANIM_FLY_LOAD_RIFLE = 335,
- ANIM_FLY_ATTACK_THROWN = 336,
- ANIM_FLY_READY_THROWN = 337,
- ANIM_FLY_HOLD_BOW = 338,
- ANIM_FLY_HOLD_RIFLE = 339,
- ANIM_FLY_HOLD_THROWN = 340,
- ANIM_FLY_LOAD_THROWN = 341,
- ANIM_FLY_EMOTE_SALUTE = 342,
- ANIM_FLY_KNEEL_START = 343,
- ANIM_FLY_KNEEL_LOOP = 344,
- ANIM_FLY_KNEEL_END = 345,
- ANIM_FLY_ATTACK_UNARMED_OFF = 346,
- ANIM_FLY_SPECIAL_UNARMED = 347,
- ANIM_FLY_STEALTH_WALK = 348,
- ANIM_FLY_STEALTH_STAND = 349,
- ANIM_FLY_KNOCKDOWN = 350,
- ANIM_FLY_EATING_LOOP = 351,
- ANIM_FLY_USE_STANDING_LOOP = 352,
- ANIM_FLY_CHANNEL_CAST_DIRECTED = 353,
- ANIM_FLY_CHANNEL_CAST_OMNI = 354,
- ANIM_FLY_WHIRLWIND = 355,
- ANIM_FLY_BIRTH = 356,
- ANIM_FLY_USE_STANDING_START = 357,
- ANIM_FLY_USE_STANDING_END = 358,
- ANIM_FLY_CREATURE_SPECIAL = 359,
- ANIM_FLY_DROWN = 360,
- ANIM_FLY_DROWNED = 361,
- ANIM_FLY_FISHING_CAST = 362,
- ANIM_FLY_FISHING_LOOP = 363,
- ANIM_FLY_FLY = 364,
- ANIM_FLY_EMOTE_WORK_NO_SHEATHE = 365,
- ANIM_FLY_EMOTE_STUN_NO_SHEATHE = 366,
- ANIM_FLY_EMOTE_USE_STANDING_NO_SHEATHE = 367,
- ANIM_FLY_SPELL_SLEEP_DOWN = 368,
- ANIM_FLY_SPELL_KNEEL_START = 369,
- ANIM_FLY_SPELL_KNEEL_LOOP = 370,
- ANIM_FLY_SPELL_KNEEL_END = 371,
- ANIM_FLY_SPRINT = 372,
- ANIM_FLY_IN_FLIGHT = 373,
- ANIM_FLY_SPAWN = 374,
- ANIM_FLY_CLOSE = 375,
- ANIM_FLY_CLOSED = 376,
- ANIM_FLY_OPEN = 377,
- ANIM_FLY_OPENED = 378,
- ANIM_FLY_DESTROY = 379,
- ANIM_FLY_DESTROYED = 380,
- ANIM_FLY_REBUILD = 381,
- ANIM_FLY_CUSTOM_0 = 382,
- ANIM_FLY_CUSTOM_1 = 383,
- ANIM_FLY_CUSTOM_2 = 384,
- ANIM_FLY_CUSTOM_3 = 385,
- ANIM_FLY_DESPAWN = 386,
- ANIM_FLY_HOLD = 387,
- ANIM_FLY_DECAY = 388,
- ANIM_FLY_BOW_PULL = 389,
- ANIM_FLY_BOW_RELEASE = 390,
- ANIM_FLY_SHIP_START = 391,
- ANIM_FLY_SHIP_MOVING = 392,
- ANIM_FLY_SHIP_STOP = 393,
- ANIM_FLY_GROUP_ARROW = 394,
- ANIM_FLY_ARROW = 395,
- ANIM_FLY_CORPSE_ARROW = 396,
- ANIM_FLY_GUIDE_ARROW = 397,
- ANIM_FLY_SWAY = 398,
- ANIM_FLY_DRUID_CAT_POUNCE = 399,
- ANIM_FLY_DRUID_CAT_RIP = 400,
- ANIM_FLY_DRUID_CAT_RAKE = 401,
- ANIM_FLY_DRUID_CAT_RAVAGE = 402,
- ANIM_FLY_DRUID_CAT_CLAW = 403,
- ANIM_FLY_DRUID_CAT_COWER = 404,
- ANIM_FLY_DRUID_BEAR_SWIPE = 405,
- ANIM_FLY_DRUID_BEAR_BITE = 406,
- ANIM_FLY_DRUID_BEAR_MAUL = 407,
- ANIM_FLY_DRUID_BEAR_BASH = 408,
- ANIM_FLY_DRAGON_TAIL = 409,
- ANIM_FLY_DRAGON_STOMP = 410,
- ANIM_FLY_DRAGON_SPIT = 411,
- ANIM_FLY_DRAGON_SPIT_HOVER = 412,
- ANIM_FLY_DRAGON_SPIT_FLY = 413,
- ANIM_FLY_EMOTE_YES = 414,
- ANIM_FLY_EMOTE_NO = 415,
- ANIM_FLY_JUMP_LAND_RUN = 416,
- ANIM_FLY_LOOT_HOLD = 417,
- ANIM_FLY_LOOT_UP = 418,
- ANIM_FLY_STAND_HIGH = 419,
- ANIM_FLY_IMPACT = 420,
- ANIM_FLY_LIFTOFF = 421,
- ANIM_FLY_HOVER = 422,
- ANIM_FLY_SUCCUBUS_ENTICE = 423,
- ANIM_FLY_EMOTE_TRAIN = 424,
- ANIM_FLY_EMOTE_DEAD = 425,
- ANIM_FLY_EMOTE_DANCE_ONCE = 426,
- ANIM_FLY_DEFLECT = 427,
- ANIM_FLY_EMOTE_EAT_NO_SHEATHE = 428,
- ANIM_FLY_LAND = 429,
- ANIM_FLY_SUBMERGE = 430,
- ANIM_FLY_SUBMERGED = 431,
- ANIM_FLY_CANNIBALIZE = 432,
- ANIM_FLY_ARROW_BIRTH = 433,
- ANIM_FLY_GROUP_ARROW_BIRTH = 434,
- ANIM_FLY_CORPSE_ARROW_BIRTH = 435,
- ANIM_FLY_GUIDE_ARROW_BIRTH = 436,
- ANIM_FLY_EMOTE_TALK_NO_SHEATHE = 437,
- ANIM_FLY_EMOTE_POINT_NO_SHEATHE = 438,
- ANIM_FLY_EMOTE_SALUTE_NO_SHEATHE = 439,
- ANIM_FLY_EMOTE_DANCE_SPECIAL = 440,
- ANIM_FLY_MUTILATE = 441,
- ANIM_FLY_CUSTOM_SPELL_01 = 442,
- ANIM_FLY_CUSTOM_SPELL_02 = 443,
- ANIM_FLY_CUSTOM_SPELL_03 = 444,
- ANIM_FLY_CUSTOM_SPELL_04 = 445,
- ANIM_FLY_CUSTOM_SPELL_05 = 446,
- ANIM_FLY_CUSTOM_SPELL_06 = 447,
- ANIM_FLY_CUSTOM_SPELL_07 = 448,
- ANIM_FLY_CUSTOM_SPELL_08 = 449,
- ANIM_FLY_CUSTOM_SPELL_09 = 450,
- ANIM_FLY_CUSTOM_SPELL_10 = 451,
- ANIM_FLY_STEALTH_RUN = 452,
- ANIM_FLY_EMERGE = 453,
- ANIM_FLY_COWER = 454,
- ANIM_FLY_GRAB = 455,
- ANIM_FLY_GRAB_CLOSED = 456,
- ANIM_FLY_GRAB_THROWN = 457,
- ANIM_TO_FLY = 458,
- ANIM_TO_HOVER = 459,
- ANIM_TO_GROUND = 460,
- ANIM_FLY_TO_FLY = 461,
- ANIM_FLY_TO_HOVER = 462,
- ANIM_FLY_TO_GROUND = 463,
- ANIM_SETTLE = 464,
- ANIM_FLY_SETTLE = 465,
- ANIM_DEATH_START = 466,
- ANIM_DEATH_LOOP = 467,
- ANIM_DEATH_END = 468,
- ANIM_FLY_DEATH_START = 469,
- ANIM_FLY_DEATH_LOOP = 470,
- ANIM_FLY_DEATH_END = 471,
- ANIM_DEATH_END_HOLD = 472,
- ANIM_FLY_DEATH_END_HOLD = 473,
- ANIM_STRANGULATE = 474,
- ANIM_FLY_STRANGULATE = 475,
- ANIM_READY_JOUST = 476,
- ANIM_LOAD_JOUST = 477,
- ANIM_HOLD_JOUST = 478,
- ANIM_FLY_READY_JOUST = 479,
- ANIM_FLY_LOAD_JOUST = 480,
- ANIM_FLY_HOLD_JOUST = 481,
- ANIM_ATTACK_JOUST = 482,
- ANIM_FLY_ATTACK_JOUST = 483,
- ANIM_RECLINED_MOUNT = 484,
- ANIM_FLY_RECLINED_MOUNT = 485,
- ANIM_TO_ALTERED = 486,
- ANIM_FROM_ALTERED = 487,
- ANIM_FLY_TO_ALTERED = 488,
- ANIM_FLY_FROM_ALTERED = 489,
- ANIM_IN_STOCKS = 490,
- ANIM_FLY_IN_STOCKS = 491,
- ANIM_VEHICLE_GRAB = 492,
- ANIM_VEHICLE_THROW = 493,
- ANIM_FLY_VEHICLE_GRAB = 494,
- ANIM_FLY_VEHICLE_THROW = 495,
- ANIM_TO_ALTERED_POST_SWAP = 496,
- ANIM_FROM_ALTERED_POST_SWAP = 497,
- ANIM_FLY_TO_ALTERED_POST_SWAP = 498,
- ANIM_FLY_FROM_ALTERED_POST_SWAP = 499,
- ANIM_RECLINED_MOUNT_PASSENGER = 500,
- ANIM_FLY_RECLINED_MOUNT_PASSENGER = 501,
- ANIM_CARRY2H = 502,
- ANIM_CARRIED2H = 503,
- ANIM_FLY_CARRY2H = 504,
- ANIM_FLY_CARRIED2H = 505,
- ANIM_EMOTE_SNIFF = 506,
- ANIM_EMOTE_FLY_SNIFF = 507,
- ANIM_ATTACK_FIST1H = 508,
- ANIM_FLY_ATTACK_FIST1H = 509,
- ANIM_ATTACK_FIST_1H_OFF = 510,
- ANIM_FLY_ATTACK_FIST_1H_OFF = 511,
- ANIM_PARRY_FIST1H = 512,
- ANIM_FLY_PARRY_FIST1H = 513,
- ANIM_READY_FIST1H = 514,
- ANIM_FLY_READY_FIST1H = 515,
- ANIM_SPECIAL_FIST1H = 516,
- ANIM_FLY_SPECIAL_FIST1H = 517,
- ANIM_EMOTE_READ_START = 518,
- ANIM_FLY_EMOTE_READ_START = 519,
- ANIM_EMOTE_READ_LOOP = 520,
- ANIM_FLY_EMOTE_READ_LOOP = 521,
- ANIM_EMOTE_READ_END = 522,
- ANIM_FLY_EMOTE_READ_END = 523,
- ANIM_SWIM_RUN = 524,
- ANIM_FLY_SWIM_RUN = 525,
- ANIM_SWIM_WALK = 526,
- ANIM_FLY_SWIM_WALK = 527,
- ANIM_SWIM_WALK_BACKWARDS = 528,
- ANIM_FLY_SWIM_WALK_BACKWARDS = 529,
- ANIM_SWIM_SPRINT = 530,
- ANIM_FLY_SWIM_SPRINT = 531,
- ANIM_MOUNT_SWIM_IDLE = 532,
- ANIM_FLY_MOUNT_SWIM_IDLE = 533,
- ANIM_MOUNT_SWIM_BACKWARDS = 534,
- ANIM_FLY_MOUNT_SWIM_BACKWARDS = 535,
- ANIM_MOUNT_SWIM_LEFT = 536,
- ANIM_FLY_MOUNT_SWIM_LEFT = 537,
- ANIM_MOUNT_SWIM_RIGHT = 538,
- ANIM_FLY_MOUNT_SWIM_RIGHT = 539,
- ANIM_MOUNT_SWIM_RUN = 540,
- ANIM_FLY_MOUNT_SWIM_RUN = 541,
- ANIM_MOUNT_SWIM_SPRINT = 542,
- ANIM_FLY_MOUNT_SWIM_SPRINT = 543,
- ANIM_MOUNT_SWIM_WALK = 544,
- ANIM_FLY_MOUNT_SWIM_WALK = 545,
- ANIM_MOUNT_SWIM_WALK_BACKWARDS = 546,
- ANIM_FLY_MOUNT_SWIM_WALK_BACKWARDS = 547,
- ANIM_MOUNT_FLIGHT_IDLE = 548,
- ANIM_FLY_MOUNT_FLIGHT_IDLE = 549,
- ANIM_MOUNT_FLIGHT_BACKWARDS = 550,
- ANIM_FLY_MOUNT_FLIGHT_BACKWARDS = 551,
- ANIM_MOUNT_FLIGHT_LEFT = 552,
- ANIM_FLY_MOUNT_FLIGHT_LEFT = 553,
- ANIM_MOUNT_FLIGHT_RIGHT = 554,
- ANIM_FLY_MOUNT_FLIGHT_RIGHT = 555,
- ANIM_MOUNT_FLIGHT_RUN = 556,
- ANIM_FLY_MOUNT_FLIGHT_RUN = 557,
- ANIM_MOUNT_FLIGHT_SPRINT = 558,
- ANIM_FLY_MOUNT_FLIGHT_SPRINT = 559,
- ANIM_MOUNT_FLIGHT_WALK = 560,
- ANIM_FLY_MOUNT_FLIGHT_WALK = 561,
- ANIM_MOUNT_FLIGHT_WALK_BACKWARDS = 562,
- ANIM_FLY_MOUNT_FLIGHT_WALK_BACKWARDS = 563,
- ANIM_MOUNT_FLIGHT_START = 564,
- ANIM_FLY_MOUNT_FLIGHT_START = 565,
- ANIM_MOUNT_SWIM_START = 566,
- ANIM_FLY_MOUNT_SWIM_START = 567,
- ANIM_MOUNT_SWIM_LAND = 568,
- ANIM_FLY_MOUNT_SWIM_LAND = 569,
- ANIM_MOUNT_SWIM_LAND_RUN = 570,
- ANIM_FLY_MOUNT_SWIM_LAND_RUN = 571,
- ANIM_MOUNT_FLIGHT_LAND = 572,
- ANIM_FLY_MOUNT_FLIGHT_LAND = 573,
- ANIM_MOUNT_FLIGHT_LAND_RUN = 574,
- ANIM_FLY_MOUNT_FLIGHT_LAND_RUN = 575,
- ANIM_READY_BLOW_DART = 576,
- ANIM_FLY_READY_BLOW_DART = 577,
- ANIM_LOAD_BLOW_DART = 578,
- ANIM_FLY_LOAD_BLOW_DART = 579,
- ANIM_HOLD_BLOW_DART = 580,
- ANIM_FLY_HOLD_BLOW_DART = 581,
- ANIM_ATTACK_BLOW_DART = 582,
- ANIM_FLY_ATTACK_BLOW_DART = 583,
- ANIM_CARRIAGE_MOUNT = 584,
- ANIM_FLY_CARRIAGE_MOUNT = 585,
- ANIM_CARRIAGE_PASSENGER_MOUNT = 586,
- ANIM_FLY_CARRIAGE_PASSENGER_MOUNT = 587,
- ANIM_CARRIAGE_MOUNT_ATTACK = 588,
- ANIM_FLY_CARRIAGE_MOUNT_ATTACK = 589,
- ANIM_BARTENDER_STAND = 590,
- ANIM_FLY_BARTENDER_STAND = 591,
- ANIM_BARTENDER_WALK = 592,
- ANIM_FLY_BARTENDER_WALK = 593,
- ANIM_BARTENDER_RUN = 594,
- ANIM_FLY_BARTENDER_RUN = 595,
- ANIM_BARTENDER_SHUFFLE_LEFT = 596,
- ANIM_FLY_BARTENDER_SHUFFLE_LEFT = 597,
- ANIM_BARTENDER_SHUFFLE_RIGHT = 598,
- ANIM_FLY_BARTENDER_SHUFFLE_RIGHT = 599,
- ANIM_BARTENDER_EMOTE_TALK = 600,
- ANIM_FLY_BARTENDER_EMOTE_TALK = 601,
- ANIM_BARTENDER_EMOTE_POINT = 602,
- ANIM_FLY_BARTENDER_EMOTE_POINT = 603,
- ANIM_BARMAID_STAND = 604,
- ANIM_FLY_BARMAID_STAND = 605,
- ANIM_BARMAID_WALK = 606,
- ANIM_FLY_BARMAID_WALK = 607,
- ANIM_BARMAID_RUN = 608,
- ANIM_FLY_BARMAID_RUN = 609,
- ANIM_BARMAID_SHUFFLE_LEFT = 610,
- ANIM_FLY_BARMAID_SHUFFLE_LEFT = 611,
- ANIM_BARMAID_SHUFFLE_RIGHT = 612,
- ANIM_FLY_BARMAID_SHUFFLE_RIGHT = 613,
- ANIM_BARMAID_EMOTE_TALK = 614,
- ANIM_FLY_BARMAID_EMOTE_TALK = 615,
- ANIM_BARMAID_EMOTE_POINT = 616,
- ANIM_FLY_BARMAID_EMOTE_POINT = 617,
- ANIM_MOUNT_SELF_IDLE = 618,
- ANIM_FLY_MOUNT_SELF_IDLE = 619,
- ANIM_MOUNT_SELF_WALK = 620,
- ANIM_FLY_MOUNT_SELF_WALK = 621,
- ANIM_MOUNT_SELF_RUN = 622,
- ANIM_FLY_MOUNT_SELF_RUN = 623,
- ANIM_MOUNT_SELF_SPRINT = 624,
- ANIM_FLY_MOUNT_SELF_SPRINT = 625,
- ANIM_MOUNT_SELF_RUN_LEFT = 626,
- ANIM_FLY_MOUNT_SELF_RUN_LEFT = 627,
- ANIM_MOUNT_SELF_RUN_RIGHT = 628,
- ANIM_FLY_MOUNT_SELF_RUN_RIGHT = 629,
- ANIM_MOUNT_SELF_SHUFFLE_LEFT = 630,
- ANIM_FLY_MOUNT_SELF_SHUFFLE_LEFT = 631,
- ANIM_MOUNT_SELF_SHUFFLE_RIGHT = 632,
- ANIM_FLY_MOUNT_SELF_SHUFFLE_RIGHT = 633,
- ANIM_MOUNT_SELF_WALK_BACKWARDS = 634,
- ANIM_FLY_MOUNT_SELF_WALK_BACKWARDS = 635,
- ANIM_MOUNT_SELF_SPECIAL = 636,
- ANIM_FLY_MOUNT_SELF_SPECIAL = 637,
- ANIM_MOUNT_SELF_JUMP = 638,
- ANIM_FLY_MOUNT_SELF_JUMP = 639,
- ANIM_MOUNT_SELF_JUMP_START = 640,
- ANIM_FLY_MOUNT_SELF_JUMP_START = 641,
- ANIM_MOUNT_SELF_JUMP_END = 642,
- ANIM_FLY_MOUNT_SELF_JUMP_END = 643,
- ANIM_MOUNT_SELF_JUMP_LAND_RUN = 644,
- ANIM_FLY_MOUNT_SELF_JUMP_LAND_RUN = 645,
- ANIM_MOUNT_SELF_START = 646,
- ANIM_FLY_MOUNT_SELF_START = 647,
- ANIM_MOUNT_SELF_FALL = 648,
- ANIM_FLY_MOUNT_SELF_FALL = 649,
- ANIM_STORMSTRIKE = 650,
- ANIM_FLY_STORMSTRIKE = 651,
- ANIM_READY_JOUST_NO_SHEATHE = 652,
- ANIM_FLY_READY_JOUST_NO_SHEATHE = 653,
- ANIM_SLAM = 654,
- ANIM_FLY_SLAM = 655,
- ANIM_DEATH_STRIKE = 656,
- ANIM_FLY_DEATH_STRIKE = 657,
- ANIM_SWIM_ATTACK_UNARMED = 658,
- ANIM_FLY_SWIM_ATTACK_UNARMED = 659
+ ANIM_STAND = 0,
+ ANIM_DEATH = 1,
+ ANIM_SPELL = 2,
+ ANIM_STOP = 3,
+ ANIM_WALK = 4,
+ ANIM_RUN = 5,
+ ANIM_DEAD = 6,
+ ANIM_RISE = 7,
+ ANIM_STAND_WOUND = 8,
+ ANIM_COMBAT_WOUND = 9,
+ ANIM_COMBAT_CRITICAL = 10,
+ ANIM_SHUFFLE_LEFT = 11,
+ ANIM_SHUFFLE_RIGHT = 12,
+ ANIM_WALK_BACKWARDS = 13,
+ ANIM_STUN = 14,
+ ANIM_HANDS_CLOSED = 15,
+ ANIM_ATTACK_UNARMED = 16,
+ ANIM_ATTACK1H = 17,
+ ANIM_ATTACK2H = 18,
+ ANIM_ATTACK2HL = 19,
+ ANIM_PARRY_UNARMED = 20,
+ ANIM_PARRY1H = 21,
+ ANIM_PARRY2H = 22,
+ ANIM_PARRY2HL = 23,
+ ANIM_SHIELD_BLOCK = 24,
+ ANIM_READY_UNARMED = 25,
+ ANIM_READY1H = 26,
+ ANIM_READY2H = 27,
+ ANIM_READY2HL = 28,
+ ANIM_READY_BOW = 29,
+ ANIM_DODGE = 30,
+ ANIM_SPELL_PRECAST = 31,
+ ANIM_SPELL_CAST = 32,
+ ANIM_SPELL_CAST_AREA = 33,
+ ANIM_NPC_WELCOME = 34,
+ ANIM_NPC_GOODBYE = 35,
+ ANIM_BLOCK = 36,
+ ANIM_JUMP_START = 37,
+ ANIM_JUMP = 38,
+ ANIM_JUMP_END = 39,
+ ANIM_FALL = 40,
+ ANIM_SWIM_IDLE = 41,
+ ANIM_SWIM = 42,
+ ANIM_SWIM_LEFT = 43,
+ ANIM_SWIM_RIGHT = 44,
+ ANIM_SWIM_BACKWARDS = 45,
+ ANIM_ATTACK_BOW = 46,
+ ANIM_FIRE_BOW = 47,
+ ANIM_READY_RIFLE = 48,
+ ANIM_ATTACK_RIFLE = 49,
+ ANIM_LOOT = 50,
+ ANIM_READY_SPELL_DIRECTED = 51,
+ ANIM_READY_SPELL_OMNI = 52,
+ ANIM_SPELL_CAST_DIRECTED = 53,
+ ANIM_SPELL_CAST_OMNI = 54,
+ ANIM_BATTLE_ROAR = 55,
+ ANIM_READY_ABILITY = 56,
+ ANIM_SPECIAL1H = 57,
+ ANIM_SPECIAL2H = 58,
+ ANIM_SHIELD_BASH = 59,
+ ANIM_EMOTE_TALK = 60,
+ ANIM_EMOTE_EAT = 61,
+ ANIM_EMOTE_WORK = 62,
+ ANIM_EMOTE_USE_STANDING = 63,
+ ANIM_EMOTE_TALK_EXCLAMATION = 64,
+ ANIM_EMOTE_TALK_QUESTION = 65,
+ ANIM_EMOTE_BOW = 66,
+ ANIM_EMOTE_WAVE = 67,
+ ANIM_EMOTE_CHEER = 68,
+ ANIM_EMOTE_DANCE = 69,
+ ANIM_EMOTE_LAUGH = 70,
+ ANIM_EMOTE_SLEEP = 71,
+ ANIM_EMOTE_SIT_GROUND = 72,
+ ANIM_EMOTE_RUDE = 73,
+ ANIM_EMOTE_ROAR = 74,
+ ANIM_EMOTE_KNEEL = 75,
+ ANIM_EMOTE_KISS = 76,
+ ANIM_EMOTE_CRY = 77,
+ ANIM_EMOTE_CHICKEN = 78,
+ ANIM_EMOTE_BEG = 79,
+ ANIM_EMOTE_APPLAUD = 80,
+ ANIM_EMOTE_SHOUT = 81,
+ ANIM_EMOTE_FLEX = 82,
+ ANIM_EMOTE_SHY = 83,
+ ANIM_EMOTE_POINT = 84,
+ ANIM_ATTACK1H_PIERCE = 85,
+ ANIM_ATTACK2H_LOOSE_PIERCE = 86,
+ ANIM_ATTACK_OFF = 87,
+ ANIM_ATTACK_OFF_PIERCE = 88,
+ ANIM_SHEATHE = 89,
+ ANIM_HIP_SHEATHE = 90,
+ ANIM_MOUNT = 91,
+ ANIM_RUN_RIGHT = 92,
+ ANIM_RUN_LEFT = 93,
+ ANIM_MOUNT_SPECIAL = 94,
+ ANIM_KICK = 95,
+ ANIM_SIT_GROUND_DOWN = 96,
+ ANIM_SIT_GROUND = 97,
+ ANIM_SIT_GROUND_UP = 98,
+ ANIM_SLEEP_DOWN = 99,
+ ANIM_SLEEP = 100,
+ ANIM_SLEEP_UP = 101,
+ ANIM_SIT_CHAIR_LOW = 102,
+ ANIM_SIT_CHAIR_MED = 103,
+ ANIM_SIT_CHAIR_HIGH = 104,
+ ANIM_LOAD_BOW = 105,
+ ANIM_LOAD_RIFLE = 106,
+ ANIM_ATTACK_THROWN = 107,
+ ANIM_READY_THROWN = 108,
+ ANIM_HOLD_BOW = 109,
+ ANIM_HOLD_RIFLE = 110,
+ ANIM_HOLD_THROWN = 111,
+ ANIM_LOAD_THROWN = 112,
+ ANIM_EMOTE_SALUTE = 113,
+ ANIM_KNEEL_START = 114,
+ ANIM_KNEEL_LOOP = 115,
+ ANIM_KNEEL_END = 116,
+ ANIM_ATTACK_UNARMED_OFF = 117,
+ ANIM_SPECIAL_UNARMED = 118,
+ ANIM_STEALTH_WALK = 119,
+ ANIM_STEALTH_STAND = 120,
+ ANIM_KNOCKDOWN = 121,
+ ANIM_EATING_LOOP = 122,
+ ANIM_USE_STANDING_LOOP = 123,
+ ANIM_CHANNEL_CAST_DIRECTED = 124,
+ ANIM_CHANNEL_CAST_OMNI = 125,
+ ANIM_WHIRLWIND = 126,
+ ANIM_BIRTH = 127,
+ ANIM_USE_STANDING_START = 128,
+ ANIM_USE_STANDING_END = 129,
+ ANIM_CREATURE_SPECIAL = 130,
+ ANIM_DROWN = 131,
+ ANIM_DROWNED = 132,
+ ANIM_FISHING_CAST = 133,
+ ANIM_FISHING_LOOP = 134,
+ ANIM_FLY = 135,
+ ANIM_EMOTE_WORK_NO_SHEATHE = 136,
+ ANIM_EMOTE_STUN_NO_SHEATHE = 137,
+ ANIM_EMOTE_USE_STANDING_NO_SHEATHE = 138,
+ ANIM_SPELL_SLEEP_DOWN = 139,
+ ANIM_SPELL_KNEEL_START = 140,
+ ANIM_SPELL_KNEEL_LOOP = 141,
+ ANIM_SPELL_KNEEL_END = 142,
+ ANIM_SPRINT = 143,
+ ANIM_IN_FLIGHT = 144,
+ ANIM_SPAWN = 145,
+ ANIM_CLOSE = 146,
+ ANIM_CLOSED = 147,
+ ANIM_OPEN = 148,
+ ANIM_OPENED = 149,
+ ANIM_DESTROY = 150,
+ ANIM_DESTROYED = 151,
+ ANIM_REBUILD = 152,
+ ANIM_CUSTOM_0 = 153,
+ ANIM_CUSTOM_1 = 154,
+ ANIM_CUSTOM_2 = 155,
+ ANIM_CUSTOM_3 = 156,
+ ANIM_DESPAWN = 157,
+ ANIM_HOLD = 158,
+ ANIM_DECAY = 159,
+ ANIM_BOW_PULL = 160,
+ ANIM_BOW_RELEASE = 161,
+ ANIM_SHIP_START = 162,
+ ANIM_SHIP_MOVING = 163,
+ ANIM_SHIP_STOP = 164,
+ ANIM_GROUP_ARROW = 165,
+ ANIM_ARROW = 166,
+ ANIM_CORPSE_ARROW = 167,
+ ANIM_GUIDE_ARROW = 168,
+ ANIM_SWAY = 169,
+ ANIM_DRUID_CAT_POUNCE = 170,
+ ANIM_DRUID_CAT_RIP = 171,
+ ANIM_DRUID_CAT_RAKE = 172,
+ ANIM_DRUID_CAT_RAVAGE = 173,
+ ANIM_DRUID_CAT_CLAW = 174,
+ ANIM_DRUID_CAT_COWER = 175,
+ ANIM_DRUID_BEAR_SWIPE = 176,
+ ANIM_DRUID_BEAR_BITE = 177,
+ ANIM_DRUID_BEAR_MAUL = 178,
+ ANIM_DRUID_BEAR_BASH = 179,
+ ANIM_DRAGON_TAIL = 180,
+ ANIM_DRAGON_STOMP = 181,
+ ANIM_DRAGON_SPIT = 182,
+ ANIM_DRAGON_SPIT_HOVER = 183,
+ ANIM_DRAGON_SPIT_FLY = 184,
+ ANIM_EMOTE_YES = 185,
+ ANIM_EMOTE_NO = 186,
+ ANIM_JUMP_LAND_RUN = 187,
+ ANIM_LOOT_HOLD = 188,
+ ANIM_LOOT_UP = 189,
+ ANIM_STAND_HIGH = 190,
+ ANIM_IMPACT = 191,
+ ANIM_LIFTOFF = 192,
+ ANIM_HOVER = 193,
+ ANIM_SUCCUBUS_ENTICE = 194,
+ ANIM_EMOTE_TRAIN = 195,
+ ANIM_EMOTE_DEAD = 196,
+ ANIM_EMOTE_DANCE_ONCE = 197,
+ ANIM_DEFLECT = 198,
+ ANIM_EMOTE_EAT_NO_SHEATHE = 199,
+ ANIM_LAND = 200,
+ ANIM_SUBMERGE = 201,
+ ANIM_SUBMERGED = 202,
+ ANIM_CANNIBALIZE = 203,
+ ANIM_ARROW_BIRTH = 204,
+ ANIM_GROUP_ARROW_BIRTH = 205,
+ ANIM_CORPSE_ARROW_BIRTH = 206,
+ ANIM_GUIDE_ARROW_BIRTH = 207,
+ ANIM_EMOTE_TALK_NO_SHEATHE = 208,
+ ANIM_EMOTE_POINT_NO_SHEATHE = 209,
+ ANIM_EMOTE_SALUTE_NO_SHEATHE = 210,
+ ANIM_EMOTE_DANCE_SPECIAL = 211,
+ ANIM_MUTILATE = 212,
+ ANIM_CUSTOM_SPELL_01 = 213,
+ ANIM_CUSTOM_SPELL_02 = 214,
+ ANIM_CUSTOM_SPELL_03 = 215,
+ ANIM_CUSTOM_SPELL_04 = 216,
+ ANIM_CUSTOM_SPELL_05 = 217,
+ ANIM_CUSTOM_SPELL_06 = 218,
+ ANIM_CUSTOM_SPELL_07 = 219,
+ ANIM_CUSTOM_SPELL_08 = 220,
+ ANIM_CUSTOM_SPELL_09 = 221,
+ ANIM_CUSTOM_SPELL_10 = 222,
+ ANIM_STEALTH_RUN = 223,
+ ANIM_EMERGE = 224,
+ ANIM_COWER = 225,
+ ANIM_GRAB = 226,
+ ANIM_GRAB_CLOSED = 227,
+ ANIM_GRAB_THROWN = 228,
+ ANIM_FLY_STAND = 229,
+ ANIM_FLY_DEATH = 230,
+ ANIM_FLY_SPELL = 231,
+ ANIM_FLY_STOP = 232,
+ ANIM_FLY_WALK = 233,
+ ANIM_FLY_RUN = 234,
+ ANIM_FLY_DEAD = 235,
+ ANIM_FLY_RISE = 236,
+ ANIM_FLY_STAND_WOUND = 237,
+ ANIM_FLY_COMBAT_WOUND = 238,
+ ANIM_FLY_COMBAT_CRITICAL = 239,
+ ANIM_FLY_SHUFFLE_LEFT = 240,
+ ANIM_FLY_SHUFFLE_RIGHT = 241,
+ ANIM_FLY_WALK_BACKWARDS = 242,
+ ANIM_FLY_STUN = 243,
+ ANIM_FLY_HANDS_CLOSED = 244,
+ ANIM_FLY_ATTACK_UNARMED = 245,
+ ANIM_FLY_ATTACK1H = 246,
+ ANIM_FLY_ATTACK2H = 247,
+ ANIM_FLY_ATTACK2HL = 248,
+ ANIM_FLY_PARRY_UNARMED = 249,
+ ANIM_FLY_PARRY1H = 250,
+ ANIM_FLY_PARRY2H = 251,
+ ANIM_FLY_PARRY2HL = 252,
+ ANIM_FLY_SHIELD_BLOCK = 253,
+ ANIM_FLY_READY_UNARMED = 254,
+ ANIM_FLY_READY1H = 255,
+ ANIM_FLY_READY2H = 256,
+ ANIM_FLY_READY2HL = 257,
+ ANIM_FLY_READY_BOW = 258,
+ ANIM_FLY_DODGE = 259,
+ ANIM_FLY_SPELL_PRECAST = 260,
+ ANIM_FLY_SPELL_CAST = 261,
+ ANIM_FLY_SPELL_CAST_AREA = 262,
+ ANIM_FLY_NPC_WELCOME = 263,
+ ANIM_FLY_NPC_GOODBYE = 264,
+ ANIM_FLY_BLOCK = 265,
+ ANIM_FLY_JUMP_START = 266,
+ ANIM_FLY_JUMP = 267,
+ ANIM_FLY_JUMP_END = 268,
+ ANIM_FLY_FALL = 269,
+ ANIM_FLY_SWIM_IDLE = 270,
+ ANIM_FLY_SWIM = 271,
+ ANIM_FLY_SWIM_LEFT = 272,
+ ANIM_FLY_SWIM_RIGHT = 273,
+ ANIM_FLY_SWIM_BACKWARDS = 274,
+ ANIM_FLY_ATTACK_BOW = 275,
+ ANIM_FLY_FIRE_BOW = 276,
+ ANIM_FLY_READY_RIFLE = 277,
+ ANIM_FLY_ATTACK_RIFLE = 278,
+ ANIM_FLY_LOOT = 279,
+ ANIM_FLY_READY_SPELL_DIRECTED = 280,
+ ANIM_FLY_READY_SPELL_OMNI = 281,
+ ANIM_FLY_SPELL_CAST_DIRECTED = 282,
+ ANIM_FLY_SPELL_CAST_OMNI = 283,
+ ANIM_FLY_SPELL_BATTLE_ROAR = 284,
+ ANIM_FLY_READY_ABILITY = 285,
+ ANIM_FLY_SPECIAL1H = 286,
+ ANIM_FLY_SPECIAL2H = 287,
+ ANIM_FLY_SHIELD_BASH = 288,
+ ANIM_FLY_EMOTE_TALK = 289,
+ ANIM_FLY_EMOTE_EAT = 290,
+ ANIM_FLY_EMOTE_WORK = 291,
+ ANIM_FLY_USE_STANDING = 292,
+ ANIM_FLY_EMOTE_TALK_EXCLAMATION = 293,
+ ANIM_FLY_EMOTE_TALK_QUESTION = 294,
+ ANIM_FLY_EMOTE_BOW = 295,
+ ANIM_FLY_EMOTE_WAVE = 296,
+ ANIM_FLY_EMOTE_CHEER = 297,
+ ANIM_FLY_EMOTE_DANCE = 298,
+ ANIM_FLY_EMOTE_LAUGH = 299,
+ ANIM_FLY_EMOTE_SLEEP = 300,
+ ANIM_FLY_EMOTE_SIT_GROUND = 301,
+ ANIM_FLY_EMOTE_RUDE = 302,
+ ANIM_FLY_EMOTE_ROAR = 303,
+ ANIM_FLY_EMOTE_KNEEL = 304,
+ ANIM_FLY_EMOTE_KISS = 305,
+ ANIM_FLY_EMOTE_CRY = 306,
+ ANIM_FLY_EMOTE_CHICKEN = 307,
+ ANIM_FLY_EMOTE_BEG = 308,
+ ANIM_FLY_EMOTE_APPLAUD = 309,
+ ANIM_FLY_EMOTE_SHOUT = 310,
+ ANIM_FLY_EMOTE_FLEX = 311,
+ ANIM_FLY_EMOTE_SHY = 312,
+ ANIM_FLY_EMOTE_POINT = 313,
+ ANIM_FLY_ATTACK1H_PIERCE = 314,
+ ANIM_FLY_ATTACK2H_LOOSE_PIERCE = 315,
+ ANIM_FLY_ATTACK_OFF = 316,
+ ANIM_FLY_ATTACK_OFF_PIERCE = 317,
+ ANIM_FLY_SHEATH = 318,
+ ANIM_FLY_HIP_SHEATH = 319,
+ ANIM_FLY_MOUNT = 320,
+ ANIM_FLY_RUN_RIGHT = 321,
+ ANIM_FLY_RUN_LEFT = 322,
+ ANIM_FLY_MOUNT_SPECIAL = 323,
+ ANIM_FLY_KICK = 324,
+ ANIM_FLY_SIT_GROUND_DOWN = 325,
+ ANIM_FLY_SIT_GROUND = 326,
+ ANIM_FLY_SIT_GROUND_UP = 327,
+ ANIM_FLY_SLEEP_DOWN = 328,
+ ANIM_FLY_SLEEP = 329,
+ ANIM_FLY_SLEEP_UP = 330,
+ ANIM_FLY_SIT_CHAIR_LOW = 331,
+ ANIM_FLY_SIT_CHAIR_MED = 332,
+ ANIM_FLY_SIT_CHAIR_HIGH = 333,
+ ANIM_FLY_LOAD_BOW = 334,
+ ANIM_FLY_LOAD_RIFLE = 335,
+ ANIM_FLY_ATTACK_THROWN = 336,
+ ANIM_FLY_READY_THROWN = 337,
+ ANIM_FLY_HOLD_BOW = 338,
+ ANIM_FLY_HOLD_RIFLE = 339,
+ ANIM_FLY_HOLD_THROWN = 340,
+ ANIM_FLY_LOAD_THROWN = 341,
+ ANIM_FLY_EMOTE_SALUTE = 342,
+ ANIM_FLY_KNEEL_START = 343,
+ ANIM_FLY_KNEEL_LOOP = 344,
+ ANIM_FLY_KNEEL_END = 345,
+ ANIM_FLY_ATTACK_UNARMED_OFF = 346,
+ ANIM_FLY_SPECIAL_UNARMED = 347,
+ ANIM_FLY_STEALTH_WALK = 348,
+ ANIM_FLY_STEALTH_STAND = 349,
+ ANIM_FLY_KNOCKDOWN = 350,
+ ANIM_FLY_EATING_LOOP = 351,
+ ANIM_FLY_USE_STANDING_LOOP = 352,
+ ANIM_FLY_CHANNEL_CAST_DIRECTED = 353,
+ ANIM_FLY_CHANNEL_CAST_OMNI = 354,
+ ANIM_FLY_WHIRLWIND = 355,
+ ANIM_FLY_BIRTH = 356,
+ ANIM_FLY_USE_STANDING_START = 357,
+ ANIM_FLY_USE_STANDING_END = 358,
+ ANIM_FLY_CREATURE_SPECIAL = 359,
+ ANIM_FLY_DROWN = 360,
+ ANIM_FLY_DROWNED = 361,
+ ANIM_FLY_FISHING_CAST = 362,
+ ANIM_FLY_FISHING_LOOP = 363,
+ ANIM_FLY_FLY = 364,
+ ANIM_FLY_EMOTE_WORK_NO_SHEATHE = 365,
+ ANIM_FLY_EMOTE_STUN_NO_SHEATHE = 366,
+ ANIM_FLY_EMOTE_USE_STANDING_NO_SHEATHE = 367,
+ ANIM_FLY_SPELL_SLEEP_DOWN = 368,
+ ANIM_FLY_SPELL_KNEEL_START = 369,
+ ANIM_FLY_SPELL_KNEEL_LOOP = 370,
+ ANIM_FLY_SPELL_KNEEL_END = 371,
+ ANIM_FLY_SPRINT = 372,
+ ANIM_FLY_IN_FLIGHT = 373,
+ ANIM_FLY_SPAWN = 374,
+ ANIM_FLY_CLOSE = 375,
+ ANIM_FLY_CLOSED = 376,
+ ANIM_FLY_OPEN = 377,
+ ANIM_FLY_OPENED = 378,
+ ANIM_FLY_DESTROY = 379,
+ ANIM_FLY_DESTROYED = 380,
+ ANIM_FLY_REBUILD = 381,
+ ANIM_FLY_CUSTOM_0 = 382,
+ ANIM_FLY_CUSTOM_1 = 383,
+ ANIM_FLY_CUSTOM_2 = 384,
+ ANIM_FLY_CUSTOM_3 = 385,
+ ANIM_FLY_DESPAWN = 386,
+ ANIM_FLY_HOLD = 387,
+ ANIM_FLY_DECAY = 388,
+ ANIM_FLY_BOW_PULL = 389,
+ ANIM_FLY_BOW_RELEASE = 390,
+ ANIM_FLY_SHIP_START = 391,
+ ANIM_FLY_SHIP_MOVING = 392,
+ ANIM_FLY_SHIP_STOP = 393,
+ ANIM_FLY_GROUP_ARROW = 394,
+ ANIM_FLY_ARROW = 395,
+ ANIM_FLY_CORPSE_ARROW = 396,
+ ANIM_FLY_GUIDE_ARROW = 397,
+ ANIM_FLY_SWAY = 398,
+ ANIM_FLY_DRUID_CAT_POUNCE = 399,
+ ANIM_FLY_DRUID_CAT_RIP = 400,
+ ANIM_FLY_DRUID_CAT_RAKE = 401,
+ ANIM_FLY_DRUID_CAT_RAVAGE = 402,
+ ANIM_FLY_DRUID_CAT_CLAW = 403,
+ ANIM_FLY_DRUID_CAT_COWER = 404,
+ ANIM_FLY_DRUID_BEAR_SWIPE = 405,
+ ANIM_FLY_DRUID_BEAR_BITE = 406,
+ ANIM_FLY_DRUID_BEAR_MAUL = 407,
+ ANIM_FLY_DRUID_BEAR_BASH = 408,
+ ANIM_FLY_DRAGON_TAIL = 409,
+ ANIM_FLY_DRAGON_STOMP = 410,
+ ANIM_FLY_DRAGON_SPIT = 411,
+ ANIM_FLY_DRAGON_SPIT_HOVER = 412,
+ ANIM_FLY_DRAGON_SPIT_FLY = 413,
+ ANIM_FLY_EMOTE_YES = 414,
+ ANIM_FLY_EMOTE_NO = 415,
+ ANIM_FLY_JUMP_LAND_RUN = 416,
+ ANIM_FLY_LOOT_HOLD = 417,
+ ANIM_FLY_LOOT_UP = 418,
+ ANIM_FLY_STAND_HIGH = 419,
+ ANIM_FLY_IMPACT = 420,
+ ANIM_FLY_LIFTOFF = 421,
+ ANIM_FLY_HOVER = 422,
+ ANIM_FLY_SUCCUBUS_ENTICE = 423,
+ ANIM_FLY_EMOTE_TRAIN = 424,
+ ANIM_FLY_EMOTE_DEAD = 425,
+ ANIM_FLY_EMOTE_DANCE_ONCE = 426,
+ ANIM_FLY_DEFLECT = 427,
+ ANIM_FLY_EMOTE_EAT_NO_SHEATHE = 428,
+ ANIM_FLY_LAND = 429,
+ ANIM_FLY_SUBMERGE = 430,
+ ANIM_FLY_SUBMERGED = 431,
+ ANIM_FLY_CANNIBALIZE = 432,
+ ANIM_FLY_ARROW_BIRTH = 433,
+ ANIM_FLY_GROUP_ARROW_BIRTH = 434,
+ ANIM_FLY_CORPSE_ARROW_BIRTH = 435,
+ ANIM_FLY_GUIDE_ARROW_BIRTH = 436,
+ ANIM_FLY_EMOTE_TALK_NO_SHEATHE = 437,
+ ANIM_FLY_EMOTE_POINT_NO_SHEATHE = 438,
+ ANIM_FLY_EMOTE_SALUTE_NO_SHEATHE = 439,
+ ANIM_FLY_EMOTE_DANCE_SPECIAL = 440,
+ ANIM_FLY_MUTILATE = 441,
+ ANIM_FLY_CUSTOM_SPELL_01 = 442,
+ ANIM_FLY_CUSTOM_SPELL_02 = 443,
+ ANIM_FLY_CUSTOM_SPELL_03 = 444,
+ ANIM_FLY_CUSTOM_SPELL_04 = 445,
+ ANIM_FLY_CUSTOM_SPELL_05 = 446,
+ ANIM_FLY_CUSTOM_SPELL_06 = 447,
+ ANIM_FLY_CUSTOM_SPELL_07 = 448,
+ ANIM_FLY_CUSTOM_SPELL_08 = 449,
+ ANIM_FLY_CUSTOM_SPELL_09 = 450,
+ ANIM_FLY_CUSTOM_SPELL_10 = 451,
+ ANIM_FLY_STEALTH_RUN = 452,
+ ANIM_FLY_EMERGE = 453,
+ ANIM_FLY_COWER = 454,
+ ANIM_FLY_GRAB = 455,
+ ANIM_FLY_GRAB_CLOSED = 456,
+ ANIM_FLY_GRAB_THROWN = 457,
+ ANIM_TO_FLY = 458,
+ ANIM_TO_HOVER = 459,
+ ANIM_TO_GROUND = 460,
+ ANIM_FLY_TO_FLY = 461,
+ ANIM_FLY_TO_HOVER = 462,
+ ANIM_FLY_TO_GROUND = 463,
+ ANIM_SETTLE = 464,
+ ANIM_FLY_SETTLE = 465,
+ ANIM_DEATH_START = 466,
+ ANIM_DEATH_LOOP = 467,
+ ANIM_DEATH_END = 468,
+ ANIM_FLY_DEATH_START = 469,
+ ANIM_FLY_DEATH_LOOP = 470,
+ ANIM_FLY_DEATH_END = 471,
+ ANIM_DEATH_END_HOLD = 472,
+ ANIM_FLY_DEATH_END_HOLD = 473,
+ ANIM_STRANGULATE = 474,
+ ANIM_FLY_STRANGULATE = 475,
+ ANIM_READY_JOUST = 476,
+ ANIM_LOAD_JOUST = 477,
+ ANIM_HOLD_JOUST = 478,
+ ANIM_FLY_READY_JOUST = 479,
+ ANIM_FLY_LOAD_JOUST = 480,
+ ANIM_FLY_HOLD_JOUST = 481,
+ ANIM_ATTACK_JOUST = 482,
+ ANIM_FLY_ATTACK_JOUST = 483,
+ ANIM_RECLINED_MOUNT = 484,
+ ANIM_FLY_RECLINED_MOUNT = 485,
+ ANIM_TO_ALTERED = 486,
+ ANIM_FROM_ALTERED = 487,
+ ANIM_FLY_TO_ALTERED = 488,
+ ANIM_FLY_FROM_ALTERED = 489,
+ ANIM_IN_STOCKS = 490,
+ ANIM_FLY_IN_STOCKS = 491,
+ ANIM_VEHICLE_GRAB = 492,
+ ANIM_VEHICLE_THROW = 493,
+ ANIM_FLY_VEHICLE_GRAB = 494,
+ ANIM_FLY_VEHICLE_THROW = 495,
+ ANIM_TO_ALTERED_POST_SWAP = 496,
+ ANIM_FROM_ALTERED_POST_SWAP = 497,
+ ANIM_FLY_TO_ALTERED_POST_SWAP = 498,
+ ANIM_FLY_FROM_ALTERED_POST_SWAP = 499,
+ ANIM_RECLINED_MOUNT_PASSENGER = 500,
+ ANIM_FLY_RECLINED_MOUNT_PASSENGER = 501,
+ ANIM_CARRY2H = 502,
+ ANIM_CARRIED2H = 503,
+ ANIM_FLY_CARRY2H = 504,
+ ANIM_FLY_CARRIED2H = 505,
+ ANIM_EMOTE_SNIFF = 506,
+ ANIM_EMOTE_FLY_SNIFF = 507,
+ ANIM_ATTACK_FIST1H = 508,
+ ANIM_FLY_ATTACK_FIST1H = 509,
+ ANIM_ATTACK_FIST_1H_OFF = 510,
+ ANIM_FLY_ATTACK_FIST_1H_OFF = 511,
+ ANIM_PARRY_FIST1H = 512,
+ ANIM_FLY_PARRY_FIST1H = 513,
+ ANIM_READY_FIST1H = 514,
+ ANIM_FLY_READY_FIST1H = 515,
+ ANIM_SPECIAL_FIST1H = 516,
+ ANIM_FLY_SPECIAL_FIST1H = 517,
+ ANIM_EMOTE_READ_START = 518,
+ ANIM_FLY_EMOTE_READ_START = 519,
+ ANIM_EMOTE_READ_LOOP = 520,
+ ANIM_FLY_EMOTE_READ_LOOP = 521,
+ ANIM_EMOTE_READ_END = 522,
+ ANIM_FLY_EMOTE_READ_END = 523,
+ ANIM_SWIM_RUN = 524,
+ ANIM_FLY_SWIM_RUN = 525,
+ ANIM_SWIM_WALK = 526,
+ ANIM_FLY_SWIM_WALK = 527,
+ ANIM_SWIM_WALK_BACKWARDS = 528,
+ ANIM_FLY_SWIM_WALK_BACKWARDS = 529,
+ ANIM_SWIM_SPRINT = 530,
+ ANIM_FLY_SWIM_SPRINT = 531,
+ ANIM_MOUNT_SWIM_IDLE = 532,
+ ANIM_FLY_MOUNT_SWIM_IDLE = 533,
+ ANIM_MOUNT_SWIM_BACKWARDS = 534,
+ ANIM_FLY_MOUNT_SWIM_BACKWARDS = 535,
+ ANIM_MOUNT_SWIM_LEFT = 536,
+ ANIM_FLY_MOUNT_SWIM_LEFT = 537,
+ ANIM_MOUNT_SWIM_RIGHT = 538,
+ ANIM_FLY_MOUNT_SWIM_RIGHT = 539,
+ ANIM_MOUNT_SWIM_RUN = 540,
+ ANIM_FLY_MOUNT_SWIM_RUN = 541,
+ ANIM_MOUNT_SWIM_SPRINT = 542,
+ ANIM_FLY_MOUNT_SWIM_SPRINT = 543,
+ ANIM_MOUNT_SWIM_WALK = 544,
+ ANIM_FLY_MOUNT_SWIM_WALK = 545,
+ ANIM_MOUNT_SWIM_WALK_BACKWARDS = 546,
+ ANIM_FLY_MOUNT_SWIM_WALK_BACKWARDS = 547,
+ ANIM_MOUNT_FLIGHT_IDLE = 548,
+ ANIM_FLY_MOUNT_FLIGHT_IDLE = 549,
+ ANIM_MOUNT_FLIGHT_BACKWARDS = 550,
+ ANIM_FLY_MOUNT_FLIGHT_BACKWARDS = 551,
+ ANIM_MOUNT_FLIGHT_LEFT = 552,
+ ANIM_FLY_MOUNT_FLIGHT_LEFT = 553,
+ ANIM_MOUNT_FLIGHT_RIGHT = 554,
+ ANIM_FLY_MOUNT_FLIGHT_RIGHT = 555,
+ ANIM_MOUNT_FLIGHT_RUN = 556,
+ ANIM_FLY_MOUNT_FLIGHT_RUN = 557,
+ ANIM_MOUNT_FLIGHT_SPRINT = 558,
+ ANIM_FLY_MOUNT_FLIGHT_SPRINT = 559,
+ ANIM_MOUNT_FLIGHT_WALK = 560,
+ ANIM_FLY_MOUNT_FLIGHT_WALK = 561,
+ ANIM_MOUNT_FLIGHT_WALK_BACKWARDS = 562,
+ ANIM_FLY_MOUNT_FLIGHT_WALK_BACKWARDS = 563,
+ ANIM_MOUNT_FLIGHT_START = 564,
+ ANIM_FLY_MOUNT_FLIGHT_START = 565,
+ ANIM_MOUNT_SWIM_START = 566,
+ ANIM_FLY_MOUNT_SWIM_START = 567,
+ ANIM_MOUNT_SWIM_LAND = 568,
+ ANIM_FLY_MOUNT_SWIM_LAND = 569,
+ ANIM_MOUNT_SWIM_LAND_RUN = 570,
+ ANIM_FLY_MOUNT_SWIM_LAND_RUN = 571,
+ ANIM_MOUNT_FLIGHT_LAND = 572,
+ ANIM_FLY_MOUNT_FLIGHT_LAND = 573,
+ ANIM_MOUNT_FLIGHT_LAND_RUN = 574,
+ ANIM_FLY_MOUNT_FLIGHT_LAND_RUN = 575,
+ ANIM_READY_BLOW_DART = 576,
+ ANIM_FLY_READY_BLOW_DART = 577,
+ ANIM_LOAD_BLOW_DART = 578,
+ ANIM_FLY_LOAD_BLOW_DART = 579,
+ ANIM_HOLD_BLOW_DART = 580,
+ ANIM_FLY_HOLD_BLOW_DART = 581,
+ ANIM_ATTACK_BLOW_DART = 582,
+ ANIM_FLY_ATTACK_BLOW_DART = 583,
+ ANIM_CARRIAGE_MOUNT = 584,
+ ANIM_FLY_CARRIAGE_MOUNT = 585,
+ ANIM_CARRIAGE_PASSENGER_MOUNT = 586,
+ ANIM_FLY_CARRIAGE_PASSENGER_MOUNT = 587,
+ ANIM_CARRIAGE_MOUNT_ATTACK = 588,
+ ANIM_FLY_CARRIAGE_MOUNT_ATTACK = 589,
+ ANIM_BARTENDER_STAND = 590,
+ ANIM_FLY_BARTENDER_STAND = 591,
+ ANIM_BARTENDER_WALK = 592,
+ ANIM_FLY_BARTENDER_WALK = 593,
+ ANIM_BARTENDER_RUN = 594,
+ ANIM_FLY_BARTENDER_RUN = 595,
+ ANIM_BARTENDER_SHUFFLE_LEFT = 596,
+ ANIM_FLY_BARTENDER_SHUFFLE_LEFT = 597,
+ ANIM_BARTENDER_SHUFFLE_RIGHT = 598,
+ ANIM_FLY_BARTENDER_SHUFFLE_RIGHT = 599,
+ ANIM_BARTENDER_EMOTE_TALK = 600,
+ ANIM_FLY_BARTENDER_EMOTE_TALK = 601,
+ ANIM_BARTENDER_EMOTE_POINT = 602,
+ ANIM_FLY_BARTENDER_EMOTE_POINT = 603,
+ ANIM_BARMAID_STAND = 604,
+ ANIM_FLY_BARMAID_STAND = 605,
+ ANIM_BARMAID_WALK = 606,
+ ANIM_FLY_BARMAID_WALK = 607,
+ ANIM_BARMAID_RUN = 608,
+ ANIM_FLY_BARMAID_RUN = 609,
+ ANIM_BARMAID_SHUFFLE_LEFT = 610,
+ ANIM_FLY_BARMAID_SHUFFLE_LEFT = 611,
+ ANIM_BARMAID_SHUFFLE_RIGHT = 612,
+ ANIM_FLY_BARMAID_SHUFFLE_RIGHT = 613,
+ ANIM_BARMAID_EMOTE_TALK = 614,
+ ANIM_FLY_BARMAID_EMOTE_TALK = 615,
+ ANIM_BARMAID_EMOTE_POINT = 616,
+ ANIM_FLY_BARMAID_EMOTE_POINT = 617,
+ ANIM_MOUNT_SELF_IDLE = 618,
+ ANIM_FLY_MOUNT_SELF_IDLE = 619,
+ ANIM_MOUNT_SELF_WALK = 620,
+ ANIM_FLY_MOUNT_SELF_WALK = 621,
+ ANIM_MOUNT_SELF_RUN = 622,
+ ANIM_FLY_MOUNT_SELF_RUN = 623,
+ ANIM_MOUNT_SELF_SPRINT = 624,
+ ANIM_FLY_MOUNT_SELF_SPRINT = 625,
+ ANIM_MOUNT_SELF_RUN_LEFT = 626,
+ ANIM_FLY_MOUNT_SELF_RUN_LEFT = 627,
+ ANIM_MOUNT_SELF_RUN_RIGHT = 628,
+ ANIM_FLY_MOUNT_SELF_RUN_RIGHT = 629,
+ ANIM_MOUNT_SELF_SHUFFLE_LEFT = 630,
+ ANIM_FLY_MOUNT_SELF_SHUFFLE_LEFT = 631,
+ ANIM_MOUNT_SELF_SHUFFLE_RIGHT = 632,
+ ANIM_FLY_MOUNT_SELF_SHUFFLE_RIGHT = 633,
+ ANIM_MOUNT_SELF_WALK_BACKWARDS = 634,
+ ANIM_FLY_MOUNT_SELF_WALK_BACKWARDS = 635,
+ ANIM_MOUNT_SELF_SPECIAL = 636,
+ ANIM_FLY_MOUNT_SELF_SPECIAL = 637,
+ ANIM_MOUNT_SELF_JUMP = 638,
+ ANIM_FLY_MOUNT_SELF_JUMP = 639,
+ ANIM_MOUNT_SELF_JUMP_START = 640,
+ ANIM_FLY_MOUNT_SELF_JUMP_START = 641,
+ ANIM_MOUNT_SELF_JUMP_END = 642,
+ ANIM_FLY_MOUNT_SELF_JUMP_END = 643,
+ ANIM_MOUNT_SELF_JUMP_LAND_RUN = 644,
+ ANIM_FLY_MOUNT_SELF_JUMP_LAND_RUN = 645,
+ ANIM_MOUNT_SELF_START = 646,
+ ANIM_FLY_MOUNT_SELF_START = 647,
+ ANIM_MOUNT_SELF_FALL = 648,
+ ANIM_FLY_MOUNT_SELF_FALL = 649,
+ ANIM_STORMSTRIKE = 650,
+ ANIM_FLY_STORMSTRIKE = 651,
+ ANIM_READY_JOUST_NO_SHEATHE = 652,
+ ANIM_FLY_READY_JOUST_NO_SHEATHE = 653,
+ ANIM_SLAM = 654,
+ ANIM_FLY_SLAM = 655,
+ ANIM_DEATH_STRIKE = 656,
+ ANIM_FLY_DEATH_STRIKE = 657,
+ ANIM_SWIM_ATTACK_UNARMED = 658,
+ ANIM_FLY_SWIM_ATTACK_UNARMED = 659,
+ ANIM_SPINNING_KICK = 660,
+ ANIM_FLY_SPINNING_KICK = 661,
+ ANIM_ROUND_HOUSE_KICK = 662,
+ ANIM_FLY_ROUND_HOUSE_KICK = 663,
+ ANIM_ROLL_START = 664,
+ ANIM_FLY_ROLL_START = 665,
+ ANIM_ROLL = 666,
+ ANIM_FLY_ROLL = 667,
+ ANIM_ROLL_END = 668,
+ ANIM_FLY_ROLL_END = 669,
+ ANIM_PALM_STRIKE = 670,
+ ANIM_FLY_PALM_STRIKE = 671,
+ ANIM_MONK_OFFENSE_ATTACK_UNARMED = 672,
+ ANIM_FLY_MONK_OFFENSE_ATTACK_UNARMED = 673,
+ ANIM_MONK_OFFENSE_ATTACK_UNARMED_OFF = 674,
+ ANIM_FLY_MONK_OFFENSE_ATTACK_UNARMED_OFF = 675,
+ ANIM_MONK_OFFENSE_PARRY_UNARMED = 676,
+ ANIM_FLY_MONK_OFFENSE_PARRY_UNARMED = 677,
+ ANIM_MONK_OFFENSE_READY_UNARMED = 678,
+ ANIM_FLY_MONK_OFFENSE_READY_UNARMED = 679,
+ ANIM_MONK_OFFENSE_SPECIAL_UNARMED = 680,
+ ANIM_FLY_MONK_OFFENSE_SPECIAL_UNARMED = 681,
+ ANIM_MONK_DEFENSE_ATTACK_UNARMED = 682,
+ ANIM_FLY_MONK_DEFENSE_ATTACK_UNARMED = 683,
+ ANIM_MONK_DEFENSE_ATTACK_UNARMED_OFF = 684,
+ ANIM_FLY_MONK_DEFENSE_ATTACK_UNARMED_OFF = 685,
+ ANIM_MONK_DEFENSE_PARRY_UNARMED = 686,
+ ANIM_FLY_MONK_DEFENSE_PARRY_UNARMED = 687,
+ ANIM_MONK_DEFENSE_READY_UNARMED = 688,
+ ANIM_FLY_MONK_DEFENSE_READY_UNARMED = 689,
+ ANIM_MONK_DEFENSE_SPECIAL_UNARMED = 690,
+ ANIM_FLY_MONK_DEFENSE_SPECIAL_UNARMED = 691,
+ ANIM_MONK_HEAL_ATTACK_UNARMED = 692,
+ ANIM_FLY_MONK_HEAL_ATTACK_UNARMED = 693,
+ ANIM_MONK_HEAL_ATTACK_UNARMED_OFF = 694,
+ ANIM_FLY_MONK_HEAL_ATTACK_UNARMED_OFF = 695,
+ ANIM_MONK_HEAL_PARRY_UNARMED = 696,
+ ANIM_FLY_MONK_HEAL_PARRY_UNARMED = 697,
+ ANIM_MONK_HEAL_READY_UNARMED = 698,
+ ANIM_FLY_MONK_HEAL_READY_UNARMED = 699,
+ ANIM_MONK_HEAL_SPECIAL_UNARMED = 700,
+ ANIM_FLY_MONK_HEAL_SPECIAL_UNARMED = 701,
+ ANIM_FLYING_KICK = 702,
+ ANIM_FLY_FLYING_KICK = 703,
+ ANIM_FLYING_KICK_START = 704,
+ ANIM_FLY_FLYING_KICK_START = 705,
+ ANIM_FLYING_KICK_END = 706,
+ ANIM_FLY_FLYING_KICK_END = 707,
+ ANIM_CRANE_START = 708,
+ ANIM_FLY_CRANE_START = 709,
+ ANIM_CRANE_LOOP = 710,
+ ANIM_FLY_CRANE_LOOP = 711,
+ ANIM_CRANE_END = 712,
+ ANIM_FLY_CRANE_END = 713,
+ ANIM_DESPAWNED = 714,
+ ANIM_FLY_DESPAWNED = 715,
+ ANIM_THOUSAND_FISTS = 716,
+ ANIM_FLY_THOUSAND_FISTS = 717,
+ ANIM_MONK_HEAL_READY_SPELL_DIRECTED = 718,
+ ANIM_FLY_MONK_HEAL_READY_SPELL_DIRECTED = 719,
+ ANIM_MONK_HEAL_READY_SPELL_OMNI = 720,
+ ANIM_FLY_MONK_HEAL_READY_SPELL_OMNI = 721,
+ ANIM_MONK_HEAL_SPELL_CAST_DIRECTED = 722,
+ ANIM_FLY_MONK_HEAL_SPELL_CAST_DIRECTED = 723,
+ ANIM_MONK_HEAL_SPELL_CAST_OMNI = 724,
+ ANIM_FLY_MONK_HEAL_SPELL_CAST_OMNI = 725,
+ ANIM_MONK_HEAL_CHANNEL_CAST_DIRECTED = 726,
+ ANIM_FLY_MONK_HEAL_CHANNEL_CAST_DIRECTED = 727,
+ ANIM_MONK_HEAL_CHANNEL_CAST_OMNI = 728,
+ ANIM_FLY_MONK_HEAL_CHANNEL_CAST_OMNI = 729,
+ ANIM_TORPEDO = 730,
+ ANIM_FLY_TORPEDO = 731,
+ ANIM_MEDITATE = 732,
+ ANIM_FLY_MEDITATE = 733,
+ ANIM_BREATH_OF_FIRE = 734,
+ ANIM_FLY_BREATH_OF_FIRE = 735,
+ ANIM_RISING_SUN_KICK = 736,
+ ANIM_FLY_RISING_SUN_KICK = 737,
+ ANIM_GROUND_KICK = 738,
+ ANIM_FLY_GROUND_KICK = 739,
+ ANIM_KICK_BACK = 740,
+ ANIM_FLY_KICK_BACK = 741,
+ ANIM_PET_BATTLE_STAND = 742,
+ ANIM_FLY_PET_BATTLE_STAND = 743,
+ ANIM_PET_BATTLE_DEATH = 744,
+ ANIM_FLY_PET_BATTLE_DEATH = 745,
+ ANIM_PET_BATTLE_RUN = 746,
+ ANIM_FLY_PET_BATTLE_RUN = 747,
+ ANIM_PET_BATTLE_WOUND = 748,
+ ANIM_FLY_PET_BATTLE_WOUND = 749,
+ ANIM_PET_BATTLE_ATTACK = 750,
+ ANIM_FLY_PET_BATTLE_ATTACK = 751,
+ ANIM_PET_BATTLE_READY_SPELL = 752,
+ ANIM_FLY_PET_BATTLE_READY_SPELL = 753,
+ ANIM_PET_BATTLE_SPELL_CAST = 754,
+ ANIM_FLY_PET_BATTLE_SPELL_CAST = 755,
+ ANIM_PET_BATTLE_CUSTOM0 = 756,
+ ANIM_FLY_PET_BATTLE_CUSTOM0 = 757,
+ ANIM_PET_BATTLE_CUSTOM1 = 758,
+ ANIM_FLY_PET_BATTLE_CUSTOM1 = 759,
+ ANIM_PET_BATTLE_CUSTOM2 = 760,
+ ANIM_FLY_PET_BATTLE_CUSTOM2 = 761,
+ ANIM_PET_BATTLE_CUSTOM3 = 762,
+ ANIM_FLY_PET_BATTLE_CUSTOM3 = 763,
+ ANIM_PET_BATTLE_VICTORY = 764,
+ ANIM_FLY_PET_BATTLE_VICTORY = 765,
+ ANIM_PET_BATTLE_LOSS = 766,
+ ANIM_FLY_PET_BATTLE_LOSS = 767,
+ ANIM_PET_BATTLE_STUN = 768,
+ ANIM_FLY_PET_BATTLE_STUN = 769,
+ ANIM_PET_BATTLE_DEAD = 770,
+ ANIM_FLY_PET_BATTLE_DEAD = 771,
+ ANIM_PET_BATTLE_FREEZE = 772,
+ ANIM_FLY_PET_BATTLE_FREEZE = 773,
+ ANIM_MONK_OFFENSE_ATTACK_WEAPON = 774,
+ ANIM_FLY_MONK_OFFENSE_ATTACK_WEAPON = 775,
+ ANIM_BAR_TEND_EMOTE_WAVE = 776,
+ ANIM_FLY_BAR_TEND_EMOTE_WAVE = 777,
+ ANIM_BAR_SERVER_EMOTE_TALK = 778,
+ ANIM_FLY_BAR_SERVER_EMOTE_TALK = 779,
+ ANIM_BAR_SERVER_EMOTE_WAVE = 780,
+ ANIM_FLY_BAR_SERVER_EMOTE_WAVE = 781,
+ ANIM_BAR_SERVER_POUR_DRINKS = 782,
+ ANIM_FLY_BAR_SERVER_POUR_DRINKS = 783,
+ ANIM_BAR_SERVER_PICKUP = 784,
+ ANIM_FLY_BAR_SERVER_PICKUP = 785,
+ ANIM_BAR_SERVER_PUT_DOWN = 786,
+ ANIM_FLY_BAR_SERVER_PUT_DOWN = 787,
+ ANIM_BAR_SWEEP_STAND = 788,
+ ANIM_FLY_BAR_SWEEP_STAND = 789,
+ ANIM_BAR_PATRON_SIT = 790,
+ ANIM_FLY_BAR_PATRON_SIT = 791,
+ ANIM_BAR_PATRON_SIT_EMOTE_TALK = 792,
+ ANIM_FLY_BAR_PATRON_SIT_EMOTE_TALK = 793,
+ ANIM_BAR_PATRON_STAND = 794,
+ ANIM_FLY_BAR_PATRON_STAND = 795,
+ ANIM_BAR_PATRON_STAND_EMOTE_TALK = 796,
+ ANIM_FLY_BAR_PATRON_STAND_EMOTE_TALK = 797,
+ ANIM_BAR_PATRON_STAND_EMOTE_POINT = 798,
+ ANIM_FLY_BAR_PATRON_STAND_EMOTE_POINT = 799,
+ ANIM_CARRION_SWARM = 800,
+ ANIM_FLY_CARRION_SWARM = 801,
+ ANIM_WHEEL_LOOP = 802,
+ ANIM_FLY_WHEEL_LOOP = 803,
+ ANIM_STAND_CHARACTER_CREATE = 804,
+ ANIM_FLY_STAND_CHARACTER_CREATE = 805,
+ ANIM_MOUNT_CHOPPER = 806,
+ ANIM_FLY_MOUNT_CHOPPER = 807,
+ ANIM_FACE_POSE = 808,
+ ANIM_FLY_FACE_POSE = 809,
+ ANIM_WARRIOR_COLOSSUS_SMASH = 810,
+ ANIM_FLY_WARRIOR_COLOSSUS_SMASH = 811,
+ ANIM_WARRIOR_MORTAL_STRIKE = 812,
+ ANIM_FLY_WARRIOR_MORTAL_STRIKE = 813,
+ ANIM_WARRIOR_WHIRLWIND = 814,
+ ANIM_FLY_WARRIOR_WHIRLWIND = 815,
+ ANIM_WARRIOR_CHARGE = 816,
+ ANIM_FLY_WARRIOR_CHARGE = 817,
+ ANIM_WARRIOR_CHARGE_START = 818,
+ ANIM_FLY_WARRIOR_CHARGE_START = 819,
+ ANIM_WARRIOR_CHARGE_END = 820,
+ ANIM_FLY_WARRIOR_CHARGE_END = 821
};
enum LockKeyType
@@ -2878,6 +3283,7 @@ enum LockKeyType
LOCK_KEY_SKILL = 2
};
+// LockType.dbc (6.0.2.18988)
enum LockType
{
LOCKTYPE_PICKLOCK = 1,
@@ -2900,20 +3306,24 @@ enum LockType
LOCKTYPE_SLOW_CLOSE = 18,
LOCKTYPE_FISHING = 19,
LOCKTYPE_INSCRIPTION = 20,
- LOCKTYPE_OPEN_FROM_VEHICLE = 21
+ LOCKTYPE_OPEN_FROM_VEHICLE = 21,
+ LOCKTYPE_ARCHAELOGY = 22,
+ LOCKTYPE_PVP_OPEN_FAST = 23,
+ LOCKTYPE_LUMBER_MILL = 28
};
-enum TrainerType // this is important type for npcs!
+// this is important type for npcs!
+enum TrainerType
{
TRAINER_TYPE_CLASS = 0,
- TRAINER_TYPE_MOUNTS = 1, // on blizz it's 2
+ TRAINER_TYPE_MOUNTS = 1, // on blizz it's 2
TRAINER_TYPE_TRADESKILLS = 2,
TRAINER_TYPE_PETS = 3
};
#define MAX_TRAINER_TYPE 4
-// CreatureType.dbc
+// CreatureType.dbc (6.0.2.18988)
enum CreatureType
{
CREATURE_TYPE_BEAST = 1,
@@ -2928,14 +3338,16 @@ enum CreatureType
CREATURE_TYPE_NOT_SPECIFIED = 10,
CREATURE_TYPE_TOTEM = 11,
CREATURE_TYPE_NON_COMBAT_PET = 12,
- CREATURE_TYPE_GAS_CLOUD = 13
+ CREATURE_TYPE_GAS_CLOUD = 13,
+ CREATURE_TYPE_WILD_PET = 14,
+ CREATURE_TYPE_ABERRATION = 15
};
uint32 const CREATURE_TYPEMASK_DEMON_OR_UNDEAD = (1 << (CREATURE_TYPE_DEMON-1)) | (1 << (CREATURE_TYPE_UNDEAD-1));
uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD = (1 << (CREATURE_TYPE_HUMANOID-1)) | (1 << (CREATURE_TYPE_UNDEAD-1));
uint32 const CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL = (1 << (CREATURE_TYPE_MECHANICAL-1)) | (1 << (CREATURE_TYPE_ELEMENTAL-1));
-// CreatureFamily.dbc
+// CreatureFamily.dbc (6.0.2.18988)
enum CreatureFamily
{
CREATURE_FAMILY_WOLF = 1,
@@ -2947,7 +3359,7 @@ enum CreatureFamily
CREATURE_FAMILY_CARRION_BIRD = 7,
CREATURE_FAMILY_CRAB = 8,
CREATURE_FAMILY_GORILLA = 9,
- CREATURE_FAMILY_HORSE_CUSTOM = 10, // Does not exist in DBC but used for horse like beasts in DB
+ CREATURE_FAMILY_HORSE_CUSTOM = 10, // Does not exist in DBC but used for horse like beasts in DB
CREATURE_FAMILY_RAPTOR = 11,
CREATURE_FAMILY_TALLSTRIDER = 12,
CREATURE_FAMILY_FELHUNTER = 15,
@@ -2987,57 +3399,79 @@ enum CreatureFamily
CREATURE_FAMILY_SHALE_SPIDER = 55,
CREATURE_FAMILY_ZOMBIE = 56,
CREATURE_FAMILY_BEETLE_OLD = 57,
- CREATURE_FAMILY_SILITHID_2 = 59,
- CREATURE_FAMILY_WASP_2 = 66,
+ CREATURE_FAMILY_SILITHID2 = 59,
+ CREATURE_FAMILY_WASP2 = 66,
CREATURE_FAMILY_HYDRA = 68,
+ CREATURE_FAMILY_FELIMP = 100,
+ CREATURE_FAMILY_VOIDLORD = 101,
+ CREATURE_FAMILY_SHIVARA = 102,
+ CREATURE_FAMILY_OBSERVER = 103,
+ CREATURE_FAMILY_WRATHGUARD = 104,
+ CREATURE_FAMILY_INFERNAL = 108,
+ CREATURE_FAMILY_FIREELEMENTAL = 116,
+ CREATURE_FAMILY_EARTHELEMENTAL = 117,
+ CREATURE_FAMILY_CRANE = 125,
+ CREATURE_FAMILY_WATERSTRIDER = 126,
+ CREATURE_FAMILY_PORCUPINE = 127,
+ CREATURE_FAMILY_QUILEN = 128,
+ CREATURE_FAMILY_GOAT = 129,
+ CREATURE_FAMILY_BASILISK = 130,
+ CREATURE_FAMILY_DIREHORN = 138,
+ CREATURE_FAMILY_STORMELEMENTAL = 145,
+ CREATURE_FAMILY_MTWATERELEMENTAL = 146,
+ CREATURE_FAMILY_TORRORGUARD = 147,
+ CREATURE_FAMILY_ABYSSAL = 148,
+ CREATURE_FAMILY_RYLAK = 149,
+ CREATURE_FAMILY_RIVERBEAST = 150,
+ CREATURE_FAMILY_STAG = 151
};
enum CreatureTypeFlags
{
- CREATURE_TYPEFLAGS_TAMEABLE = 0x00000001, // Tameable by any hunter
- CREATURE_TYPEFLAGS_GHOST = 0x00000002, // Creature are also visible for not alive player. Allow gossip interaction if npcflag allow?
- CREATURE_TYPEFLAGS_BOSS = 0x00000004,
- CREATURE_TYPEFLAGS_UNK3 = 0x00000008,
- CREATURE_TYPEFLAGS_UNK4 = 0x00000010,
- CREATURE_TYPEFLAGS_UNK5 = 0x00000020,
- CREATURE_TYPEFLAGS_UNK6 = 0x00000040,
- CREATURE_TYPEFLAGS_DEAD_INTERACT = 0x00000080, // Player can interact with the creature if its dead (not player dead)
- CREATURE_TYPEFLAGS_HERBLOOT = 0x00000100, // Can be looted by herbalist
- CREATURE_TYPEFLAGS_MININGLOOT = 0x00000200, // Can be looted by miner
- CREATURE_TYPEFLAGS_DONT_LOG_DEATH = 0x00000400, // Death event will not show up in combat log
- CREATURE_TYPEFLAGS_MOUNTED_COMBAT = 0x00000800, // Creature can remain mounted when entering combat
- CREATURE_TYPEFLAGS_AID_PLAYERS = 0x00001000, // ? Can aid any player in combat if in range?
- CREATURE_TYPEFLAGS_UNK13 = 0x00002000,
- CREATURE_TYPEFLAGS_UNK14 = 0x00004000, // ? Possibly not in use
- CREATURE_TYPEFLAGS_ENGINEERLOOT = 0x00008000, // Can be looted by engineer
- CREATURE_TYPEFLAGS_EXOTIC = 0x00010000, // Can be tamed by hunter as exotic pet
- CREATURE_TYPEFLAGS_UNK17 = 0x00020000, // ? Related to vehicles/pvp?
- CREATURE_TYPEFLAGS_UNK18 = 0x00040000, // ? Related to vehicle/siege weapons?
- CREATURE_TYPEFLAGS_PROJECTILE_COLLISION = 0x00080000, // Projectiles can collide with this creature - interacts with TARGET_DEST_TRAJ
- CREATURE_TYPEFLAGS_UNK20 = 0x00100000,
- CREATURE_TYPEFLAGS_UNK21 = 0x00200000,
- CREATURE_TYPEFLAGS_UNK22 = 0x00400000,
- CREATURE_TYPEFLAGS_UNK23 = 0x00800000, // ? First seen in 3.2.2. Related to banner/backpack of creature/companion?
- CREATURE_TYPEFLAGS_UNK24 = 0x01000000,
- CREATURE_TYPEFLAGS_UNK25 = 0x02000000,
- CREATURE_TYPEFLAGS_PARTY_MEMBER = 0x04000000, //! Creature can be targeted by spells that require target to be in caster's party/raid
- CREATURE_TYPEFLAGS_UNK27 = 0x08000000,
- CREATURE_TYPEFLAGS_UNK28 = 0x10000000,
- CREATURE_TYPEFLAGS_UNK29 = 0x20000000,
- CREATURE_TYPEFLAGS_UNK30 = 0x40000000,
- CREATURE_TYPEFLAGS_UNK31 = 0x80000000
+ CREATURE_TYPEFLAGS_TAMEABLE = 0x00000001, // Tameable by any hunter
+ CREATURE_TYPEFLAGS_GHOST = 0x00000002, // Creature are also visible for not alive player. Allow gossip interaction if npcflag allow?
+ CREATURE_TYPEFLAGS_BOSS = 0x00000004,
+ CREATURE_TYPEFLAGS_DO_NOT_PLAY_WOUND_PARRY_ANIMATION = 0x00000008,
+ CREATURE_TYPEFLAGS_HIDE_FACTION_TOOLTIP = 0x00000010,
+ CREATURE_TYPEFLAGS_UNK5 = 0x00000020,
+ CREATURE_TYPEFLAGS_SPELL_ATTACKABLE = 0x00000040,
+ CREATURE_TYPEFLAGS_DEAD_INTERACT = 0x00000080, // Player can interact with the creature if its dead (not player dead)
+ CREATURE_TYPEFLAGS_HERBLOOT = 0x00000100, // Can be looted by herbalist
+ CREATURE_TYPEFLAGS_MININGLOOT = 0x00000200, // Can be looted by miner
+ CREATURE_TYPEFLAGS_DONT_LOG_DEATH = 0x00000400, // Death event will not show up in combat log
+ CREATURE_TYPEFLAGS_MOUNTED_COMBAT = 0x00000800, // Creature can remain mounted when entering combat
+ CREATURE_TYPEFLAGS_CAN_ASSIST = 0x00001000,
+ CREATURE_TYPEFLAGS_IS_PET_BAR_USED = 0x00002000,
+ CREATURE_TYPEFLAGS_MASK_UID = 0x00004000,
+ CREATURE_TYPEFLAGS_ENGINEERLOOT = 0x00008000, // Can be looted by engineer
+ CREATURE_TYPEFLAGS_EXOTIC = 0x00010000, // Can be tamed by hunter as exotic pet
+ CREATURE_TYPEFLAGS_USE_DEFAULT_COLLISION_BOX = 0x00020000,
+ CREATURE_TYPEFLAGS_IS_SIEGE_WEAPON = 0x00040000,
+ CREATURE_TYPEFLAGS_PROJECTILE_COLLISION = 0x00080000, // Projectiles can collide with this creature - interacts with TARGET_DEST_TRAJ
+ CREATURE_TYPEFLAGS_HIDE_NAMEPLATE = 0x00100000,
+ CREATURE_TYPEFLAGS_DO_NOT_PLAY_MOUNTED_ANIMATIONS = 0x00200000,
+ CREATURE_TYPEFLAGS_IS_LINK_ALL = 0x00400000,
+ CREATURE_TYPEFLAGS_INTERACT_ONLY_WITH_CREATOR = 0x00800000,
+ CREATURE_TYPEFLAGS_DO_NOT_PLAY_UNIT_EVENT_SOUNDS = 0x01000000,
+ CREATURE_TYPEFLAGS_HAS_NO_SHADOW_BLOB = 0x02000000,
+ CREATURE_TYPEFLAGS_TREAT_AS_RAID_UNIT = 0x04000000, //! Creature can be targeted by spells that require target to be in caster's party/raid
+ CREATURE_TYPEFLAGS_FORCE_GOSSIP = 0x08000000,
+ CREATURE_TYPEFLAGS_DO_NOT_SHEATHE = 0x10000000,
+ CREATURE_TYPEFLAGS_DO_NOT_TARGET_ON_INTERACTION = 0x20000000,
+ CREATURE_TYPEFLAGS_DO_NOT_RENDER_OBJECT_NAME = 0x40000000,
+ CREATURE_TYPEFLAGS_UNIT_IS_QUEST_BOSS = 0x80000000 // Not verified
};
enum CreatureTypeFlags2
{
- CREATURE_TYPEFLAGS_2_UNK1 = 0x00000001,
- CREATURE_TYPEFLAGS_2_UNK2 = 0x00000002,
- CREATURE_TYPEFLAGS_2_UNK3 = 0x00000004,
- CREATURE_TYPEFLAGS_2_UNK4 = 0x00000008,
- CREATURE_TYPEFLAGS_2_UNK5 = 0x00000010,
- CREATURE_TYPEFLAGS_2_UNK6 = 0x00000020,
- CREATURE_TYPEFLAGS_2_UNK7 = 0x00000040,
- CREATURE_TYPEFLAGS_2_UNK8 = 0x00000080
+ CREATURE_TYPEFLAGS_2_UNK1 = 0x00000001,
+ CREATURE_TYPEFLAGS_2_UNK2 = 0x00000002,
+ CREATURE_TYPEFLAGS_2_UNK3 = 0x00000004,
+ CREATURE_TYPEFLAGS_2_UNK4 = 0x00000008,
+ CREATURE_TYPEFLAGS_2_UNK5 = 0x00000010,
+ CREATURE_TYPEFLAGS_2_UNK6 = 0x00000020,
+ CREATURE_TYPEFLAGS_2_UNK7 = 0x00000040,
+ CREATURE_TYPEFLAGS_2_UNK8 = 0x00000080
};
enum CreatureEliteType
@@ -3047,10 +3481,11 @@ enum CreatureEliteType
CREATURE_ELITE_RAREELITE = 2,
CREATURE_ELITE_WORLDBOSS = 3,
CREATURE_ELITE_RARE = 4,
- CREATURE_UNKNOWN = 5 // found in 2.2.3 for 2 mobs
+ CREATURE_UNKNOWN = 5, // found in 2.2.3 for 2 mobs
+ CREATURE_WEAK = 6
};
-// values based at Holidays.dbc
+// Holidays.dbc (6.0)
enum HolidayIds
{
HOLIDAY_NONE = 0,
@@ -3087,14 +3522,30 @@ enum HolidayIds
HOLIDAY_RATED_BG_25_VS_25 = 443,
HOLIDAY_ANNIVERSARY_7_YEARS = 467,
HOLIDAY_DARKMOON_FAIRE_TEROKKAR = 479,
- HOLIDAY_ANNIVERSARY_8_YEARS = 484
+ HOLIDAY_ANNIVERSARY_8_YEARS = 484,
+ HOLIDAY_CALL_TO_ARMS_SM = 488,
+ HOLIDAY_CALL_TO_ARMS_TK = 489,
+ //HOLIDAY_CALL_TO_ARMS_AV = 490,
+ //HOLIDAY_CALL_TO_ARMS_AB = 491,
+ //HOLIDAY_CALL_TO_ARMS_EY = 492,
+ //HOLIDAY_CALL_TO_ARMS_AV = 493,
+ //HOLIDAY_CALL_TO_ARMS_SM = 494,
+ //HOLIDAY_CALL_TO_ARMS_SA = 495,
+ //HOLIDAY_CALL_TO_ARMS_TK = 496,
+ //HOLIDAY_CALL_TO_ARMS_BFG = 497,
+ //HOLIDAY_CALL_TO_ARMS_TP = 498,
+ //HOLIDAY_CALL_TO_ARMS_WS = 499,
+ HOLIDAY_ANNIVERSARY_9_YEARS = 509,
+ HOLIDAY_ANNIVERSARY_10_YEARS = 514,
+ HOLIDAY_CALL_TO_ARMS_DG = 515,
+ //HOLIDAY_CALL_TO_ARMS_DG = 516
};
-// values based at QuestInfo.dbc
+// QuestInfo.dbc (6.0.2.18988)
enum QuestTypes
{
- QUEST_TYPE_ELITE = 1,
- QUEST_TYPE_LIFE = 21,
+ QUEST_TYPE_ELITE = 1, // Group
+ QUEST_TYPE_LIFE = 21, // Class
QUEST_TYPE_PVP = 41,
QUEST_TYPE_RAID = 62,
QUEST_TYPE_DUNGEON = 81,
@@ -3103,58 +3554,75 @@ enum QuestTypes
QUEST_TYPE_ESCORT = 84,
QUEST_TYPE_HEROIC = 85,
QUEST_TYPE_RAID_10 = 88,
- QUEST_TYPE_RAID_25 = 89
+ QUEST_TYPE_RAID_25 = 89,
+ QUEST_TYPE_SCENARIO = 98,
+ QUEST_TYPE_ACCOUNT = 102,
+ QUEST_TYPE_SIDE_QUEST = 104
};
-// values based at QuestSort.dbc
+// QuestSort.dbc (6.0)
enum QuestSort
{
- QUEST_SORT_EPIC = 1,
- QUEST_SORT_WAILING_CAVERNS_OLD = 21,
- QUEST_SORT_SEASONAL = 22,
- QUEST_SORT_UNDERCITY_OLD = 23,
- QUEST_SORT_HERBALISM = 24,
- QUEST_SORT_BATTLEGROUNDS = 25,
- QUEST_SORT_ULDAMN_OLD = 41,
- QUEST_SORT_WARLOCK = 61,
- QUEST_SORT_WARRIOR = 81,
- QUEST_SORT_SHAMAN = 82,
- QUEST_SORT_FISHING = 101,
- QUEST_SORT_BLACKSMITHING = 121,
- QUEST_SORT_PALADIN = 141,
- QUEST_SORT_MAGE = 161,
- QUEST_SORT_ROGUE = 162,
- QUEST_SORT_ALCHEMY = 181,
- QUEST_SORT_LEATHERWORKING = 182,
- QUEST_SORT_ENGINEERING = 201,
- QUEST_SORT_TREASURE_MAP = 221,
- QUEST_SORT_SUNKEN_TEMPLE_OLD = 241,
- QUEST_SORT_HUNTER = 261,
- QUEST_SORT_PRIEST = 262,
- QUEST_SORT_DRUID = 263,
- QUEST_SORT_TAILORING = 264,
- QUEST_SORT_SPECIAL = 284,
- QUEST_SORT_COOKING = 304,
- QUEST_SORT_FIRST_AID = 324,
- QUEST_SORT_LEGENDARY = 344,
- QUEST_SORT_DARKMOON_FAIRE = 364,
- QUEST_SORT_AHN_QIRAJ_WAR = 365,
- QUEST_SORT_LUNAR_FESTIVAL = 366,
- QUEST_SORT_REPUTATION = 367,
- QUEST_SORT_INVASION = 368,
- QUEST_SORT_MIDSUMMER = 369,
- QUEST_SORT_BREWFEST = 370,
- QUEST_SORT_INSCRIPTION = 371,
- QUEST_SORT_DEATH_KNIGHT = 372,
- QUEST_SORT_JEWELCRAFTING = 373,
- QUEST_SORT_NOBLEGARDEN = 374,
- QUEST_SORT_PILGRIMS_BOUNTY = 375,
- QUEST_SORT_LOVE_IS_IN_THE_AIR = 376,
- QUEST_SORT_ARCHAEOLOGY = 377,
- QUEST_SORT_CHILDRENS_WEEK = 378,
- QUEST_SORT_FIRELANDS_INVASION = 379,
- QUEST_SORT_ZANDALARI = 380,
- QUEST_SORT_ELEMENTAL_BONDS = 381
+ QUEST_SORT_EPIC = 1,
+ QUEST_SORT_HALLOWS_END = 21,
+ QUEST_SORT_SEASONAL = 22,
+ QUEST_SORT_CATACLYSM = 23,
+ QUEST_SORT_HERBALISM = 24,
+ QUEST_SORT_BATTLEGROUNDS = 25,
+ QUEST_SORT_DAY_OF_THE_DEAD = 41,
+ QUEST_SORT_WARLOCK = 61,
+ QUEST_SORT_WARRIOR = 81,
+ QUEST_SORT_SHAMAN = 82,
+ QUEST_SORT_FISHING = 101,
+ QUEST_SORT_BLACKSMITHING = 121,
+ QUEST_SORT_PALADIN = 141,
+ QUEST_SORT_MAGE = 161,
+ QUEST_SORT_ROGUE = 162,
+ QUEST_SORT_ALCHEMY = 181,
+ QUEST_SORT_LEATHERWORKING = 182,
+ QUEST_SORT_ENGINEERING = 201,
+ QUEST_SORT_TREASURE_MAP = 221,
+ QUEST_SORT_TOURNAMENT = 241,
+ QUEST_SORT_HUNTER = 261,
+ QUEST_SORT_PRIEST = 262,
+ QUEST_SORT_DRUID = 263,
+ QUEST_SORT_TAILORING = 264,
+ QUEST_SORT_SPECIAL = 284,
+ QUEST_SORT_COOKING = 304,
+ QUEST_SORT_FIRST_AID = 324,
+ QUEST_SORT_LEGENDARY = 344,
+ QUEST_SORT_DARKMOON_FAIRE = 364,
+ QUEST_SORT_AHN_QIRAJ_WAR = 365,
+ QUEST_SORT_LUNAR_FESTIVAL = 366,
+ QUEST_SORT_REPUTATION = 367,
+ QUEST_SORT_INVASION = 368,
+ QUEST_SORT_MIDSUMMER = 369,
+ QUEST_SORT_BREWFEST = 370,
+ QUEST_SORT_INSCRIPTION = 371,
+ QUEST_SORT_DEATH_KNIGHT = 372,
+ QUEST_SORT_JEWELCRAFTING = 373,
+ QUEST_SORT_NOBLEGARDEN = 374,
+ QUEST_SORT_PILGRIMS_BOUNTY = 375,
+ QUEST_SORT_LOVE_IS_IN_THE_AIR = 376,
+ QUEST_SORT_ARCHAEOLOGY = 377,
+ QUEST_SORT_CHILDRENS_WEEK = 378,
+ QUEST_SORT_FIRELANDS_INVASION = 379,
+ QUEST_SORT_THE_ZANDALARI = 380,
+ QUEST_SORT_ELEMENTAL_BONDS = 381,
+ QUEST_SORT_PANDAREN_BREWMASTER = 391,
+ QUEST_SORT_SCENARIO = 392,
+ QUEST_SORT_BATTLE_PETS = 394,
+ QUEST_SORT_MONK = 395,
+ QUEST_SORT_LANDFALL = 396,
+ QUEST_SORT_PANDAREN_CAMPAIGN = 397,
+ QUEST_SORT_RIDING = 398,
+ QUEST_SORT_BRAWLERS_GUILD = 399,
+ QUEST_SORT_PROVING_GROUNDS = 400,
+ QUEST_SORT_GARRISON_CAMPAIGN = 401,
+ QUEST_SORT_ASSAULT_ON_THE_DARK_PORTAL = 402,
+ QUEST_SORT_GARRISON_SUPPORT = 403,
+ QUEST_SORT_LOGGING = 404,
+ QUEST_SORT_PICKPOCKETING = 405
};
inline uint8 ClassByQuestSort(int32 QuestSort)
@@ -3175,187 +3643,233 @@ inline uint8 ClassByQuestSort(int32 QuestSort)
return 0;
}
+// SkillLine.dbc (6.0)
enum SkillType
{
- SKILL_NONE = 0,
-
- SKILL_FROST = 6,
- SKILL_FIRE = 8,
- SKILL_ARMS = 26,
- SKILL_COMBAT = 38,
- SKILL_SUBTLETY = 39,
- SKILL_SWORDS = 43,
- SKILL_AXES = 44,
- SKILL_BOWS = 45,
- SKILL_GUNS = 46,
- SKILL_BEAST_MASTERY = 50,
- SKILL_SURVIVAL = 51,
- SKILL_MACES = 54,
- SKILL_2H_SWORDS = 55,
- SKILL_HOLY = 56,
- SKILL_SHADOW = 78,
- SKILL_DEFENSE = 95,
- SKILL_LANG_COMMON = 98,
- SKILL_RACIAL_DWARVEN = 101,
- SKILL_LANG_ORCISH = 109,
- SKILL_LANG_DWARVEN = 111,
- SKILL_LANG_DARNASSIAN = 113,
- SKILL_LANG_TAURAHE = 115,
- SKILL_DUAL_WIELD = 118,
- SKILL_RACIAL_TAUREN = 124,
- SKILL_ORC_RACIAL = 125,
- SKILL_RACIAL_NIGHT_ELF = 126,
- SKILL_FIRST_AID = 129,
- SKILL_FERAL_COMBAT = 134,
- SKILL_STAVES = 136,
- SKILL_LANG_THALASSIAN = 137,
- SKILL_LANG_DRACONIC = 138,
- SKILL_LANG_DEMON_TONGUE = 139,
- SKILL_LANG_TITAN = 140,
- SKILL_LANG_OLD_TONGUE = 141,
- SKILL_SURVIVAL2 = 142,
- SKILL_RIDING_HORSE = 148,
- SKILL_RIDING_WOLF = 149,
- SKILL_RIDING_TIGER = 150,
- SKILL_RIDING_RAM = 152,
- SKILL_SWIMING = 155,
- SKILL_2H_MACES = 160,
- SKILL_UNARMED = 162,
- SKILL_MARKSMANSHIP = 163,
- SKILL_BLACKSMITHING = 164,
- SKILL_LEATHERWORKING = 165,
- SKILL_ALCHEMY = 171,
- SKILL_2H_AXES = 172,
- SKILL_DAGGERS = 173,
- SKILL_THROWN = 176,
- SKILL_HERBALISM = 182,
- SKILL_GENERIC_DND = 183,
- SKILL_RETRIBUTION = 184,
- SKILL_COOKING = 185,
- SKILL_MINING = 186,
- SKILL_PET_IMP = 188,
- SKILL_PET_FELHUNTER = 189,
- SKILL_TAILORING = 197,
- SKILL_ENGINEERING = 202,
- SKILL_PET_SPIDER = 203,
- SKILL_PET_VOIDWALKER = 204,
- SKILL_PET_SUCCUBUS = 205,
- SKILL_PET_INFERNAL = 206,
- SKILL_PET_DOOMGUARD = 207,
- SKILL_PET_WOLF = 208,
- SKILL_PET_CAT = 209,
- SKILL_PET_BEAR = 210,
- SKILL_PET_BOAR = 211,
- SKILL_PET_CROCILISK = 212,
- SKILL_PET_CARRION_BIRD = 213,
- SKILL_PET_CRAB = 214,
- SKILL_PET_GORILLA = 215,
- SKILL_PET_RAPTOR = 217,
- SKILL_PET_TALLSTRIDER = 218,
- SKILL_RACIAL_UNDED = 220,
- SKILL_CROSSBOWS = 226,
- SKILL_WANDS = 228,
- SKILL_POLEARMS = 229,
- SKILL_PET_SCORPID = 236,
- SKILL_ARCANE = 237,
- SKILL_PET_TURTLE = 251,
- SKILL_ASSASSINATION = 253,
- SKILL_FURY = 256,
- SKILL_PROTECTION = 257,
- SKILL_PROTECTION2 = 267,
- SKILL_PET_TALENTS = 270,
- SKILL_PLATE_MAIL = 293,
- SKILL_LANG_GNOMISH = 313,
- SKILL_LANG_TROLL = 315,
- SKILL_ENCHANTING = 333,
- SKILL_DEMONOLOGY = 354,
- SKILL_AFFLICTION = 355,
- SKILL_FISHING = 356,
- SKILL_ENHANCEMENT = 373,
- SKILL_RESTORATION = 374,
- SKILL_ELEMENTAL_COMBAT = 375,
- SKILL_SKINNING = 393,
- SKILL_MAIL = 413,
- SKILL_LEATHER = 414,
- SKILL_CLOTH = 415,
- SKILL_SHIELD = 433,
- SKILL_FIST_WEAPONS = 473,
- SKILL_RIDING_RAPTOR = 533,
- SKILL_RIDING_MECHANOSTRIDER = 553,
- SKILL_RIDING_UNDEAD_HORSE = 554,
- SKILL_RESTORATION2 = 573,
- SKILL_BALANCE = 574,
- SKILL_DESTRUCTION = 593,
- SKILL_HOLY2 = 594,
- SKILL_DISCIPLINE = 613,
- SKILL_LOCKPICKING = 633,
- SKILL_PET_BAT = 653,
- SKILL_PET_HYENA = 654,
- SKILL_PET_BIRD_OF_PREY = 655,
- SKILL_PET_WIND_SERPENT = 656,
- SKILL_LANG_GUTTERSPEAK = 673,
- SKILL_RIDING_KODO = 713,
- SKILL_RACIAL_TROLL = 733,
- SKILL_RACIAL_GNOME = 753,
- SKILL_RACIAL_HUMAN = 754,
- SKILL_JEWELCRAFTING = 755,
- SKILL_RACIAL_BLOODELF = 756,
- SKILL_PET_EVENT_RC = 758, // SkillCategory = -1
- SKILL_LANG_DRAENEI = 759,
- SKILL_RACIAL_DRAENEI = 760,
- SKILL_PET_FELGUARD = 761,
- SKILL_RIDING = 762,
- SKILL_PET_DRAGONHAWK = 763,
- SKILL_PET_NETHER_RAY = 764,
- SKILL_PET_SPOREBAT = 765,
- SKILL_PET_WARP_STALKER = 766,
- SKILL_PET_RAVAGER = 767,
- SKILL_PET_SERPENT = 768,
- SKILL_INTERNAL = 769,
- SKILL_DK_BLOOD = 770,
- SKILL_DK_FROST = 771,
- SKILL_DK_UNHOLY = 772,
- SKILL_INSCRIPTION = 773,
- SKILL_PET_MOTH = 775,
- SKILL_RUNEFORGING = 776,
- SKILL_MOUNTS = 777,
- SKILL_COMPANIONS = 778,
- SKILL_PET_EXOTIC_CHIMAERA = 780,
- SKILL_PET_EXOTIC_DEVILSAUR = 781,
- SKILL_PET_GHOUL = 782,
- SKILL_PET_EXOTIC_SILITHID = 783,
- SKILL_PET_EXOTIC_WORM = 784,
- SKILL_PET_WASP = 785,
- SKILL_PET_EXOTIC_RHINO = 786,
- SKILL_PET_EXOTIC_CORE_HOUND = 787,
- SKILL_PET_EXOTIC_SPIRIT_BEAST = 788,
- SKILL_RACIAL_WORGEN = 789,
- SKILL_RACIAL_GOBLIN = 790,
- SKILL_LANG_WORGEN = 791,
- SKILL_LANG_GOBLIN = 792,
- SKILL_ARCHAEOLOGY = 794,
- SKILL_GENERAL_HUNTER = 795,
- SKILL_GENERAL_DEATH_KNIGHT = 796,
- SKILL_GENERAL_ROGUE = 797,
- SKILL_GENERAL_DRUID = 798,
- SKILL_GENERAL_MAGE = 799,
- SKILL_GENERAL_PALADIN = 800,
- SKILL_GENERAL_SHAMAN = 801,
- SKILL_GENERAL_WARLOCK = 802,
- SKILL_GENERAL_WARRIOR = 803,
- SKILL_GENERAL_PRIEST = 804,
- SKILL_PET_WATER_ELEMENTAL = 805,
- SKILL_PET_FOX = 808,
- SKILL_ALL_GLYPHS = 810,
- SKILL_PET_DOG = 811,
- SKILL_PET_MONKEY = 815,
- SKILL_PET_SHALE_SPIDER = 817,
- SKILL_PET_BEETLE = 818,
- SKILL_ALL_GUILD_PERKS = 821,
- SKILL_PET_HYDRA = 824
+ SKILL_NONE = 0,
+
+ SKILL_FROST = 6,
+ SKILL_FIRE = 8,
+ SKILL_ARMS = 26,
+ SKILL_COMBAT = 38,
+ SKILL_SUBTLETY = 39,
+ SKILL_SWORDS = 43,
+ SKILL_AXES = 44,
+ SKILL_BOWS = 45,
+ SKILL_GUNS = 46,
+ SKILL_BEAST_MASTERY = 50,
+ SKILL_SURVIVAL = 51,
+ SKILL_MACES = 54,
+ SKILL_2H_SWORDS = 55,
+ SKILL_HOLY = 56,
+ SKILL_SHADOW = 78,
+ SKILL_DEFENSE = 95,
+ SKILL_LANG_COMMON = 98,
+ SKILL_RACIAL_DWARVEN = 101,
+ SKILL_LANG_ORCISH = 109,
+ SKILL_LANG_DWARVEN = 111,
+ SKILL_LANG_DARNASSIAN = 113,
+ SKILL_LANG_TAURAHE = 115,
+ SKILL_DUAL_WIELD = 118,
+ SKILL_RACIAL_TAUREN = 124,
+ SKILL_ORC_RACIAL = 125,
+ SKILL_RACIAL_NIGHT_ELF = 126,
+ SKILL_FIRST_AID = 129,
+ SKILL_FERAL_COMBAT = 134,
+ SKILL_STAVES = 136,
+ SKILL_LANG_THALASSIAN = 137,
+ SKILL_LANG_DRACONIC = 138,
+ SKILL_LANG_DEMON_TONGUE = 139,
+ SKILL_LANG_TITAN = 140,
+ SKILL_LANG_OLD_TONGUE = 141,
+ SKILL_SURVIVAL2 = 142,
+ SKILL_RIDING_HORSE = 148,
+ SKILL_RIDING_WOLF = 149,
+ SKILL_RIDING_TIGER = 150,
+ SKILL_RIDING_RAM = 152,
+ SKILL_SWIMING = 155,
+ SKILL_2H_MACES = 160,
+ SKILL_UNARMED = 162,
+ SKILL_MARKSMANSHIP = 163,
+ SKILL_BLACKSMITHING = 164,
+ SKILL_LEATHERWORKING = 165,
+ SKILL_ALCHEMY = 171,
+ SKILL_2H_AXES = 172,
+ SKILL_DAGGERS = 173,
+ SKILL_THROWN = 176,
+ SKILL_HERBALISM = 182,
+ SKILL_GENERIC_DND = 183,
+ SKILL_RETRIBUTION = 184,
+ SKILL_COOKING = 185,
+ SKILL_MINING = 186,
+ SKILL_PET_IMP = 188,
+ SKILL_PET_FELHUNTER = 189,
+ SKILL_TAILORING = 197,
+ SKILL_ENGINEERING = 202,
+ SKILL_PET_SPIDER = 203,
+ SKILL_PET_VOIDWALKER = 204,
+ SKILL_PET_SUCCUBUS = 205,
+ SKILL_PET_INFERNAL = 206,
+ SKILL_PET_DOOMGUARD = 207,
+ SKILL_PET_WOLF = 208,
+ SKILL_PET_CAT = 209,
+ SKILL_PET_BEAR = 210,
+ SKILL_PET_BOAR = 211,
+ SKILL_PET_CROCILISK = 212,
+ SKILL_PET_CARRION_BIRD = 213,
+ SKILL_PET_CRAB = 214,
+ SKILL_PET_GORILLA = 215,
+ SKILL_PET_RAPTOR = 217,
+ SKILL_PET_TALLSTRIDER = 218,
+ SKILL_RACIAL_UNDED = 220,
+ SKILL_CROSSBOWS = 226,
+ SKILL_WANDS = 228,
+ SKILL_POLEARMS = 229,
+ SKILL_PET_SCORPID = 236,
+ SKILL_ARCANE = 237,
+ SKILL_PET_TURTLE = 251,
+ SKILL_ASSASSINATION = 253,
+ SKILL_FURY = 256,
+ SKILL_PROTECTION = 257,
+ SKILL_PROTECTION2 = 267,
+ SKILL_PET_TALENTS = 270,
+ SKILL_PLATE_MAIL = 293,
+ SKILL_LANG_GNOMISH = 313,
+ SKILL_LANG_TROLL = 315,
+ SKILL_ENCHANTING = 333,
+ SKILL_DEMONOLOGY = 354,
+ SKILL_AFFLICTION = 355,
+ SKILL_FISHING = 356,
+ SKILL_ENHANCEMENT = 373,
+ SKILL_RESTORATION = 374,
+ SKILL_ELEMENTAL_COMBAT = 375,
+ SKILL_SKINNING = 393,
+ SKILL_MAIL = 413,
+ SKILL_LEATHER = 414,
+ SKILL_CLOTH = 415,
+ SKILL_SHIELD = 433,
+ SKILL_FIST_WEAPONS = 473,
+ SKILL_RIDING_RAPTOR = 533,
+ SKILL_RIDING_MECHANOSTRIDER = 553,
+ SKILL_RIDING_UNDEAD_HORSE = 554,
+ SKILL_RESTORATION2 = 573,
+ SKILL_BALANCE = 574,
+ SKILL_DESTRUCTION = 593,
+ SKILL_HOLY2 = 594,
+ SKILL_DISCIPLINE = 613,
+ SKILL_LOCKPICKING = 633,
+ SKILL_PET_BAT = 653,
+ SKILL_PET_HYENA = 654,
+ SKILL_PET_BIRD_OF_PREY = 655,
+ SKILL_PET_WIND_SERPENT = 656,
+ SKILL_LANG_GUTTERSPEAK = 673,
+ SKILL_RIDING_KODO = 713,
+ SKILL_RACIAL_TROLL = 733,
+ SKILL_RACIAL_GNOME = 753,
+ SKILL_RACIAL_HUMAN = 754,
+ SKILL_JEWELCRAFTING = 755,
+ SKILL_RACIAL_BLOODELF = 756,
+ SKILL_PET_EVENT_RC = 758, // SkillCategory = -1
+ SKILL_LANG_DRAENEI = 759,
+ SKILL_RACIAL_DRAENEI = 760,
+ SKILL_PET_FELGUARD = 761,
+ SKILL_RIDING = 762,
+ SKILL_PET_DRAGONHAWK = 763,
+ SKILL_PET_NETHER_RAY = 764,
+ SKILL_PET_SPOREBAT = 765,
+ SKILL_PET_WARP_STALKER = 766,
+ SKILL_PET_RAVAGER = 767,
+ SKILL_PET_SERPENT = 768,
+ SKILL_INTERNAL = 769,
+ SKILL_DK_BLOOD = 770,
+ SKILL_DK_FROST = 771,
+ SKILL_DK_UNHOLY = 772,
+ SKILL_INSCRIPTION = 773,
+ SKILL_PET_MOTH = 775,
+ SKILL_RUNEFORGING = 776,
+ SKILL_MOUNTS = 777,
+ SKILL_COMPANIONS = 778,
+ SKILL_PET_EXOTIC_CHIMAERA = 780,
+ SKILL_PET_EXOTIC_DEVILSAUR = 781,
+ SKILL_PET_GHOUL = 782,
+ SKILL_PET_EXOTIC_SILITHID = 783,
+ SKILL_PET_EXOTIC_WORM = 784,
+ SKILL_PET_WASP = 785,
+ SKILL_PET_EXOTIC_RHINO = 786,
+ SKILL_PET_EXOTIC_CORE_HOUND = 787,
+ SKILL_PET_EXOTIC_SPIRIT_BEAST = 788,
+ SKILL_RACIAL_WORGEN = 789,
+ SKILL_RACIAL_GOBLIN = 790,
+ SKILL_LANG_WORGEN = 791,
+ SKILL_LANG_GOBLIN = 792,
+ SKILL_ARCHAEOLOGY = 794,
+ SKILL_GENERAL_HUNTER = 795,
+ SKILL_GENERAL_DEATH_KNIGHT = 796,
+ SKILL_GENERAL_ROGUE = 797,
+ SKILL_GENERAL_DRUID = 798,
+ SKILL_GENERAL_MAGE = 799,
+ SKILL_GENERAL_PALADIN = 800,
+ SKILL_GENERAL_SHAMAN = 801,
+ SKILL_GENERAL_WARLOCK = 802,
+ SKILL_GENERAL_WARRIOR = 803,
+ SKILL_GENERAL_PRIEST = 804,
+ SKILL_PET_WATER_ELEMENTAL = 805,
+ SKILL_PET_FOX = 808,
+ SKILL_ALL_GLYPHS = 810,
+ SKILL_PET_DOG = 811,
+ SKILL_PET_MONKEY = 815,
+ SKILL_PET_SHALE_SPIDER = 817,
+ SKILL_PET_BEETLE = 818,
+ SKILL_ALL_GUILD_PERKS = 821,
+ SKILL_PET_HYDRA = 824,
+ SKILL_MONK = 829,
+ SKILL_WARRIOR = 840,
+ SKILL_WARLOCK = 849,
+ SKILL_RACIAL_PANDAREN = 899,
+ SKILL_MAGE = 904,
+ SKILL_LANG_PANDAREN_NEUTRAL = 905,
+ SKILL_LANG_PANDAREN_ALLIANCE = 906,
+ SKILL_LANG_PANDAREN_HORDE = 907,
+ SKILL_ROGUE = 921,
+ SKILL_SHAMAN = 924,
+ SKILL_FEL_IMP = 927,
+ SKILL_VOIDLORD = 928,
+ SKILL_SHIVARRA = 929,
+ SKILL_OBSERVER = 930,
+ SKILL_WRATHGUARD = 931,
+ SKILL_ALL_SPECIALIZATIONS = 934,
+ SKILL_RUNEFORGING_2 = 960,
+ SKILL_PET_PRIMAL_FIRE_ELEMENTAL = 962,
+ SKILL_PET_PRIMAL_EARTH_ELEMENTAL = 963,
+ SKILL_WAY_OF_THE_GRILL = 975,
+ SKILL_WAY_OF_THE_WOK = 976,
+ SKILL_WAY_OF_THE_POT = 977,
+ SKILL_WAY_OF_THE_STEAMER = 978,
+ SKILL_WAY_OF_THE_OVEN = 979,
+ SKILL_WAY_OF_THE_BREW = 980,
+ SKILL_APPRENTICE_COOKING = 981,
+ SKILL_JOURNEYMAN_COOKBOOK = 982,
+ SKILL_PORCUPINE = 983,
+ SKILL_CRANE = 984,
+ SKILL_WATER_STRIDER = 985,
+ SKILL_PET_EXOTIC_QUILEN = 986,
+ SKILL_PET_GOAT = 987,
+ SKILL_BASILISK = 988,
+ SKILL_NO_PLAYERS = 999,
+ SKILL_DIREHORN = 1305,
+ SKILL_PET_PRIMAL_STORM_ELEMENTAL = 1748,
+ SKILL_PET_WATER_MINOR_TALENT_VERSION = 1777,
+ SKILL_PET_EXOTIC_HOOK_WASP = 1818,
+ SKILL_PET_RIVERBEAST = 1819,
+ SKILL_UNUSED = 1830,
+ SKILL_LOGGING = 1945,
+ SKILL_PET_TERRORGUARD = 1981,
+ SKILL_PET_ABYSSAL = 1982,
+ SKILL_PET_STAG = 1993,
+ SKILL_TRADING_POST = 2000
};
-#define MAX_SKILL_TYPE 825
+#define MAX_SKILL_TYPE 2000
inline SkillType SkillByLockType(LockType locktype)
{
@@ -3404,6 +3918,7 @@ enum SkillCategory
SKILL_CATEGORY_GENERIC = 12
};
+// TotemCategory.dbc (6.0.2.18988)
enum TotemCategory
{
TC_SKINNING_SKIFE_OLD = 1,
@@ -3440,6 +3955,9 @@ enum TotemCategory
TC_RUNED_TITANIUM_ROD = 190,
TC_RUNED_ELEMENTIUM_ROD = 209,
TC_HIGH_POWERED_BOLT_GUN = 210,
+ TC_RUNED_COPPER_ROD = 230,
+ TC_JEWELERS_KIT = 238,
+ TC_ULTIMATE_GNOMISH_ARMY_KNIFE = 250
};
enum UnitDynFlags
@@ -3805,7 +4323,7 @@ enum BattlegroundTeamId
#define BG_TEAMS_COUNT 2
-// indexes of BattlemasterList.dbc
+// indexes of BattlemasterList.dbc (6.0)
enum BattlegroundTypeId
{
BATTLEGROUND_TYPE_NONE = 0, // None
@@ -3830,9 +4348,16 @@ enum BattlegroundTypeId
// 441 = "Icecrown Citadel"
// 443 = "The Ruby Sanctum"
// 656 = "Rated Eye of the Storm"
+ BATTLEGROUND_TK = 699, // Temple of Kotmogu
+ // 706 = "CTF3"
+ BATTLEGROUND_SM = 708, // Silvershard Mines
+ BATTLEGROUND_TVA = 719, // Tol'Viron Arena
+ BATTLEGROUND_DG = 754, // Deepwind Gorge
+ BATTLEGROUND_TTP = 757, // The Tiger's Peak
+ BATTLEGROUND_SS_VS_TM = 789 // Southshore vs. Tarren Mill
};
-#define MAX_BATTLEGROUND_TYPE_ID 121
+#define MAX_BATTLEGROUND_TYPE_ID 758
enum MailResponseType
{
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 6f800c4ed13..e3c06da3874 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4851,7 +4851,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex)
Map* cMap = m_caster->GetMap();
// if gameobject is summoning object, it should be spawned right on caster's position
- if (goinfo->type == GAMEOBJECT_TYPE_SUMMONING_RITUAL)
+ if (goinfo->type == GAMEOBJECT_TYPE_RITUAL)
m_caster->GetPosition(fx, fy, fz);
GameObject* pGameObj = new GameObject;
@@ -4889,7 +4889,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex)
duration = duration - lastSec*IN_MILLISECONDS + FISHING_BOBBER_READY_TIME*IN_MILLISECONDS;
break;
}
- case GAMEOBJECT_TYPE_SUMMONING_RITUAL:
+ case GAMEOBJECT_TYPE_RITUAL:
{
if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt
index 664b80c292d..3d6849eee08 100644
--- a/src/tools/map_extractor/CMakeLists.txt
+++ b/src/tools/map_extractor/CMakeLists.txt
@@ -13,7 +13,7 @@ file(GLOB_RECURSE sources *.cpp *.h)
include_directories (
${CMAKE_SOURCE_DIR}/src/server/shared
- ${CMAKE_SOURCE_DIR}/dep/StormLib/src
+ ${CMAKE_SOURCE_DIR}/dep/CascLib/src
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/loadlib
)
@@ -27,10 +27,10 @@ add_executable(mapextractor
target_link_libraries(mapextractor
${BZIP2_LIBRARIES}
${ZLIB_LIBRARIES}
- storm
+ casc
)
-add_dependencies(mapextractor storm)
+add_dependencies(mapextractor casc)
if( UNIX )
install(TARGETS mapextractor DESTINATION bin)
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index ab3ebda584d..2bb05445744 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -32,7 +32,8 @@
#define ERROR_PATH_NOT_FOUND ERROR_FILE_NOT_FOUND
#endif
-#include "StormLib.h"
+#include "DBFilesClientList.h"
+#include "CascLib.h"
#include "dbcfile.h"
#include "adt.h"
@@ -55,8 +56,7 @@
#define OPEN_FLAGS (O_RDONLY | O_BINARY)
#endif
-HANDLE WorldMpq = NULL;
-HANDLE LocaleMpq = NULL;
+HANDLE CascStorage = NULL;
typedef struct
{
@@ -88,53 +88,27 @@ bool CONF_allow_height_limit = true;
float CONF_use_minHeight = -500.0f;
// This option allow use float to int conversion
-bool CONF_allow_float_to_int = true;
+bool CONF_allow_float_to_int = false;
float CONF_float_to_int8_limit = 2.0f; // Max accuracy = val/256
float CONF_float_to_int16_limit = 2048.0f; // Max accuracy = val/65536
float CONF_flat_height_delta_limit = 0.005f; // If max - min less this value - surface is flat
float CONF_flat_liquid_delta_limit = 0.001f; // If max - min less this value - liquid surface is flat
-uint32 CONF_TargetBuild = 15595; // 4.3.4.15595
+uint32 CONF_Locale = 0;
-// List MPQ for extract maps from
-char const* CONF_mpq_list[]=
-{
- "world.MPQ",
- "art.MPQ",
- "world2.MPQ",
- "expansion1.MPQ",
- "expansion2.MPQ",
- "expansion3.MPQ",
-};
-
-uint32 const Builds[] = {13164, 13205, 13287, 13329, 13596, 13623, 13914, 14007, 14333, 14480, 14545, 15005, 15050, 15211, 15354, 15595, 0};
-#define LAST_DBC_IN_DATA_BUILD 13623 // after this build mpqs with dbc are back to locale folder
-#define NEW_BASE_SET_BUILD 15211
-
-#define LOCALES_COUNT 15
+#define LOCALES_COUNT 18
char const* Locales[LOCALES_COUNT] =
{
- "enGB", "enUS",
- "deDE", "esES",
- "frFR", "koKR",
- "zhCN", "zhTW",
- "enCN", "enTW",
- "esMX", "ruRU",
- "ptBR", "ptPT",
- "itIT"
-};
-
-TCHAR const* LocalesT[LOCALES_COUNT] =
-{
- _T("enGB"), _T("enUS"),
- _T("deDE"), _T("esES"),
- _T("frFR"), _T("koKR"),
- _T("zhCN"), _T("zhTW"),
- _T("enCN"), _T("enTW"),
- _T("esMX"), _T("ruRU"),
- _T("ptBR"), _T("ptPT"),
- _T("itIT"),
+ "none", "unknown1",
+ "enUS", "koKR",
+ "unknown2", "frFR",
+ "deDE", "zhCN",
+ "esES", "zhTW",
+ "enGB", "enCN",
+ "enTW", "esMX",
+ "ruRU", "ptBR",
+ "itIT", "ptPT",
};
void CreateDir(std::string const& path)
@@ -173,8 +147,7 @@ void Usage(char const* prg)
"-o set output path\n"\
"-e extract only MAP(1)/DBC(2) - standard: both(3)\n"\
"-f height stored as int (less map size but lost some accuracy) 1 by default\n"\
- "-b target build (default %u)\n"\
- "Example: %s -f 0 -i \"c:\\games\\game\"", prg, CONF_TargetBuild, prg);
+ "Example: %s -f 0 -i \"c:\\games\\game\"", prg, prg);
exit(1);
}
@@ -221,9 +194,14 @@ void HandleArgs(int argc, char* arg[])
else
Usage(arg[0]);
break;
- case 'b':
+ case 'l':
if (c + 1 < argc) // all ok
- CONF_TargetBuild = atoi(arg[c++ + 1]);
+ {
+ for (uint32 i = 0; i < LOCALES_COUNT; ++i)
+ if (!strcmp(arg[c + 1], Locales[i]))
+ CONF_Locale = 1 << i;
+ ++c;
+ }
else
Usage(arg[0]);
break;
@@ -240,15 +218,15 @@ uint32 ReadBuild(int locale)
//printf("Read %s file... ", filename.c_str());
HANDLE dbcFile;
- if (!SFileOpenFileEx(LocaleMpq, filename.c_str(), SFILE_OPEN_PATCHED_FILE, &dbcFile))
+ if (!CascOpenFile(CascStorage, filename.c_str(), CASC_LOCALE_ALL, 0, &dbcFile))
{
- printf("Fatal error: Not found %s file!\n", filename.c_str());
- exit(1);
+ printf("Locale %s not installed.\n", Locales[locale]);
+ return 0;
}
char buff[512];
DWORD readBytes = 0;
- SFileReadFile(dbcFile, buff, 512, &readBytes, NULL);
+ CascReadFile(dbcFile, buff, 512, &readBytes);
if (!readBytes)
{
printf("Fatal error: Not found %s file!\n", filename.c_str());
@@ -256,7 +234,7 @@ uint32 ReadBuild(int locale)
}
std::string text = buff;
- SFileCloseFile(dbcFile);
+ CascCloseFile(dbcFile);
size_t pos = text.find("version=\"");
size_t pos1 = pos + strlen("version=\"");
@@ -284,7 +262,7 @@ uint32 ReadMapDBC()
printf("Read Map.dbc file... ");
HANDLE dbcFile;
- if (!SFileOpenFileEx(LocaleMpq, "DBFilesClient\\Map.dbc", SFILE_OPEN_PATCHED_FILE, &dbcFile))
+ if (!CascOpenFile(CascStorage, "DBFilesClient\\Map.dbc", CASC_LOCALE_ALL, 0, &dbcFile))
{
printf("Fatal error: Cannot find Map.dbc in archive!\n");
exit(1);
@@ -305,7 +283,7 @@ uint32 ReadMapDBC()
strcpy(map_ids[x].name, dbc.getRecord(x).getString(1));
}
- SFileCloseFile(dbcFile);
+ CascCloseFile(dbcFile);
printf("Done! (%u maps loaded)\n", uint32(map_count));
return map_count;
}
@@ -314,7 +292,7 @@ void ReadAreaTableDBC()
{
printf("Read AreaTable.dbc file...");
HANDLE dbcFile;
- if (!SFileOpenFileEx(LocaleMpq, "DBFilesClient\\AreaTable.dbc", SFILE_OPEN_PATCHED_FILE, &dbcFile))
+ if (!CascOpenFile(CascStorage, "DBFilesClient\\AreaTable.dbc", CASC_LOCALE_ALL, 0, &dbcFile))
{
printf("Fatal error: Cannot find AreaTable.dbc in archive!\n");
exit(1);
@@ -334,7 +312,7 @@ void ReadAreaTableDBC()
for (uint32 x = 0; x < area_count; ++x)
areas[dbc.getRecord(x).getUInt(0)] = dbc.getRecord(x).getUInt(3);
- SFileCloseFile(dbcFile);
+ CascCloseFile(dbcFile);
printf("Done! (%u areas loaded)\n", uint32(area_count));
}
@@ -342,7 +320,7 @@ void ReadLiquidTypeTableDBC()
{
printf("Read LiquidType.dbc file...");
HANDLE dbcFile;
- if (!SFileOpenFileEx(LocaleMpq, "DBFilesClient\\LiquidType.dbc", SFILE_OPEN_PATCHED_FILE, &dbcFile))
+ if (!CascOpenFile(CascStorage, "DBFilesClient\\LiquidType.dbc", CASC_LOCALE_ALL, 0, &dbcFile))
{
printf("Fatal error: Cannot find LiquidType.dbc in archive!\n");
exit(1);
@@ -363,7 +341,7 @@ void ReadLiquidTypeTableDBC()
for(uint32 x = 0; x < liqTypeCount; ++x)
LiqType[dbc.getRecord(x).getUInt(0)] = dbc.getRecord(x).getUInt(3);
- SFileCloseFile(dbcFile);
+ CascCloseFile(dbcFile);
printf("Done! (%u LiqTypes loaded)\n", (uint32)liqTypeCount);
}
@@ -462,18 +440,15 @@ uint16 liquid_entry[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
uint8 liquid_flags[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
bool liquid_show[ADT_GRID_SIZE][ADT_GRID_SIZE];
float liquid_height[ADT_GRID_SIZE+1][ADT_GRID_SIZE+1];
+uint16 holes[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/, uint32 build)
{
- ADT_file adt;
+ ChunkedFile adt;
- if (!adt.loadFile(WorldMpq, filename))
+ if (!adt.loadFile(CascStorage, filename))
return false;
- memset(liquid_show, 0, sizeof(liquid_show));
- memset(liquid_flags, 0, sizeof(liquid_flags));
- memset(liquid_entry, 0, sizeof(liquid_entry));
-
// Prepare map header
map_fileheader map;
map.mapMagic = *(uint32 const*)MAP_MAGIC;
@@ -481,24 +456,225 @@ bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/,
map.buildMagic = build;
// Get area flags data
- for (int i = 0; i < ADT_CELLS_PER_GRID; ++i)
+ memset(area_flags, 0xFF, sizeof(area_flags));
+ memset(V9, 0, sizeof(V9));
+ memset(V8, 0, sizeof(V8));
+
+ memset(liquid_show, 0, sizeof(liquid_show));
+ memset(liquid_flags, 0, sizeof(liquid_flags));
+ memset(liquid_entry, 0, sizeof(liquid_entry));
+
+ memset(holes, 0, sizeof(holes));
+
+ bool hasHoles = false;
+
+ for (std::multimap<std::string, FileChunk*>::const_iterator itr = adt.chunks.lower_bound("MCNK"); itr != adt.chunks.upper_bound("MCNK"); ++itr)
{
- for (int j = 0; j < ADT_CELLS_PER_GRID; ++j)
+ adt_MCNK* mcnk = itr->second->As<adt_MCNK>();
+
+ // Area data
+ if (mcnk->areaid <= maxAreaId && areas[mcnk->areaid] != 0xFFFF)
+ area_flags[mcnk->iy][mcnk->ix] = areas[mcnk->areaid];
+
+ // Height
+ // Height values for triangles stored in order:
+ // 1 2 3 4 5 6 7 8 9
+ // 10 11 12 13 14 15 16 17
+ // 18 19 20 21 22 23 24 25 26
+ // 27 28 29 30 31 32 33 34
+ // . . . . . . . .
+ // For better get height values merge it to V9 and V8 map
+ // V9 height map:
+ // 1 2 3 4 5 6 7 8 9
+ // 18 19 20 21 22 23 24 25 26
+ // . . . . . . . .
+ // V8 height map:
+ // 10 11 12 13 14 15 16 17
+ // 27 28 29 30 31 32 33 34
+ // . . . . . . . .
+
+ // Set map height as grid height
+ for (int y = 0; y <= ADT_CELL_SIZE; y++)
+ {
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x <= ADT_CELL_SIZE; x++)
+ {
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ V9[cy][cx] = mcnk->ypos;
+ }
+ }
+
+ for (int y = 0; y < ADT_CELL_SIZE; y++)
{
- adt_MCNK* cell = adt.cells[i][j];
- uint32 areaid = cell->areaid;
- if (areaid && areaid <= maxAreaId)
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x < ADT_CELL_SIZE; x++)
{
- if (areas[areaid] != 0xFFFF)
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ V8[cy][cx] = mcnk->ypos;
+ }
+ }
+
+ // Get custom height
+ if (FileChunk* chunk = itr->second->GetSubChunk("MCVT"))
+ {
+ adt_MCVT* mcvt = chunk->As<adt_MCVT>();
+ // get V9 height map
+ for (int y = 0; y <= ADT_CELL_SIZE; y++)
+ {
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x <= ADT_CELL_SIZE; x++)
{
- area_flags[i][j] = areas[areaid];
- continue;
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ V9[cy][cx] += mcvt->height_map[y*(ADT_CELL_SIZE * 2 + 1) + x];
+ }
+ }
+ // get V8 height map
+ for (int y = 0; y < ADT_CELL_SIZE; y++)
+ {
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x < ADT_CELL_SIZE; x++)
+ {
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ V8[cy][cx] += mcvt->height_map[y*(ADT_CELL_SIZE * 2 + 1) + ADT_CELL_SIZE + 1 + x];
+ }
+ }
+ }
+
+ // Liquid data
+ if (mcnk->sizeMCLQ > 8)
+ {
+ if (FileChunk* chunk = itr->second->GetSubChunk("MCLQ"))
+ {
+ adt_MCLQ* liquid = chunk->As<adt_MCLQ>();
+ int count = 0;
+ for (int y = 0; y < ADT_CELL_SIZE; ++y)
+ {
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x < ADT_CELL_SIZE; ++x)
+ {
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ if (liquid->flags[y][x] != 0x0F)
+ {
+ liquid_show[cy][cx] = true;
+ if (liquid->flags[y][x] & (1 << 7))
+ liquid_flags[mcnk->iy][mcnk->ix] |= MAP_LIQUID_TYPE_DARK_WATER;
+ ++count;
+ }
+ }
+ }
+
+ uint32 c_flag = mcnk->flags;
+ if (c_flag & (1 << 2))
+ {
+ liquid_entry[mcnk->iy][mcnk->ix] = 1;
+ liquid_flags[mcnk->iy][mcnk->ix] |= MAP_LIQUID_TYPE_WATER; // water
+ }
+ if (c_flag & (1 << 3))
+ {
+ liquid_entry[mcnk->iy][mcnk->ix] = 2;
+ liquid_flags[mcnk->iy][mcnk->ix] |= MAP_LIQUID_TYPE_OCEAN; // ocean
}
+ if (c_flag & (1 << 4))
+ {
+ liquid_entry[mcnk->iy][mcnk->ix] = 3;
+ liquid_flags[mcnk->iy][mcnk->ix] |= MAP_LIQUID_TYPE_MAGMA; // magma/slime
+ }
+
+ if (!count && liquid_flags[mcnk->iy][mcnk->ix])
+ fprintf(stderr, "Wrong liquid detect in MCLQ chunk");
- printf("File: %s\nCan't find area flag for areaid %u [%d, %d].\n", filename, areaid, cell->ix, cell->iy);
+ for (int y = 0; y <= ADT_CELL_SIZE; ++y)
+ {
+ int cy = mcnk->iy * ADT_CELL_SIZE + y;
+ for (int x = 0; x <= ADT_CELL_SIZE; ++x)
+ {
+ int cx = mcnk->ix * ADT_CELL_SIZE + x;
+ liquid_height[cy][cx] = liquid->liquid[y][x].height;
+ }
+ }
+ }
+ }
+
+ // Hole data
+ if (!(mcnk->flags & 0x10000))
+ {
+ if (uint16 hole = mcnk->holes)
+ {
+ holes[mcnk->iy][mcnk->ix] = mcnk->holes;
+ hasHoles = true;
}
+ }
+ }
+
+ // Get liquid map for grid (in WOTLK used MH2O chunk)
+ if (FileChunk* chunk = adt.GetChunk("MH2O"))
+ {
+ adt_MH2O* h2o = chunk->As<adt_MH2O>();
+ for (int i = 0; i < ADT_CELLS_PER_GRID; i++)
+ {
+ for (int j = 0; j < ADT_CELLS_PER_GRID; j++)
+ {
+ adt_liquid_header *h = h2o->getLiquidData(i, j);
+ if (!h)
+ continue;
+
+ int count = 0;
+ uint64 show = h2o->getLiquidShowMap(h);
+ for (int y = 0; y < h->height; y++)
+ {
+ int cy = i * ADT_CELL_SIZE + y + h->yOffset;
+ for (int x = 0; x < h->width; x++)
+ {
+ int cx = j * ADT_CELL_SIZE + x + h->xOffset;
+ if (show & 1)
+ {
+ liquid_show[cy][cx] = true;
+ ++count;
+ }
+ show >>= 1;
+ }
+ }
+
+ liquid_entry[i][j] = h->liquidType;
+ switch (LiqType[h->liquidType])
+ {
+ case LIQUID_TYPE_WATER: liquid_flags[i][j] |= MAP_LIQUID_TYPE_WATER; break;
+ case LIQUID_TYPE_OCEAN: liquid_flags[i][j] |= MAP_LIQUID_TYPE_OCEAN; break;
+ case LIQUID_TYPE_MAGMA: liquid_flags[i][j] |= MAP_LIQUID_TYPE_MAGMA; break;
+ case LIQUID_TYPE_SLIME: liquid_flags[i][j] |= MAP_LIQUID_TYPE_SLIME; break;
+ default:
+ printf("\nCan't find Liquid type %u for map %s\nchunk %d,%d\n", h->liquidType, filename, i, j);
+ break;
+ }
+ // Dark water detect
+ if (LiqType[h->liquidType] == LIQUID_TYPE_OCEAN)
+ {
+ uint8* lm = h2o->getLiquidLightMap(h);
+ if (!lm)
+ liquid_flags[i][j] |= MAP_LIQUID_TYPE_DARK_WATER;
+ }
+
+ if (!count && liquid_flags[i][j])
+ printf("Wrong liquid detect in MH2O chunk");
+
+ float* height = h2o->getLiquidHeightMap(h);
+ int pos = 0;
+ for (int y = 0; y <= h->height; y++)
+ {
+ int cy = i * ADT_CELL_SIZE + y + h->yOffset;
+ for (int x = 0; x <= h->width; x++)
+ {
+ int cx = j * ADT_CELL_SIZE + x + h->xOffset;
+
+ if (height)
+ liquid_height[cy][cx] = height[pos];
+ else
+ liquid_height[cy][cx] = h->heightLevel1;
- area_flags[i][j] = 0xffff;
+ pos++;
+ }
+ }
+ }
}
}
@@ -536,77 +712,6 @@ bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/,
areaHeader.gridArea = (uint16)areaflag;
}
- //
- // Get Height map from grid
- //
- for (int i=0;i<ADT_CELLS_PER_GRID;i++)
- {
- for(int j=0;j<ADT_CELLS_PER_GRID;j++)
- {
- adt_MCNK * cell = adt.cells[i][j];
- if (!cell)
- continue;
- // Height values for triangles stored in order:
- // 1 2 3 4 5 6 7 8 9
- // 10 11 12 13 14 15 16 17
- // 18 19 20 21 22 23 24 25 26
- // 27 28 29 30 31 32 33 34
- // . . . . . . . .
- // For better get height values merge it to V9 and V8 map
- // V9 height map:
- // 1 2 3 4 5 6 7 8 9
- // 18 19 20 21 22 23 24 25 26
- // . . . . . . . .
- // V8 height map:
- // 10 11 12 13 14 15 16 17
- // 27 28 29 30 31 32 33 34
- // . . . . . . . .
-
- // Set map height as grid height
- for (int y=0; y <= ADT_CELL_SIZE; y++)
- {
- int cy = i*ADT_CELL_SIZE + y;
- for (int x=0; x <= ADT_CELL_SIZE; x++)
- {
- int cx = j*ADT_CELL_SIZE + x;
- V9[cy][cx]=cell->ypos;
- }
- }
- for (int y=0; y < ADT_CELL_SIZE; y++)
- {
- int cy = i*ADT_CELL_SIZE + y;
- for (int x=0; x < ADT_CELL_SIZE; x++)
- {
- int cx = j*ADT_CELL_SIZE + x;
- V8[cy][cx]=cell->ypos;
- }
- }
- // Get custom height
- adt_MCVT *v = cell->getMCVT();
- if (!v)
- continue;
- // get V9 height map
- for (int y=0; y <= ADT_CELL_SIZE; y++)
- {
- int cy = i*ADT_CELL_SIZE + y;
- for (int x=0; x <= ADT_CELL_SIZE; x++)
- {
- int cx = j*ADT_CELL_SIZE + x;
- V9[cy][cx]+=v->height_map[y*(ADT_CELL_SIZE*2+1)+x];
- }
- }
- // get V8 height map
- for (int y=0; y < ADT_CELL_SIZE; y++)
- {
- int cy = i*ADT_CELL_SIZE + y;
- for (int x=0; x < ADT_CELL_SIZE; x++)
- {
- int cx = j*ADT_CELL_SIZE + x;
- V8[cy][cx]+=v->height_map[y*(ADT_CELL_SIZE*2+1)+ADT_CELL_SIZE+1+x];
- }
- }
- }
- }
//============================================
// Try pack height data
//============================================
@@ -709,140 +814,6 @@ bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/,
map.heightMapSize+= sizeof(V9) + sizeof(V8);
}
- // Get from MCLQ chunk (old)
- for (int i = 0; i < ADT_CELLS_PER_GRID; i++)
- {
- for(int j = 0; j < ADT_CELLS_PER_GRID; j++)
- {
- adt_MCNK *cell = adt.cells[i][j];
- if (!cell)
- continue;
-
- adt_MCLQ *liquid = cell->getMCLQ();
- int count = 0;
- if (!liquid || cell->sizeMCLQ <= 8)
- continue;
-
- for (int y = 0; y < ADT_CELL_SIZE; y++)
- {
- int cy = i * ADT_CELL_SIZE + y;
- for (int x = 0; x < ADT_CELL_SIZE; x++)
- {
- int cx = j * ADT_CELL_SIZE + x;
- if (liquid->flags[y][x] != 0x0F)
- {
- liquid_show[cy][cx] = true;
- if (liquid->flags[y][x] & (1<<7))
- liquid_flags[i][j] |= MAP_LIQUID_TYPE_DARK_WATER;
- ++count;
- }
- }
- }
-
- uint32 c_flag = cell->flags;
- if (c_flag & (1<<2))
- {
- liquid_entry[i][j] = 1;
- liquid_flags[i][j] |= MAP_LIQUID_TYPE_WATER; // water
- }
- if (c_flag & (1<<3))
- {
- liquid_entry[i][j] = 2;
- liquid_flags[i][j] |= MAP_LIQUID_TYPE_OCEAN; // ocean
- }
- if (c_flag & (1<<4))
- {
- liquid_entry[i][j] = 3;
- liquid_flags[i][j] |= MAP_LIQUID_TYPE_MAGMA; // magma/slime
- }
-
- if (!count && liquid_flags[i][j])
- fprintf(stderr, "Wrong liquid detect in MCLQ chunk");
-
- for (int y = 0; y <= ADT_CELL_SIZE; y++)
- {
- int cy = i * ADT_CELL_SIZE + y;
- for (int x = 0; x <= ADT_CELL_SIZE; x++)
- {
- int cx = j * ADT_CELL_SIZE + x;
- liquid_height[cy][cx] = liquid->liquid[y][x].height;
- }
- }
- }
- }
-
- // Get liquid map for grid (in WOTLK used MH2O chunk)
- adt_MH2O * h2o = adt.a_grid->getMH2O();
- if (h2o)
- {
- for (int i = 0; i < ADT_CELLS_PER_GRID; i++)
- {
- for(int j = 0; j < ADT_CELLS_PER_GRID; j++)
- {
- adt_liquid_header *h = h2o->getLiquidData(i,j);
- if (!h)
- continue;
-
- int count = 0;
- uint64 show = h2o->getLiquidShowMap(h);
- for (int y = 0; y < h->height; y++)
- {
- int cy = i * ADT_CELL_SIZE + y + h->yOffset;
- for (int x = 0; x < h->width; x++)
- {
- int cx = j * ADT_CELL_SIZE + x + h->xOffset;
- if (show & 1)
- {
- liquid_show[cy][cx] = true;
- ++count;
- }
- show >>= 1;
- }
- }
-
- liquid_entry[i][j] = h->liquidType;
- switch (LiqType[h->liquidType])
- {
- case LIQUID_TYPE_WATER: liquid_flags[i][j] |= MAP_LIQUID_TYPE_WATER; break;
- case LIQUID_TYPE_OCEAN: liquid_flags[i][j] |= MAP_LIQUID_TYPE_OCEAN; break;
- case LIQUID_TYPE_MAGMA: liquid_flags[i][j] |= MAP_LIQUID_TYPE_MAGMA; break;
- case LIQUID_TYPE_SLIME: liquid_flags[i][j] |= MAP_LIQUID_TYPE_SLIME; break;
- default:
- printf("\nCan't find Liquid type %u for map %s\nchunk %d,%d\n", h->liquidType, filename, i, j);
- break;
- }
- // Dark water detect
- if (LiqType[h->liquidType] == LIQUID_TYPE_OCEAN)
- {
- uint8* lm = h2o->getLiquidLightMap(h);
- if (!lm)
- liquid_flags[i][j] |= MAP_LIQUID_TYPE_DARK_WATER;
- }
-
- if (!count && liquid_flags[i][j])
- printf("Wrong liquid detect in MH2O chunk");
-
- float* height = h2o->getLiquidHeightMap(h);
- int pos = 0;
- for (int y = 0; y <= h->height; y++)
- {
- int cy = i * ADT_CELL_SIZE + y + h->yOffset;
- for (int x = 0; x <= h->width; x++)
- {
- int cx = j * ADT_CELL_SIZE + x + h->xOffset;
-
- if (height)
- liquid_height[cy][cx] = height[pos];
- else
- liquid_height[cy][cx] = h->heightLevel1;
-
- pos++;
- }
- }
- }
- }
- }
-
//============================================
// Pack liquid data
//============================================
@@ -924,30 +895,11 @@ bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/,
map.liquidMapSize += sizeof(float)*liquidHeader.width*liquidHeader.height;
}
- // map hole info
- uint16 holes[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
-
if (map.liquidMapOffset)
map.holesOffset = map.liquidMapOffset + map.liquidMapSize;
else
map.holesOffset = map.heightMapOffset + map.heightMapSize;
- memset(holes, 0, sizeof(holes));
- bool hasHoles = false;
-
- for (int i = 0; i < ADT_CELLS_PER_GRID; ++i)
- {
- for (int j = 0; j < ADT_CELLS_PER_GRID; ++j)
- {
- adt_MCNK * cell = adt.cells[i][j];
- if (!cell)
- continue;
- holes[i][j] = cell->holes;
- if (!hasHoles && cell->holes != 0)
- hasHoles = true;
- }
- }
-
if (hasHoles)
map.holesSize = sizeof(holes);
else
@@ -1013,11 +965,10 @@ bool ConvertADT(char *filename, char *filename2, int /*cell_y*/, int /*cell_x*/,
return true;
}
-void ExtractMapsFromMpq(uint32 build)
+void ExtractMaps(uint32 build)
{
- char mpq_filename[1024];
+ char storagePath[1024];
char output_filename[1024];
- char mpq_map_name[1024];
printf("Extracting maps...\n");
@@ -1035,21 +986,22 @@ void ExtractMapsFromMpq(uint32 build)
{
printf("Extract %s (%d/%u) \n", map_ids[z].name, z+1, map_count);
// Loadup map grid data
- sprintf(mpq_map_name, "World\\Maps\\%s\\%s.wdt", map_ids[z].name, map_ids[z].name);
- WDT_file wdt;
- if (!wdt.loadFile(WorldMpq, mpq_map_name, false))
+ sprintf(storagePath, "World\\Maps\\%s\\%s.wdt", map_ids[z].name, map_ids[z].name);
+ ChunkedFile wdt;
+ if (!wdt.loadFile(CascStorage, storagePath, false))
continue;
+ FileChunk* chunk = wdt.GetChunk("MAIN");
for (uint32 y = 0; y < WDT_MAP_SIZE; ++y)
{
for (uint32 x = 0; x < WDT_MAP_SIZE; ++x)
{
- if (!(wdt.main->adt_list[y][x].flag & 0x1))
+ if (!(chunk->As<wdt_MAIN>()->adt_list[y][x].flag & 0x1))
continue;
- sprintf(mpq_filename, "World\\Maps\\%s\\%s_%u_%u.adt", map_ids[z].name, map_ids[z].name, x, y);
+ sprintf(storagePath, "World\\Maps\\%s\\%s_%u_%u.adt", map_ids[z].name, map_ids[z].name, x, y);
sprintf(output_filename, "%s/maps/%03u%02u%02u.map", output_path, map_ids[z].id, y, x);
- ConvertADT(mpq_filename, output_filename, y, x, build);
+ ConvertADT(storagePath, output_filename, y, x, build);
}
// draw progress bar
@@ -1058,8 +1010,8 @@ void ExtractMapsFromMpq(uint32 build)
}
printf("\n");
- delete [] areas;
- delete [] map_ids;
+ delete[] areas;
+ delete[] map_ids;
}
bool ExtractFile(HANDLE fileInArchive, char const* filename)
@@ -1076,7 +1028,7 @@ bool ExtractFile(HANDLE fileInArchive, char const* filename)
while (readBytes > 0)
{
- SFileReadFile(fileInArchive, buffer, sizeof(buffer), &readBytes, NULL);
+ CascReadFile(fileInArchive, buffer, sizeof(buffer), &readBytes);
if (readBytes > 0)
fwrite(buffer, 1, readBytes, output);
}
@@ -1085,213 +1037,54 @@ bool ExtractFile(HANDLE fileInArchive, char const* filename)
return true;
}
-void ExtractDBCFiles(int l, bool basicLocale)
+void ExtractDBFilesClient(int l)
{
- printf("Extracting dbc files...\n");
-
- SFILE_FIND_DATA foundFile;
- memset(&foundFile, 0, sizeof(foundFile));
- HANDLE listFile = SFileFindFirstFile(LocaleMpq, "DBFilesClient\\*dbc", &foundFile, NULL);
- HANDLE dbcFile = NULL;
- uint32 count = 0;
- if (listFile)
- {
- std::string outputPath = output_path;
- outputPath += "/dbc/";
-
- CreateDir(outputPath);
- if (!basicLocale)
- {
- outputPath += Locales[l];
- outputPath += "/";
- CreateDir(outputPath);
- }
-
- std::string filename;
-
- do
- {
- if (!SFileOpenFileEx(LocaleMpq, foundFile.cFileName, SFILE_OPEN_PATCHED_FILE, &dbcFile))
- {
- printf("Unable to open file %s in the archive\n", foundFile.cFileName);
- continue;
- }
-
- filename = foundFile.cFileName;
- filename = outputPath + filename.substr(filename.rfind('\\') + 1);
+ printf("Extracting dbc/db2 files...\n");
- if (FileExists(filename.c_str()))
- continue;
-
- if (ExtractFile(dbcFile, filename.c_str()))
- ++count;
-
- SFileCloseFile(dbcFile);
- } while (SFileFindNextFile(listFile, &foundFile));
-
- SFileFindClose(listFile);
- }
-
- printf("Extracted %u DBC files\n\n", count);
-}
+ std::string outputPath = output_path;
+ outputPath += "/dbc/";
-void ExtractDB2Files(int l, bool basicLocale)
-{
- printf("Extracting db2 files...\n");
+ CreateDir(outputPath);
+ outputPath += Locales[l];
+ outputPath += "/";
+ CreateDir(outputPath);
- SFILE_FIND_DATA foundFile;
- memset(&foundFile, 0, sizeof(foundFile));
- HANDLE listFile = SFileFindFirstFile(LocaleMpq, "DBFilesClient\\*db2", &foundFile, NULL);
- HANDLE dbcFile = NULL;
+ uint32 index = 0;
uint32 count = 0;
- if (listFile)
+ char const* fileName = DBFilesClientList[index];
+ HANDLE dbcFile;
+ while (fileName)
{
- std::string outputPath = output_path;
- outputPath += "/dbc/";
- if (!basicLocale)
+ if (CascOpenFile(CascStorage, fileName, 1 << l, 0, &dbcFile))
{
- outputPath += Locales[l];
- outputPath += "/";
- }
-
- std::string filename;
-
- do
- {
- if (!SFileOpenFileEx(LocaleMpq, foundFile.cFileName, SFILE_OPEN_PATCHED_FILE, &dbcFile))
- {
- printf("Unable to open file %s in the archive\n", foundFile.cFileName);
- continue;
- }
-
- filename = foundFile.cFileName;
+ std::string filename = fileName;
filename = outputPath + filename.substr(filename.rfind('\\') + 1);
- if (ExtractFile(dbcFile, filename.c_str()))
- ++count;
-
- SFileCloseFile(dbcFile);
- } while (SFileFindNextFile(listFile, &foundFile));
- SFileFindClose(listFile);
- }
-
- printf("Extracted %u DB2 files\n\n", count);
-}
+ if (!FileExists(filename.c_str()))
+ if (ExtractFile(dbcFile, filename.c_str()))
+ ++count;
-bool LoadLocaleMPQFile(int locale)
-{
- TCHAR buff[512];
- memset(buff, 0, sizeof(buff));
- _stprintf(buff, _T("%s/Data/%s/locale-%s.MPQ"), input_path, LocalesT[locale], LocalesT[locale]);
- if (!SFileOpenArchive(buff, 0, MPQ_OPEN_READ_ONLY, &LocaleMpq))
- {
- if (GetLastError() != ERROR_PATH_NOT_FOUND)
- {
- _tprintf(_T("\nLoading %s locale MPQs\n"), LocalesT[locale]);
- _tprintf(_T("Cannot open archive %s\n"), buff);
- }
- return false;
- }
-
- _tprintf(_T("\nLoading %s locale MPQs\n"), LocalesT[locale]);
- char const* prefix = NULL;
- for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i)
- {
- // Do not attempt to read older MPQ patch archives past this build, they were merged with base
- // and trying to read them together with new base will not end well
- if (CONF_TargetBuild >= NEW_BASE_SET_BUILD && Builds[i] < NEW_BASE_SET_BUILD)
- continue;
-
- memset(buff, 0, sizeof(buff));
- if (Builds[i] > LAST_DBC_IN_DATA_BUILD)
- {
- prefix = "";
- _stprintf(buff, _T("%s/Data/%s/wow-update-%s-%u.MPQ"), input_path, LocalesT[locale], LocalesT[locale], Builds[i]);
+ CascCloseFile(dbcFile);
}
else
- {
- prefix = Locales[locale];
- _stprintf(buff, _T("%s/Data/wow-update-%u.MPQ"), input_path, Builds[i]);
- }
+ printf("Unable to open file %s in the archive for locale %s.\n", fileName, Locales[l]);
- if (!SFileOpenPatchArchive(LocaleMpq, buff, prefix, 0))
- {
- if (GetLastError() != ERROR_FILE_NOT_FOUND)
- _tprintf(_T("Cannot open patch archive %s\n"), buff);
- continue;
- }
- else
- _tprintf(_T("Loaded %s\n"), buff);
+ fileName = DBFilesClientList[++index];
}
- printf("\n");
- return true;
+ printf("Extracted %u files\n\n", count);
}
-void LoadCommonMPQFiles(uint32 build)
+bool OpenCascStorage()
{
- TCHAR filename[512];
- _stprintf(filename, _T("%s/Data/world.MPQ"), input_path);
- _tprintf(_T("Loading common MPQ files\n"));
- if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &WorldMpq))
- {
- if (GetLastError() != ERROR_PATH_NOT_FOUND)
- _tprintf(_T("Cannot open archive %s\n"), filename);
- return;
- }
-
- int count = sizeof(CONF_mpq_list) / sizeof(char*);
- for (int i = 1; i < count; ++i)
- {
- if (build < NEW_BASE_SET_BUILD && !strcmp("world2.MPQ", CONF_mpq_list[i])) // 4.3.2 and higher MPQ
- continue;
-
- _stprintf(filename, _T("%s/Data/%s"), input_path, CONF_mpq_list[i]);
- if (!SFileOpenPatchArchive(WorldMpq, filename, "", 0))
- {
- if (GetLastError() != ERROR_PATH_NOT_FOUND)
- _tprintf(_T("Cannot open archive %s\n"), filename);
- else
- _tprintf(_T("Not found %s\n"), filename);
- }
- else
- _tprintf(_T("Loaded %s\n"), filename);
-
- }
-
- char const* prefix = NULL;
- for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i)
+ if (!CascOpenStorage(".\\Data", 0, &CascStorage))
{
- // Do not attempt to read older MPQ patch archives past this build, they were merged with base
- // and trying to read them together with new base will not end well
- if (CONF_TargetBuild >= NEW_BASE_SET_BUILD && Builds[i] < NEW_BASE_SET_BUILD)
- continue;
-
- memset(filename, 0, sizeof(filename));
- if (Builds[i] > LAST_DBC_IN_DATA_BUILD)
- {
- prefix = "";
- _stprintf(filename, _T("%s/Data/wow-update-base-%u.MPQ"), input_path, Builds[i]);
- }
- else
- {
- prefix = "base";
- _stprintf(filename, _T("%s/Data/wow-update-%u.MPQ"), input_path, Builds[i]);
- }
-
- if (!SFileOpenPatchArchive(WorldMpq, filename, prefix, 0))
- {
- if (GetLastError() != ERROR_PATH_NOT_FOUND)
- _tprintf(_T("Cannot open patch archive %s\n"), filename);
- else
- _tprintf(_T("Not found %s\n"), filename);
- continue;
- }
- else
- _tprintf(_T("Loaded %s\n"), filename);
+ printf("Error %d\n", GetLastError());
+ return false;
}
printf("\n");
+ return true;
}
int main(int argc, char * arg[])
@@ -1304,54 +1097,42 @@ int main(int argc, char * arg[])
int FirstLocale = -1;
uint32 build = 0;
+ if (!OpenCascStorage())
+ {
+ if (GetLastError() != ERROR_PATH_NOT_FOUND)
+ printf("Unable to open storage!\n");
+ return 1;
+ }
+
for (int i = 0; i < LOCALES_COUNT; ++i)
{
- //Open MPQs
- if (!LoadLocaleMPQFile(i))
- {
- if (GetLastError() != ERROR_PATH_NOT_FOUND)
- printf("Unable to load %s locale archives!\n", Locales[i]);
+ if (CONF_Locale && !(CONF_Locale & (1 << i)))
continue;
- }
- printf("Detected locale: %s\n", Locales[i]);
if ((CONF_extract & EXTRACT_DBC) == 0)
{
FirstLocale = i;
build = ReadBuild(i);
- if (build > CONF_TargetBuild)
- {
- printf("Base locale-%s.MPQ has build higher than target build (%u > %u), nothing extracted!\n", Locales[i], build, CONF_TargetBuild);
- return 0;
- }
+ if (!build)
+ continue;
- printf("Detected client build: %u\n", build);
- printf("\n");
+ printf("Detected client build: %u\n\n", build);
break;
}
//Extract DBC files
uint32 tempBuild = ReadBuild(i);
- printf("Detected client build %u for locale %s\n", tempBuild, Locales[i]);
- if (tempBuild > CONF_TargetBuild)
- {
- SFileCloseArchive(LocaleMpq);
- printf("Base locale-%s.MPQ has build higher than target build (%u > %u), nothing extracted!\n", Locales[i], tempBuild, CONF_TargetBuild);
+ if (!tempBuild)
continue;
- }
- printf("\n");
- ExtractDBCFiles(i, FirstLocale < 0);
- ExtractDB2Files(i, FirstLocale < 0);
+ printf("Detected client build %u for locale %s\n\n", tempBuild, Locales[i]);
+ ExtractDBFilesClient(i);
if (FirstLocale < 0)
{
FirstLocale = i;
build = tempBuild;
}
-
- //Close MPQs
- SFileCloseArchive(LocaleMpq);
}
if (FirstLocale < 0)
@@ -1364,17 +1145,9 @@ int main(int argc, char * arg[])
{
printf("Using locale: %s\n", Locales[FirstLocale]);
- // Open MPQs
- LoadLocaleMPQFile(FirstLocale);
- LoadCommonMPQFiles(build);
-
- // Extract maps
- ExtractMapsFromMpq(build);
-
- // Close MPQs
- SFileCloseArchive(WorldMpq);
- SFileCloseArchive(LocaleMpq);
+ ExtractMaps(build);
}
+ CascCloseStorage(CascStorage);
return 0;
}
diff --git a/src/tools/map_extractor/adt.cpp b/src/tools/map_extractor/adt.cpp
deleted file mode 100644
index 9260828fd41..00000000000
--- a/src/tools/map_extractor/adt.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2005-2011 MaNGOS <http://getmangos.com/>
- *
- * 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/>.
- */
-
-#define _CRT_SECURE_NO_DEPRECATE
-
-#include "adt.h"
-#include <cstring>
-
-// Helper
-int holetab_h[4] = {0x1111, 0x2222, 0x4444, 0x8888};
-int holetab_v[4] = {0x000F, 0x00F0, 0x0F00, 0xF000};
-
-u_map_fcc MHDRMagic = { {'R','D','H','M'} };
-u_map_fcc MCINMagic = { {'N','I','C','M'} };
-u_map_fcc MH2OMagic = { {'O','2','H','M'} };
-u_map_fcc MCNKMagic = { {'K','N','C','M'} };
-u_map_fcc MCVTMagic = { {'T','V','C','M'} };
-u_map_fcc MCLQMagic = { {'Q','L','C','M'} };
-
-bool isHole(int holes, int i, int j)
-{
- int testi = i / 2;
- int testj = j / 4;
- if(testi > 3) testi = 3;
- if(testj > 3) testj = 3;
- return (holes & holetab_h[testi] & holetab_v[testj]) != 0;
-}
-
-//
-// Adt file loader class
-//
-ADT_file::ADT_file()
-{
- a_grid = 0;
-}
-
-ADT_file::~ADT_file()
-{
- free();
-}
-
-void ADT_file::free()
-{
- a_grid = 0;
- FileLoader::free();
-}
-
-//
-// Adt file check function
-//
-bool ADT_file::prepareLoadedData()
-{
- // Check parent
- if (!FileLoader::prepareLoadedData())
- return false;
-
- // Check and prepare MHDR
- a_grid = (adt_MHDR*)(GetData()+8+version->size);
- if (!a_grid->prepareLoadedData())
- return false;
-
- // funny offsets calculations because there is no mapping for them and they have variable lengths
- uint8* ptr = (uint8*)a_grid + a_grid->size + 8;
- uint32 mcnk_count = 0;
- memset(cells, 0, ADT_CELLS_PER_GRID * ADT_CELLS_PER_GRID * sizeof(adt_MCNK*));
- while (ptr < GetData() + GetDataSize())
- {
- uint32 header = *(uint32*)ptr;
- uint32 size = *(uint32*)(ptr + 4);
- if (header == MCNKMagic.fcc)
- {
- cells[mcnk_count / ADT_CELLS_PER_GRID][mcnk_count % ADT_CELLS_PER_GRID] = (adt_MCNK*)ptr;
- ++mcnk_count;
- }
-
- // move to next chunk
- ptr += size + 8;
- }
-
- if (mcnk_count != ADT_CELLS_PER_GRID * ADT_CELLS_PER_GRID)
- return false;
-
- return true;
-}
-
-bool adt_MHDR::prepareLoadedData()
-{
- if (fcc != MHDRMagic.fcc)
- return false;
-
- if (size!=sizeof(adt_MHDR)-8)
- return false;
-
- // Check and prepare MCIN
- if (offsMCIN && !getMCIN()->prepareLoadedData())
- return false;
-
- // Check and prepare MH2O
- if (offsMH2O && !getMH2O()->prepareLoadedData())
- return false;
-
- return true;
-}
-
-bool adt_MCIN::prepareLoadedData()
-{
- if (fcc != MCINMagic.fcc)
- return false;
-
- // Check cells data
- for (int i=0; i<ADT_CELLS_PER_GRID;i++)
- for (int j=0; j<ADT_CELLS_PER_GRID;j++)
- if (cells[i][j].offsMCNK && !getMCNK(i,j)->prepareLoadedData())
- return false;
-
- return true;
-}
-
-bool adt_MH2O::prepareLoadedData()
-{
- if (fcc != MH2OMagic.fcc)
- return false;
-
- // Check liquid data
-// for (int i=0; i<ADT_CELLS_PER_GRID;i++)
-// for (int j=0; j<ADT_CELLS_PER_GRID;j++)
-
- return true;
-}
-
-bool adt_MCNK::prepareLoadedData()
-{
- if (fcc != MCNKMagic.fcc)
- return false;
-
- // Check height map
- if (offsMCVT && !getMCVT()->prepareLoadedData())
- return false;
- // Check liquid data
- if (offsMCLQ && !getMCLQ()->prepareLoadedData())
- return false;
-
- return true;
-}
-
-bool adt_MCVT::prepareLoadedData()
-{
- if (fcc != MCVTMagic.fcc)
- return false;
-
- if (size != sizeof(adt_MCVT)-8)
- return false;
-
- return true;
-}
-
-bool adt_MCLQ::prepareLoadedData()
-{
- if (fcc != MCLQMagic.fcc)
- return false;
-
- return true;
-}
diff --git a/src/tools/map_extractor/adt.h b/src/tools/map_extractor/adt.h
index 9f8ada77317..15145ccd5bf 100644
--- a/src/tools/map_extractor/adt.h
+++ b/src/tools/map_extractor/adt.h
@@ -54,8 +54,6 @@ class adt_MCVT
uint32 size;
public:
float height_map[(ADT_CELL_SIZE+1)*(ADT_CELL_SIZE+1)+ADT_CELL_SIZE*ADT_CELL_SIZE];
-
- bool prepareLoadedData();
};
//
@@ -84,7 +82,6 @@ public:
// == 0x0F - not show liquid
uint8 flags[ADT_CELL_SIZE][ADT_CELL_SIZE];
uint8 data[84];
- bool prepareLoadedData();
};
//
@@ -103,8 +100,15 @@ public:
uint32 iy;
uint32 nLayers;
uint32 nDoodadRefs;
- uint32 offsMCVT; // height map
- uint32 offsMCNR; // Normal vectors for each vertex
+ union
+ {
+ struct
+ {
+ uint32 offsMCVT; // height map
+ uint32 offsMCNR; // Normal vectors for each vertex
+ } offsets;
+ uint64 HighResHoles; // TODO: maybe use this?
+ } union_5_3_0;
uint32 offsMCLY; // Texture layer definitions
uint32 offsMCRF; // A list of indices into the parent file's MDDF chunk
uint32 offsMCAL; // Alpha maps for additional texture layers
@@ -130,48 +134,6 @@ public:
uint32 offsMCCV; // offsColorValues in WotLK
uint32 props;
uint32 effectId;
-
- bool prepareLoadedData();
- adt_MCVT *getMCVT()
- {
- if (offsMCVT)
- return (adt_MCVT *)((uint8 *)this + offsMCVT);
- return 0;
- }
- adt_MCLQ *getMCLQ()
- {
- if (offsMCLQ)
- return (adt_MCLQ *)((uint8 *)this + offsMCLQ);
- return 0;
- }
-};
-
-//
-// Adt file grid chunk
-//
-class adt_MCIN
-{
- union{
- uint32 fcc;
- char fcc_txt[4];
- };
- uint32 size;
-public:
- struct adt_CELLS{
- uint32 offsMCNK;
- uint32 size;
- uint32 flags;
- uint32 asyncId;
- } cells[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
-
- bool prepareLoadedData();
- // offset from begin file (used this-84)
- adt_MCNK *getMCNK(int x, int y)
- {
- if (cells[x][y].offsMCNK)
- return (adt_MCNK *)((uint8 *)this + cells[x][y].offsMCNK - 84);
- return 0;
- }
};
#define ADT_LIQUID_HEADER_FULL_LIGHT 0x01
@@ -208,8 +170,6 @@ public:
uint32 offsData2;
} liquid[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
- bool prepareLoadedData();
-
adt_liquid_header *getLiquidData(int x, int y)
{
if (liquid[x][y].used && liquid[x][y].offsData1)
@@ -262,53 +222,6 @@ public:
};
-//
-// Adt file header chunk
-//
-class ADT_file;
-class adt_MHDR
-{
- friend class ADT_file;
-
- union{
- uint32 fcc;
- char fcc_txt[4];
- };
- uint32 size;
-
- uint32 flags;
- uint32 offsMCIN; // MCIN
- uint32 offsTex; // MTEX
- uint32 offsModels; // MMDX
- uint32 offsModelsIds; // MMID
- uint32 offsMapObejcts; // MWMO
- uint32 offsMapObejctsIds; // MWID
- uint32 offsDoodsDef; // MDDF
- uint32 offsObjectsDef; // MODF
- uint32 offsMFBO; // MFBO
- uint32 offsMH2O; // MH2O
- uint32 data1;
- uint32 data2;
- uint32 data3;
- uint32 data4;
- uint32 data5;
-public:
- bool prepareLoadedData();
- adt_MCIN* getMCIN() { return offsMCIN ? (adt_MCIN *)((uint8 *)&flags+offsMCIN) : NULL; }
- adt_MH2O* getMH2O() { return offsMH2O ? (adt_MH2O *)((uint8 *)&flags+offsMH2O) : NULL; }
-};
-
-class ADT_file : public FileLoader{
-public:
- bool prepareLoadedData();
- ADT_file();
- ~ADT_file();
- void free();
-
- adt_MHDR* a_grid;
- adt_MCNK* cells[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID];
-};
-
#pragma pack(pop)
#endif
diff --git a/src/tools/map_extractor/dbcfile.cpp b/src/tools/map_extractor/dbcfile.cpp
index fc7d8d25d05..069dcd5e78a 100644
--- a/src/tools/map_extractor/dbcfile.cpp
+++ b/src/tools/map_extractor/dbcfile.cpp
@@ -31,26 +31,26 @@ bool DBCFile::open()
unsigned int na, nb, es, ss;
DWORD readBytes = 0;
- SFileReadFile(_file, header, 4, &readBytes, NULL);
+ CascReadFile(_file, header, 4, &readBytes);
if (readBytes != 4) // Number of records
return false;
if (header[0] != 'W' || header[1] != 'D' || header[2] != 'B' || header[3] != 'C')
return false;
- SFileReadFile(_file, &na, 4, &readBytes, NULL);
+ CascReadFile(_file, &na, 4, &readBytes);
if (readBytes != 4) // Number of records
return false;
- SFileReadFile(_file, &nb, 4, &readBytes, NULL);
+ CascReadFile(_file, &nb, 4, &readBytes);
if (readBytes != 4) // Number of fields
return false;
- SFileReadFile(_file, &es, 4, &readBytes, NULL);
+ CascReadFile(_file, &es, 4, &readBytes);
if (readBytes != 4) // Size of a record
return false;
- SFileReadFile(_file, &ss, 4, &readBytes, NULL);
+ CascReadFile(_file, &ss, 4, &readBytes);
if (readBytes != 4) // String size
return false;
@@ -65,7 +65,7 @@ bool DBCFile::open()
_stringTable = _data + _recordSize*_recordCount;
size_t data_size = _recordSize * _recordCount + _stringSize;
- SFileReadFile(_file, _data, data_size, &readBytes, NULL);
+ CascReadFile(_file, _data, data_size, &readBytes);
if (readBytes != data_size)
return false;
@@ -106,4 +106,3 @@ DBCFile::Iterator DBCFile::end()
assert(_data);
return Iterator(*this, _stringTable);
}
-
diff --git a/src/tools/map_extractor/dbcfile.h b/src/tools/map_extractor/dbcfile.h
index 9602182fe79..17c773fcc42 100644
--- a/src/tools/map_extractor/dbcfile.h
+++ b/src/tools/map_extractor/dbcfile.h
@@ -20,7 +20,7 @@
#define DBCFILE_H
#include <cassert>
#include <string>
-#include "StormLib.h"
+#include "CascLib.h"
class DBCFile
{
diff --git a/src/tools/map_extractor/loadlib.cpp b/src/tools/map_extractor/loadlib.cpp
index 5d1742c224e..7af56d89a0c 100644
--- a/src/tools/map_extractor/loadlib.cpp
+++ b/src/tools/map_extractor/loadlib.cpp
@@ -23,49 +23,53 @@
u_map_fcc MverMagic = { {'R','E','V','M'} };
-FileLoader::FileLoader()
+ChunkedFile::ChunkedFile()
{
data = 0;
data_size = 0;
- version = 0;
}
-FileLoader::~FileLoader()
+ChunkedFile::~ChunkedFile()
{
free();
}
-bool FileLoader::loadFile(HANDLE mpq, char* filename, bool log)
+bool ChunkedFile::loadFile(HANDLE mpq, char* filename, bool log)
{
free();
HANDLE file;
- if (!SFileOpenFileEx(mpq, filename, SFILE_OPEN_PATCHED_FILE, &file))
+ if (!CascOpenFile(mpq, filename, CASC_LOCALE_ALL, 0, &file))
{
if (log)
printf("No such file %s\n", filename);
return false;
}
- data_size = SFileGetFileSize(file, NULL);
+ data_size = CascGetFileSize(file, NULL);
data = new uint8[data_size];
- SFileReadFile(file, data, data_size, NULL/*bytesRead*/, NULL);
+ CascReadFile(file, data, data_size, NULL/*bytesRead*/);
+ parseChunks();
if (prepareLoadedData())
{
- SFileCloseFile(file);
+ CascCloseFile(file);
return true;
}
printf("Error loading %s\n", filename);
- SFileCloseFile(file);
+ CascCloseFile(file);
free();
return false;
}
-bool FileLoader::prepareLoadedData()
+bool ChunkedFile::prepareLoadedData()
{
+ FileChunk* chunk = GetChunk("MVER");
+ if (!chunk)
+ return false;
+
// Check version
- version = (file_MVER *) data;
+ file_MVER* version = chunk->As<file_MVER>();
if (version->fcc != MverMagic.fcc)
return false;
if (version->ver != FILE_FORMAT_VERSION)
@@ -73,10 +77,110 @@ bool FileLoader::prepareLoadedData()
return true;
}
-void FileLoader::free()
+void ChunkedFile::free()
{
- if (data) delete[] data;
+ for (auto chunk : chunks)
+ delete chunk.second;
+
+ chunks.clear();
+
+ delete[] data;
data = 0;
data_size = 0;
- version = 0;
+}
+
+u_map_fcc InterestingChunks[] = {
+ { 'R', 'E', 'V', 'M' },
+ { 'N', 'I', 'A', 'M' },
+ { 'O', '2', 'H', 'M' },
+ { 'K', 'N', 'C', 'M' },
+ { 'T', 'V', 'C', 'M' },
+ { 'Q', 'L', 'C', 'M' }
+};
+
+bool IsInterestingChunk(u_map_fcc const& fcc)
+{
+ for (u_map_fcc const& f : InterestingChunks)
+ if (f.fcc == fcc.fcc)
+ return true;
+
+ return false;
+}
+
+void ChunkedFile::parseChunks()
+{
+ uint8* ptr = GetData();
+ while (ptr < GetData() + GetDataSize())
+ {
+ u_map_fcc header = *(u_map_fcc*)ptr;
+ uint32 size = 0;
+ if (IsInterestingChunk(header))
+ {
+ size = *(uint32*)(ptr + 4);
+ if (size <= data_size)
+ {
+ std::swap(header.fcc_txt[0], header.fcc_txt[3]);
+ std::swap(header.fcc_txt[1], header.fcc_txt[2]);
+
+ FileChunk* chunk = new FileChunk{ ptr, size };
+ chunk->parseSubChunks();
+ chunks.insert({ std::string(header.fcc_txt, 4), chunk });
+ }
+ }
+
+ // move to next chunk
+ ptr += size + 8;
+ }
+}
+
+FileChunk* ChunkedFile::GetChunk(std::string const& name)
+{
+ auto range = chunks.equal_range(name);
+ if (std::distance(range.first, range.second) == 1)
+ return range.first->second;
+
+ return NULL;
+}
+
+FileChunk::~FileChunk()
+{
+ for (auto subchunk : subchunks)
+ delete subchunk.second;
+
+ subchunks.clear();
+}
+
+void FileChunk::parseSubChunks()
+{
+ uint8* ptr = data + 8; // skip self
+ while (ptr < data + size)
+ {
+ u_map_fcc header = *(u_map_fcc*)ptr;
+ uint32 subsize = 0;
+ if (IsInterestingChunk(header))
+ {
+ subsize = *(uint32*)(ptr + 4);
+ if (subsize < size)
+ {
+ std::swap(header.fcc_txt[0], header.fcc_txt[3]);
+ std::swap(header.fcc_txt[1], header.fcc_txt[2]);
+
+ FileChunk* chunk = new FileChunk{ ptr, subsize };
+ chunk->parseSubChunks();
+ subchunks.insert({ std::string(header.fcc_txt, 4), chunk });
+ }
+ }
+
+ // move to next chunk
+ ptr += subsize + 8;
+ }
+}
+
+FileChunk* FileChunk::GetSubChunk(std::string const& name)
+{
+ auto range = subchunks.equal_range(name);
+ if (std::distance(range.first, range.second) == 1)
+ return range.first->second;
+
+ return NULL;
}
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
new file mode 100644
index 00000000000..df7991d2ec3
--- /dev/null
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -0,0 +1,531 @@
+/*
+ * 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 DBFilesClientList_h__
+#define DBFilesClientList_h__
+
+char const* DBFilesClientList[] =
+{
+ "DBFilesClient\\CharSections.dbc",
+ "DBFilesClient\\CharHairGeosets.dbc",
+ "DBFilesClient\\TaxiPathNode.db2",
+ "DBFilesClient\\KeyChain.db2",
+ "DBFilesClient\\UiTextureAtlas.db2",
+ "DBFilesClient\\UiTextureAtlasMember.db2",
+ "DBFilesClient\\CharacterFaceBoneSet.db2",
+ "DBFilesClient\\Startup_Strings.dbc",
+ "DBFilesClient\\VideoHardware.dbc",
+ "DBFilesClient\\AreaPOI.db2",
+ "DBFilesClient\\AreaPOIState.db2",
+ "DBFilesClient\\BattlePetAbility.db2",
+ "DBFilesClient\\BattlePetAbilityEffect.db2",
+ "DBFilesClient\\BattlePetAbilityState.db2",
+ "DBFilesClient\\BattlePetAbilityTurn.db2",
+ "DBFilesClient\\BattlePetBreedQuality.db2",
+ "DBFilesClient\\BattlePetBreedState.db2",
+ "DBFilesClient\\BattlePetEffectProperties.db2",
+ "DBFilesClient\\BattlePetNPCTeamMember.db2",
+ "DBFilesClient\\BattlePetSpecies.db2",
+ "DBFilesClient\\BattlePetSpeciesState.db2",
+ "DBFilesClient\\BattlePetSpeciesXAbility.db2",
+ "DBFilesClient\\BattlePetState.db2",
+ "DBFilesClient\\BattlePetVisual.db2",
+ "DBFilesClient\\BroadcastText.db2",
+ "DBFilesClient\\Cfg_Categories.db2",
+ "DBFilesClient\\Cfg_Configs.db2",
+ "DBFilesClient\\Cfg_Regions.db2",
+ "DBFilesClient\\CharShipmentContainer.db2",
+ "DBFilesClient\\CharShipment.db2",
+ "DBFilesClient\\ChrUpgradeBucket.db2",
+ "DBFilesClient\\ChrUpgradeBucketSpell.db2",
+ "DBFilesClient\\ChrUpgradeTier.db2",
+ "DBFilesClient\\Creature.db2",
+ "DBFilesClient\\CreatureDifficulty.db2",
+ "DBFilesClient\\Curve.db2",
+ "DBFilesClient\\CurvePoint.db2",
+ "DBFilesClient\\GameObjects.db2",
+ "DBFilesClient\\GarrAbilityCategory.db2",
+ "DBFilesClient\\GarrAbility.db2",
+ "DBFilesClient\\GarrAbilityEffect.db2",
+ "DBFilesClient\\GarrBuilding.db2",
+ "DBFilesClient\\GarrBuildingDoodadSet.db2",
+ "DBFilesClient\\GarrBuildingPlotInst.db2",
+ "DBFilesClient\\GarrClassSpec.db2",
+ "DBFilesClient\\GarrEncounter.db2",
+ "DBFilesClient\\GarrEncounterXMechanic.db2",
+ "DBFilesClient\\GarrFollItemSet.db2",
+ "DBFilesClient\\GarrFollItemSetMember.db2",
+ "DBFilesClient\\GarrFollower.db2",
+ "DBFilesClient\\GarrFollowerLevelXP.db2",
+ "DBFilesClient\\GarrFollowerQuality.db2",
+ "DBFilesClient\\GarrFollowerXAbility.db2",
+ "DBFilesClient\\GarrMechanic.db2",
+ "DBFilesClient\\GarrMechanicType.db2",
+ "DBFilesClient\\GarrMission.db2",
+ "DBFilesClient\\GarrMissionReward.db2",
+ "DBFilesClient\\GarrMissionType.db2",
+ "DBFilesClient\\GarrMissionXEncounter.db2",
+ "DBFilesClient\\GarrPlotBuilding.db2",
+ "DBFilesClient\\GarrPlotInstance.db2",
+ "DBFilesClient\\GarrPlot.db2",
+ "DBFilesClient\\GarrPlotUICategory.db2",
+ "DBFilesClient\\GarrSiteLevel.db2",
+ "DBFilesClient\\GarrSiteLevelPlotInst.db2",
+ "DBFilesClient\\GarrSpecialization.db2",
+ "DBFilesClient\\GlyphExclusiveCategory.db2",
+ "DBFilesClient\\GlyphRequiredSpec.db2",
+ "DBFilesClient\\GroupFinderActivity.db2",
+ "DBFilesClient\\GroupFinderActivityGrp.db2",
+ "DBFilesClient\\GroupFinderCategory.db2",
+ "DBFilesClient\\HighlightColor.db2",
+ "DBFilesClient\\Holidays.db2",
+ "DBFilesClient\\HolidayDescriptions.db2",
+ "DBFilesClient\\HolidayNames.db2",
+ "DBFilesClient\\Item-sparse.db2",
+ "DBFilesClient\\Item.db2",
+ "DBFilesClient\\ItemAppearance.db2",
+ "DBFilesClient\\ItemBonus.db2",
+ "DBFilesClient\\ItemBonusTreeNode.db2",
+ "DBFilesClient\\ItemCurrencyCost.db2",
+ "DBFilesClient\\ItemEffect.db2",
+ "DBFilesClient\\ItemExtendedCost.db2",
+ "DBFilesClient\\ItemModifiedAppearance.db2",
+ "DBFilesClient\\ItemToBattlePetSpecies.db2",
+ "DBFilesClient\\ItemToMountSpell.db2",
+ "DBFilesClient\\ItemUpgrade.db2",
+ "DBFilesClient\\ItemXBonusTree.db2",
+ "DBFilesClient\\LanguageWords.db2",
+ "DBFilesClient\\LfgRoleRequirement.db2",
+ "DBFilesClient\\Locale.db2",
+ "DBFilesClient\\Location.db2",
+ "DBFilesClient\\MapChallengeMode.db2",
+ "DBFilesClient\\MarketingPromotionsXLocale.db2",
+ "DBFilesClient\\ModelManifest.db2",
+ "DBFilesClient\\ModelNameToManifest.db2",
+ "DBFilesClient\\Mount.db2",
+ "DBFilesClient\\OverrideSpellData.db2",
+ "DBFilesClient\\Path.db2",
+ "DBFilesClient\\PathNode.db2",
+ "DBFilesClient\\PathNodeProperty.db2",
+ "DBFilesClient\\PathProperty.db2",
+ "DBFilesClient\\PhaseXPhaseGroup.db2",
+ "DBFilesClient\\PlayerCondition.db2",
+ "DBFilesClient\\PvpItem.db2",
+ "DBFilesClient\\QuestPackageItem.db2",
+ "DBFilesClient\\QuestLine.db2",
+ "DBFilesClient\\QuestLineXQuest.db2",
+ "DBFilesClient\\QuestPOIPointCliTask.db2",
+ "DBFilesClient\\QuestObjectiveCliTask.db2",
+ "DBFilesClient\\RulesetItemUpgrade.db2",
+ "DBFilesClient\\RulesetRaidLootUpgrade.db2",
+ "DBFilesClient\\SceneScriptPackage.db2",
+ "DBFilesClient\\SceneScriptPackageMember.db2",
+ "DBFilesClient\\SceneScript.db2",
+ "DBFilesClient\\SpellActionBarPref.db2",
+ "DBFilesClient\\SpellAuraRestrictions.db2",
+ "DBFilesClient\\SpellAuraRestrictionsDifficulty.db2",
+ "DBFilesClient\\SpellCastingRequirements.db2",
+ "DBFilesClient\\SpellClassOptions.db2",
+ "DBFilesClient\\SpellEffectCameraShakes.db2",
+ "DBFilesClient\\SpellEffectGroupSize.db2",
+ "DBFilesClient\\SpellLearnSpell.db2",
+ "DBFilesClient\\SpellMechanic.db2",
+ "DBFilesClient\\SpellMisc.db2",
+ "DBFilesClient\\SpellMiscDifficulty.db2",
+ "DBFilesClient\\SpellMissileMotion.db2",
+ "DBFilesClient\\SpellMissile.db2",
+ "DBFilesClient\\SpellPower.db2",
+ "DBFilesClient\\SpellPowerDifficulty.db2",
+ "DBFilesClient\\SpellReagents.db2",
+ "DBFilesClient\\SpellRuneCost.db2",
+ "DBFilesClient\\SpellTotems.db2",
+ "DBFilesClient\\SpellVisualEffectName.db2",
+ "DBFilesClient\\SpellVisualKitAreaModel.db2",
+ "DBFilesClient\\SpellVisualKitModelAttach.db2",
+ "DBFilesClient\\SpellVisualMissile.db2",
+ "DBFilesClient\\SpellVisualKit.db2",
+ "DBFilesClient\\SpellVisual.db2",
+ "DBFilesClient\\TaxiNodes.db2",
+ "DBFilesClient\\TaxiPath.db2",
+ "DBFilesClient\\TextureFileData.db2",
+ "DBFilesClient\\Toy.db2",
+ "DBFilesClient\\Trophy.db2",
+ "DBFilesClient\\TrophyInstance.db2",
+ "DBFilesClient\\TrophyType.db2",
+ "DBFilesClient\\Vignette.db2",
+ "DBFilesClient\\WbAccessControlList.db2",
+ "DBFilesClient\\WbCertBlacklist.db2",
+ "DBFilesClient\\WbCertWhitelist.db2",
+ "DBFilesClient\\WbPermissions.db2",
+ "DBFilesClient\\WeaponTrail.db2",
+ "DBFilesClient\\WorldBossLockout.db2",
+ "DBFilesClient\\QuestV2CliTask.db2",
+ "DBFilesClient\\UiTextureKit.db2",
+ "DBFilesClient\\StringLookups.dbc",
+ "DBFilesClient\\SpellIcon.dbc",
+ "DBFilesClient\\SpellEffect.dbc",
+ "DBFilesClient\\ParticleColor.dbc",
+ "DBFilesClient\\ObjectEffectPackageElem.dbc",
+ "DBFilesClient\\ObjectEffectPackage.dbc",
+ "DBFilesClient\\ObjectEffectModifier.dbc",
+ "DBFilesClient\\ObjectEffectGroup.dbc",
+ "DBFilesClient\\ObjectEffect.dbc",
+ "DBFilesClient\\NameGen.dbc",
+ "DBFilesClient\\LoadingScreens.dbc",
+ "DBFilesClient\\ItemVisualEffects.dbc",
+ "DBFilesClient\\ItemVisuals.dbc",
+ "DBFilesClient\\ItemDisplayInfo.dbc",
+ "DBFilesClient\\HelmetGeosetVisData.dbc",
+ "DBFilesClient\\HelmetAnimScaling.dbc",
+ "DBFilesClient\\GuildColorEmblem.dbc",
+ "DBFilesClient\\GuildColorBorder.dbc",
+ "DBFilesClient\\GuildColorBackground.dbc",
+ "DBFilesClient\\GlueScreenEmote.dbc",
+ "DBFilesClient\\GameTips.dbc",
+ "DBFilesClient\\Faction.dbc",
+ "DBFilesClient\\CreatureModelData.dbc",
+ "DBFilesClient\\CreatureFamily.dbc",
+ "DBFilesClient\\CreatureDisplayInfoExtra.dbc",
+ "DBFilesClient\\CreatureDisplayInfo.dbc",
+ "DBFilesClient\\ChrSpecialization.dbc",
+ "DBFilesClient\\CharacterLoadoutItem.dbc",
+ "DBFilesClient\\CharacterLoadout.dbc",
+ "DBFilesClient\\CharStartOutfit.dbc",
+ "DBFilesClient\\CharComponentTextureSections.dbc",
+ "DBFilesClient\\CharComponentTextureLayouts.dbc",
+ "DBFilesClient\\AnimReplacementSet.dbc",
+ "DBFilesClient\\AnimReplacement.dbc",
+ "DBFilesClient\\AnimKitSegment.dbc",
+ "DBFilesClient\\AnimKitPriority.dbc",
+ "DBFilesClient\\SoundProviderPreferences.dbc",
+ "DBFilesClient\\SpamMessages.dbc",
+ "DBFilesClient\\SoundFilterElem.dbc",
+ "DBFilesClient\\SoundFilter.dbc",
+ "DBFilesClient\\Resistances.dbc",
+ "DBFilesClient\\NamesReservedLocale.dbc",
+ "DBFilesClient\\NamesReserved.dbc",
+ "DBFilesClient\\NamesProfanity.dbc",
+ "DBFilesClient\\MovieVariation.dbc",
+ "DBFilesClient\\MovieOverlays.dbc",
+ "DBFilesClient\\MovieFileData.dbc",
+ "DBFilesClient\\Movie.dbc",
+ "DBFilesClient\\ItemSubClass.dbc",
+ "DBFilesClient\\ItemClass.dbc",
+ "DBFilesClient\\ManifestInterfaceTOCData.dbc",
+ "DBFilesClient\\ManifestInterfaceData.dbc",
+ "DBFilesClient\\FactionTemplate.dbc",
+ "DBFilesClient\\FactionGroup.dbc",
+ "DBFilesClient\\ChrRaces.dbc",
+ "DBFilesClient\\ChrClasses.dbc",
+ "DBFilesClient\\ChatProfanity.dbc",
+ "DBFilesClient\\CharacterFacialHairStyles.dbc",
+ "DBFilesClient\\CharBaseSection.dbc",
+ "DBFilesClient\\CharBaseInfo.dbc",
+ "DBFilesClient\\BannedAddOns.dbc",
+ "DBFilesClient\\AnimKitConfigBoneSet.dbc",
+ "DBFilesClient\\AnimKitConfig.dbc",
+ "DBFilesClient\\AnimKit.dbc",
+ "DBFilesClient\\AnimKitBoneSet.dbc",
+ "DBFilesClient\\AnimKitBoneSetAlias.dbc",
+ "DBFilesClient\\PhaseShiftZoneSounds.dbc",
+ "DBFilesClient\\WorldChunkSounds.dbc",
+ "DBFilesClient\\WorldStateExpression.dbc",
+ "DBFilesClient\\WorldStateZoneSounds.dbc",
+ "DBFilesClient\\ZoneMusic.dbc",
+ "DBFilesClient\\ZoneIntroMusicTable.dbc",
+ "DBFilesClient\\WorldStateUI.dbc",
+ "DBFilesClient\\WorldState.dbc",
+ "DBFilesClient\\WorldMapTransforms.dbc",
+ "DBFilesClient\\WorldMapOverlay.dbc",
+ "DBFilesClient\\WorldMapContinent.dbc",
+ "DBFilesClient\\WorldMapArea.dbc",
+ "DBFilesClient\\WorldElapsedTimer.dbc",
+ "DBFilesClient\\WorldEffect.dbc",
+ "DBFilesClient\\WeaponSwingSounds2.dbc",
+ "DBFilesClient\\WeaponImpactSounds.dbc",
+ "DBFilesClient\\World_PVP_Area.dbc",
+ "DBFilesClient\\VocalUISounds.dbc",
+ "DBFilesClient\\VehicleUIIndSeat.dbc",
+ "DBFilesClient\\VehicleUIIndicator.dbc",
+ "DBFilesClient\\VehicleSeat.dbc",
+ "DBFilesClient\\Vehicle.dbc",
+ "DBFilesClient\\UnitPowerBar.dbc",
+ "DBFilesClient\\UnitCondition.dbc",
+ "DBFilesClient\\UnitBlood.dbc",
+ "DBFilesClient\\UnitBloodLevels.dbc",
+ "DBFilesClient\\TransportRotation.dbc",
+ "DBFilesClient\\TransportPhysics.dbc",
+ "DBFilesClient\\TransportAnimation.dbc",
+ "DBFilesClient\\TradeSkillCategory.dbc",
+ "DBFilesClient\\TotemCategory.dbc",
+ "DBFilesClient\\TerrainTypeSounds.dbc",
+ "DBFilesClient\\Talent.dbc",
+ "DBFilesClient\\SummonProperties.dbc",
+ "DBFilesClient\\Stationery.dbc",
+ "DBFilesClient\\SpellTargetRestrictions.dbc",
+ "DBFilesClient\\SpellSpecialUnitEffect.dbc",
+ "DBFilesClient\\SpellShapeshiftForm.dbc",
+ "DBFilesClient\\SpellShapeshift.dbc",
+ "DBFilesClient\\SpellScaling.dbc",
+ "DBFilesClient\\SpellProcsPerMinuteMod.dbc",
+ "DBFilesClient\\SpellProcsPerMinute.dbc",
+ "DBFilesClient\\SpellRange.dbc",
+ "DBFilesClient\\SpellRadius.dbc",
+ "DBFilesClient\\SpellLevels.dbc",
+ "DBFilesClient\\SpellKeyboundOverride.dbc",
+ "DBFilesClient\\SpellItemEnchantmentCondition.dbc",
+ "DBFilesClient\\SpellItemEnchantment.dbc",
+ "DBFilesClient\\SpellInterrupts.dbc",
+ "DBFilesClient\\SpellFocusObject.dbc",
+ "DBFilesClient\\SpellFlyoutItem.dbc",
+ "DBFilesClient\\SpellFlyout.dbc",
+ "DBFilesClient\\SpellEquippedItems.dbc",
+ "DBFilesClient\\SpellEffectScaling.dbc",
+ "DBFilesClient\\SpellDuration.dbc",
+ "DBFilesClient\\SpellDispelType.dbc",
+ "DBFilesClient\\SpellDescriptionVariables.dbc",
+ "DBFilesClient\\Spell.dbc",
+ "DBFilesClient\\SpellCooldowns.dbc",
+ "DBFilesClient\\SpellCategory.dbc",
+ "DBFilesClient\\SpellCategories.dbc",
+ "DBFilesClient\\SpellCastTimes.dbc",
+ "DBFilesClient\\SpellAuraVisXChrSpec.dbc",
+ "DBFilesClient\\SpellAuraVisibility.dbc",
+ "DBFilesClient\\SpellAuraOptions.dbc",
+ "DBFilesClient\\SpellActivationOverlay.dbc",
+ "DBFilesClient\\SpecializationSpells.dbc",
+ "DBFilesClient\\SoundOverride.dbc",
+ "DBFilesClient\\SoundAmbienceFlavor.dbc",
+ "DBFilesClient\\SoundAmbience.dbc",
+ "DBFilesClient\\SkillTiers.dbc",
+ "DBFilesClient\\SkillRaceClassInfo.dbc",
+ "DBFilesClient\\SkillLine.dbc",
+ "DBFilesClient\\SkillLineAbilitySortedSpell.dbc",
+ "DBFilesClient\\SkillLineAbility.dbc",
+ "DBFilesClient\\ServerMessages.dbc",
+ "DBFilesClient\\ScreenLocation.dbc",
+ "DBFilesClient\\ScreenEffect.dbc",
+ "DBFilesClient\\ScenarioEventEntry.dbc",
+ "DBFilesClient\\ScenarioStep.dbc",
+ "DBFilesClient\\Scenario.dbc",
+ "DBFilesClient\\ScalingStatDistribution.dbc",
+ "DBFilesClient\\RulesetRaidOverride.dbc",
+ "DBFilesClient\\RandPropPoints.dbc",
+ "DBFilesClient\\ResearchSite.dbc",
+ "DBFilesClient\\ResearchProject.dbc",
+ "DBFilesClient\\ResearchField.dbc",
+ "DBFilesClient\\ResearchBranch.dbc",
+ "DBFilesClient\\RacialMounts.dbc",
+ "DBFilesClient\\QuestFeedbackEffect.dbc",
+ "DBFilesClient\\QuestV2.dbc",
+ "DBFilesClient\\QuestXP.dbc",
+ "DBFilesClient\\QuestSort.dbc",
+ "DBFilesClient\\QuestPOIPoint.dbc",
+ "DBFilesClient\\QuestPOIBlob.dbc",
+ "DBFilesClient\\QuestMoneyReward.dbc",
+ "DBFilesClient\\QuestInfo.dbc",
+ "DBFilesClient\\QuestFactionReward.dbc",
+ "DBFilesClient\\PvpDifficulty.dbc",
+ "DBFilesClient\\PowerDisplay.dbc",
+ "DBFilesClient\\Phase.dbc",
+ "DBFilesClient\\PaperDollItemFrame.dbc",
+ "DBFilesClient\\PageTextMaterial.dbc",
+ "DBFilesClient\\Package.dbc",
+ "DBFilesClient\\NPCSounds.dbc",
+ "DBFilesClient\\MountType.dbc",
+ "DBFilesClient\\MountCapability.dbc",
+ "DBFilesClient\\ModifierTree.dbc",
+ "DBFilesClient\\MinorTalent.dbc",
+ "DBFilesClient\\Material.dbc",
+ "DBFilesClient\\MapDifficulty.dbc",
+ "DBFilesClient\\ManifestInterfaceItemIcon.dbc",
+ "DBFilesClient\\ManifestInterfaceActionIcon.dbc",
+ "DBFilesClient\\MailTemplate.dbc",
+ "DBFilesClient\\LockType.dbc",
+ "DBFilesClient\\Lock.dbc",
+ "DBFilesClient\\LoadingScreenTaxiSplines.dbc",
+ "DBFilesClient\\LfgDungeons.dbc",
+ "DBFilesClient\\LfgDungeonsGroupingMap.dbc",
+ "DBFilesClient\\LfgDungeonGroup.dbc",
+ "DBFilesClient\\LfgDungeonExpansion.dbc",
+ "DBFilesClient\\Languages.dbc",
+ "DBFilesClient\\JournalTierXInstance.dbc",
+ "DBFilesClient\\JournalTier.dbc",
+ "DBFilesClient\\JournalSectionXDifficulty.dbc",
+ "DBFilesClient\\JournalItemXDifficulty.dbc",
+ "DBFilesClient\\JournalInstance.dbc",
+ "DBFilesClient\\JournalEncounterXDifficulty.dbc",
+ "DBFilesClient\\JournalEncounterSection.dbc",
+ "DBFilesClient\\JournalEncounter.dbc",
+ "DBFilesClient\\JournalEncounterItem.dbc",
+ "DBFilesClient\\JournalEncounterCreature.dbc",
+ "DBFilesClient\\ItemUpgradePath.dbc",
+ "DBFilesClient\\ItemSubClassMask.dbc",
+ "DBFilesClient\\ItemSpec.dbc",
+ "DBFilesClient\\ItemSpecOverride.dbc",
+ "DBFilesClient\\ItemSetSpell.dbc",
+ "DBFilesClient\\ItemSet.dbc",
+ "DBFilesClient\\ItemRandomSuffix.dbc",
+ "DBFilesClient\\ItemRandomProperties.dbc",
+ "DBFilesClient\\ItemPurchaseGroup.dbc",
+ "DBFilesClient\\ItemPriceBase.dbc",
+ "DBFilesClient\\ItemPetFood.dbc",
+ "DBFilesClient\\ItemNameDescription.dbc",
+ "DBFilesClient\\ItemLimitCategory.dbc",
+ "DBFilesClient\\ItemGroupSounds.dbc",
+ "DBFilesClient\\ItemDisenchantLoot.dbc",
+ "DBFilesClient\\ItemDamageWand.dbc",
+ "DBFilesClient\\ItemDamageTwoHandCaster.dbc",
+ "DBFilesClient\\ItemDamageTwoHand.dbc",
+ "DBFilesClient\\ItemDamageThrown.dbc",
+ "DBFilesClient\\ItemDamageRanged.dbc",
+ "DBFilesClient\\ItemDamageOneHandCaster.dbc",
+ "DBFilesClient\\ItemDamageOneHand.dbc",
+ "DBFilesClient\\ItemDamageAmmo.dbc",
+ "DBFilesClient\\ItemBagFamily.dbc",
+ "DBFilesClient\\ItemArmorShield.dbc",
+ "DBFilesClient\\ItemArmorTotal.dbc",
+ "DBFilesClient\\ItemArmorQuality.dbc",
+ "DBFilesClient\\ImportPriceWeapon.dbc",
+ "DBFilesClient\\ImportPriceShield.dbc",
+ "DBFilesClient\\ImportPriceQuality.dbc",
+ "DBFilesClient\\ImportPriceArmor.dbc",
+ "DBFilesClient\\GuildPerkSpells.dbc",
+ "DBFilesClient\\gtSpellScaling.dbc",
+ "DBFilesClient\\gtResilienceDR.dbc",
+ "DBFilesClient\\gtRegenMPPerSpt.dbc",
+ "DBFilesClient\\gtOCTLevelExperience.dbc",
+ "DBFilesClient\\gtOCTHpPerStamina.dbc",
+ "DBFilesClient\\gtOCTClassCombatRatingScalar.dbc",
+ "DBFilesClient\\gtOCTBaseMPByClass.dbc",
+ "DBFilesClient\\gtOCTBaseHPByClass.dbc",
+ "DBFilesClient\\gtNPCManaCostScaler.dbc",
+ "DBFilesClient\\gtItemSocketCostPerLevel.dbc",
+ "DBFilesClient\\gtChanceToSpellCritBase.dbc",
+ "DBFilesClient\\gtChanceToSpellCrit.dbc",
+ "DBFilesClient\\gtChanceToMeleeCritBase.dbc",
+ "DBFilesClient\\gtChanceToMeleeCrit.dbc",
+ "DBFilesClient\\gtCombatRatings.dbc",
+ "DBFilesClient\\gtBattlePetXP.dbc",
+ "DBFilesClient\\gtBattlePetTypeDamageMod.dbc",
+ "DBFilesClient\\gtBarberShopCostBase.dbc",
+ "DBFilesClient\\gtArmorMitigationByLvl.dbc",
+ "DBFilesClient\\GMTicketCategory.dbc",
+ "DBFilesClient\\GMSurveySurveys.dbc",
+ "DBFilesClient\\GMSurveyQuestions.dbc",
+ "DBFilesClient\\GMSurveyCurrentSurvey.dbc",
+ "DBFilesClient\\GMSurveyAnswers.dbc",
+ "DBFilesClient\\GlyphSlot.dbc",
+ "DBFilesClient\\GlyphProperties.dbc",
+ "DBFilesClient\\GemProperties.dbc",
+ "DBFilesClient\\GarrUiAnimRaceInfo.dbc",
+ "DBFilesClient\\GarrUiAnimClassInfo.dbc",
+ "DBFilesClient\\GameTables.dbc",
+ "DBFilesClient\\GameObjectDisplayInfo.dbc",
+ "DBFilesClient\\GameObjectDiffAnimMap.dbc",
+ "DBFilesClient\\GameObjectArtKit.dbc",
+ "DBFilesClient\\FriendshipReputation.dbc",
+ "DBFilesClient\\FriendshipRepReaction.dbc",
+ "DBFilesClient\\FootstepTerrainLookup.dbc",
+ "DBFilesClient\\CriteriaTree.dbc",
+ "DBFilesClient\\Exhaustion.dbc",
+ "DBFilesClient\\EnvironmentalDamage.dbc",
+ "DBFilesClient\\EmotesText.dbc",
+ "DBFilesClient\\EmotesTextSound.dbc",
+ "DBFilesClient\\EmotesTextData.dbc",
+ "DBFilesClient\\Emotes.dbc",
+ "DBFilesClient\\DurabilityQuality.dbc",
+ "DBFilesClient\\DurabilityCosts.dbc",
+ "DBFilesClient\\DungeonMapChunk.dbc",
+ "DBFilesClient\\DungeonMap.dbc",
+ "DBFilesClient\\DungeonEncounter.dbc",
+ "DBFilesClient\\Difficulty.dbc",
+ "DBFilesClient\\DestructibleModelData.dbc",
+ "DBFilesClient\\DeathThudLookups.dbc",
+ "DBFilesClient\\CurrencyCategory.dbc",
+ "DBFilesClient\\CurrencyTypes.dbc",
+ "DBFilesClient\\CriteriaTreeXEffect.dbc",
+ "DBFilesClient\\Criteria.dbc",
+ "DBFilesClient\\CreatureType.dbc",
+ "DBFilesClient\\CreatureSpellData.dbc",
+ "DBFilesClient\\CreatureSoundData.dbc",
+ "DBFilesClient\\CreatureMovementInfo.dbc",
+ "DBFilesClient\\CreatureImmunities.dbc",
+ "DBFilesClient\\CombatCondition.dbc",
+ "DBFilesClient\\CinematicSequences.dbc",
+ "DBFilesClient\\CinematicCamera.dbc",
+ "DBFilesClient\\ChrClassesXPowerTypes.dbc",
+ "DBFilesClient\\ChatChannels.dbc",
+ "DBFilesClient\\CharTitles.dbc",
+ "DBFilesClient\\CastableRaidBuffs.dbc",
+ "DBFilesClient\\CameraShakes.dbc",
+ "DBFilesClient\\CameraMode.dbc",
+ "DBFilesClient\\BattlemasterList.dbc",
+ "DBFilesClient\\BarberShopStyle.dbc",
+ "DBFilesClient\\BankBagSlotPrices.dbc",
+ "DBFilesClient\\AuctionHouse.dbc",
+ "DBFilesClient\\ArmorLocation.dbc",
+ "DBFilesClient\\AreaTriggerCylinder.dbc",
+ "DBFilesClient\\AreaTriggerSphere.dbc",
+ "DBFilesClient\\AreaTriggerBox.dbc",
+ "DBFilesClient\\AreaTriggerActionSet.dbc",
+ "DBFilesClient\\AreaTrigger.dbc",
+ "DBFilesClient\\AreaAssignment.dbc",
+ "DBFilesClient\\AreaGroup.dbc",
+ "DBFilesClient\\Achievement_Category.dbc",
+ "DBFilesClient\\Achievement.dbc",
+ "DBFilesClient\\DeclinedWordCases.dbc",
+ "DBFilesClient\\DeclinedWord.dbc",
+ "DBFilesClient\\DeviceBlacklist.db2",
+ "DBFilesClient\\DriverBlacklist.db2",
+ "DBFilesClient\\DeviceDefaultSettings.db2",
+ "DBFilesClient\\WindSettings.db2",
+ "DBFilesClient\\ZoneLightPoint.dbc",
+ "DBFilesClient\\ZoneLight.dbc",
+ "DBFilesClient\\WMOAreaTable.dbc",
+ "DBFilesClient\\Weather.dbc",
+ "DBFilesClient\\TerrainType.dbc",
+ "DBFilesClient\\TerrainMaterial.dbc",
+ "DBFilesClient\\SpellChainEffects.dbc",
+ "DBFilesClient\\SoundEntriesFallbacks.dbc",
+ "DBFilesClient\\SoundEmitters.dbc",
+ "DBFilesClient\\SoundEmitterPillPoints.dbc",
+ "DBFilesClient\\SoundBusName.dbc",
+ "DBFilesClient\\LiquidType.dbc",
+ "DBFilesClient\\LiquidObject.dbc",
+ "DBFilesClient\\LiquidMaterial.dbc",
+ "DBFilesClient\\LightSkybox.dbc",
+ "DBFilesClient\\Light.dbc",
+ "DBFilesClient\\GroundEffectTexture.dbc",
+ "DBFilesClient\\GroundEffectDoodad.dbc",
+ "DBFilesClient\\FootprintTextures.dbc",
+ "DBFilesClient\\FeedbackPath.dbc",
+ "DBFilesClient\\Map.dbc",
+ "DBFilesClient\\LightParams.dbc",
+ "DBFilesClient\\LightData.dbc",
+ "DBFilesClient\\AreaTable.dbc",
+ "DBFilesClient\\AnimationData.dbc",
+ "DBFilesClient\\SoundEntries.dbc",
+ "DBFilesClient\\SoundEntriesAdvanced.dbc",
+ "DBFilesClient\\SoundBus.dbc",
+ "DBFilesClient\\ModelFileData.dbc",
+ "DBFilesClient\\ManifestMP3.dbc",
+ "DBFilesClient\\FileData.dbc",
+ nullptr // terminator
+};
+
+#endif // DBFilesClientList_h__
diff --git a/src/tools/map_extractor/loadlib/loadlib.h b/src/tools/map_extractor/loadlib/loadlib.h
index 2bea59e2c97..873aa3346b6 100644
--- a/src/tools/map_extractor/loadlib/loadlib.h
+++ b/src/tools/map_extractor/loadlib/loadlib.h
@@ -19,7 +19,9 @@
#ifndef LOAD_LIB_H
#define LOAD_LIB_H
-#include "StormLib.h"
+#include "CascLib.h"
+#include <map>
+#include <string>
#ifdef _WIN32
typedef __int64 int64;
@@ -71,21 +73,41 @@ struct file_MVER
};
-class FileLoader{
+class FileChunk
+{
+public:
+ ~FileChunk();
+
+ uint8* data;
+ uint32 size;
+
+ template<class T>
+ T* As() { return (T*)data; }
+ void parseSubChunks();
+ std::multimap<std::string, FileChunk*> subchunks;
+ FileChunk* GetSubChunk(std::string const& name);
+};
+
+class ChunkedFile
+{
+public:
uint8 *data;
uint32 data_size;
-public:
- virtual bool prepareLoadedData();
- uint8 *GetData() {return data;}
- uint32 GetDataSize() {return data_size;}
- file_MVER *version;
- FileLoader();
- ~FileLoader();
+ uint8 *GetData() { return data; }
+ uint32 GetDataSize() { return data_size; }
+
+ ChunkedFile();
+ virtual ~ChunkedFile();
+ bool prepareLoadedData();
bool loadFile(HANDLE mpq, char *filename, bool log = true);
- virtual void free();
-};
+ void free();
+ void parseChunks();
+ std::multimap<std::string, FileChunk*> chunks;
+ FileChunk* GetChunk(std::string const& name);
+};
+
#pragma pack(pop)
#endif
diff --git a/src/tools/map_extractor/wdt.cpp b/src/tools/map_extractor/wdt.cpp
deleted file mode 100644
index 59444b46b88..00000000000
--- a/src/tools/map_extractor/wdt.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2005-2011 MaNGOS <http://getmangos.com/>
- *
- * 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/>.
- */
-
-#define _CRT_SECURE_NO_DEPRECATE
-
-#include "wdt.h"
-
-u_map_fcc MWMOMagic = { {'O', 'M', 'W', 'M'} };
-u_map_fcc MPHDMagic = { {'D', 'H', 'P', 'M'} };
-u_map_fcc MAINMagic = { {'N', 'I', 'A', 'M'} };
-
-bool wdt_MWMO::prepareLoadedData()
-{
- if (fcc != MWMOMagic.fcc)
- return false;
- return true;
-}
-
-bool wdt_MPHD::prepareLoadedData()
-{
- if (fcc != MPHDMagic.fcc)
- return false;
- return true;
-}
-
-bool wdt_MAIN::prepareLoadedData()
-{
- if (fcc != MAINMagic.fcc)
- return false;
- return true;
-}
-
-WDT_file::WDT_file()
-{
- mphd = 0;
- main = 0;
- wmo = 0;
-}
-
-WDT_file::~WDT_file()
-{
- free();
-}
-
-void WDT_file::free()
-{
- mphd = 0;
- main = 0;
- wmo = 0;
- FileLoader::free();
-}
-
-bool WDT_file::prepareLoadedData()
-{
- // Check parent
- if (!FileLoader::prepareLoadedData())
- return false;
-
- mphd = (wdt_MPHD *)((uint8*)version+version->size+8);
- if (!mphd->prepareLoadedData())
- return false;
- main = (wdt_MAIN *)((uint8*)mphd + mphd->size+8);
- if (!main->prepareLoadedData())
- return false;
- wmo = (wdt_MWMO *)((uint8*)main+ main->size+8);
- if (!wmo->prepareLoadedData())
- wmo = NULL; // optional as of cataclysm
- return true;
-}
diff --git a/src/tools/map_extractor/wdt.h b/src/tools/map_extractor/wdt.h
index d897cbfd854..ac26e7daade 100644
--- a/src/tools/map_extractor/wdt.h
+++ b/src/tools/map_extractor/wdt.h
@@ -27,64 +27,24 @@
#pragma pack(push, 1)
-class wdt_MWMO{
- union{
- uint32 fcc;
- char fcc_txt[4];
- };
-public:
- uint32 size;
- bool prepareLoadedData();
-};
-
-class wdt_MPHD{
- union{
- uint32 fcc;
- char fcc_txt[4];
- };
-public:
- uint32 size;
- uint32 data1;
- uint32 data2;
- uint32 data3;
- uint32 data4;
- uint32 data5;
- uint32 data6;
- uint32 data7;
- uint32 data8;
- bool prepareLoadedData();
-};
-
-class wdt_MAIN{
- union{
+class wdt_MAIN
+{
+ union
+ {
uint32 fcc;
char fcc_txt[4];
};
public:
uint32 size;
- struct adtData{
+ struct adtData
+ {
uint32 flag;
uint32 data1;
} adt_list[64][64];
-
- bool prepareLoadedData();
-};
-
-class WDT_file : public FileLoader{
-public:
- bool prepareLoadedData();
-
- WDT_file();
- ~WDT_file();
- void free();
-
- wdt_MPHD *mphd;
- wdt_MAIN *main;
- wdt_MWMO *wmo;
};
#pragma pack(pop)
-#endif \ No newline at end of file
+#endif
diff --git a/src/tools/vmap4_assembler/CMakeLists.txt b/src/tools/vmap4_assembler/CMakeLists.txt
index 041d44e014c..14d5c5e61ba 100644
--- a/src/tools/vmap4_assembler/CMakeLists.txt
+++ b/src/tools/vmap4_assembler/CMakeLists.txt
@@ -21,7 +21,7 @@ include_directories(
)
add_executable(vmap4assembler VMapAssembler.cpp)
-add_dependencies(vmap4assembler storm)
+add_dependencies(vmap4assembler casc)
target_link_libraries(vmap4assembler
collision
diff --git a/src/tools/vmap4_extractor/CMakeLists.txt b/src/tools/vmap4_extractor/CMakeLists.txt
index a98cc55666c..f1c2084b00b 100644
--- a/src/tools/vmap4_extractor/CMakeLists.txt
+++ b/src/tools/vmap4_extractor/CMakeLists.txt
@@ -22,7 +22,7 @@ if( NOT MSVC )
endif()
include_directories(
- ${CMAKE_SOURCE_DIR}/dep/StormLib/src
+ ${CMAKE_SOURCE_DIR}/dep/CascLib/src
)
add_executable(vmap4extractor ${sources})
@@ -30,10 +30,10 @@ add_executable(vmap4extractor ${sources})
target_link_libraries(vmap4extractor
${BZIP2_LIBRARIES}
${ZLIB_LIBRARIES}
- storm
+ casc
)
-add_dependencies(vmap4extractor storm)
+add_dependencies(vmap4extractor casc)
if( UNIX )
install(TARGETS vmap4extractor DESTINATION bin)