From e95eb3354d4c4a4c2ae03cef7eebad90e71a6daf Mon Sep 17 00:00:00 2001 From: superp00t Date: Tue, 17 Dec 2024 00:28:01 -0500 Subject: [PATCH] feat(profile): add more work related to console --- .../ida/batch/import_data_types.idc | 409 ++ .../ida/batch/import_functions.idc | 36 +- .../ida/batch/import_symbols.idc | 393 +- profile/3.3.5a-windows-386/ida/test.txt | 0 .../include/bc/file/filesystem.h | 82 + .../include/bc/file/stream.h | 10 + .../3.3.5a-windows-386/include/bc/osfile.h | 8 + .../include/bc/systemfile/stacked.h | 10 + .../include/console/command.h | 21 + .../3.3.5a-windows-386/include/console/line.h | 24 + .../include/console/types.h | 51 + .../3.3.5a-windows-386/include/console/var.h | 28 + .../3.3.5a-windows-386/include/db/clientdb.h | 35 + .../3.3.5a-windows-386/include/db/idatabase.h | 19 + .../3.3.5a-windows-386/include/db/records.h | 6331 +++++++++++++++++ .../3.3.5a-windows-386/include/gx/format.h | 2 +- profile/3.3.5a-windows-386/include/main.h | 13 + .../3.3.5a-windows-386/include/storm/log.h | 8 + .../3.3.5a-windows-386/include/text/font.h | 10 + .../symbol/backdropgenerator/func.sym | 5 + profile/3.3.5a-windows-386/symbol/bc/func.sym | 14 + .../3.3.5a-windows-386/symbol/bc/label.sym | 1 + .../3.3.5a-windows-386/symbol/client/func.sym | 2 +- .../symbol/console/func.sym | 97 +- .../symbol/console/label.sym | 80 +- .../3.3.5a-windows-386/symbol/cvar/func.sym | 20 + .../3.3.5a-windows-386/symbol/cvar/label.sym | 23 + .../symbol/datastore/func.sym | 2 +- profile/3.3.5a-windows-386/symbol/db/func.sym | 12 + .../3.3.5a-windows-386/symbol/db/label.sym | 237 + .../symbol/framescript/func.sym | 13 +- profile/3.3.5a-windows-386/symbol/gx/func.sym | 1 + .../symbol/gxdevice/func.sym | 5 +- .../symbol/gxdevice/label.sym | 3 +- .../3.3.5a-windows-386/symbol/gxu/func.sym | 1 + profile/3.3.5a-windows-386/symbol/main.sym | 565 +- profile/3.3.5a-windows-386/symbol/os/func.sym | 12 +- .../symbol/scriptregion/func.sym | 1 + .../symbol/shadereffect/func.sym | 1 + .../symbol/shadereffect/label.sym | 1 + .../symbol/simplefontstring/func.sym | 2 + .../symbol/simpleframe/func.sym | 2 + .../symbol/simpleregion/func.sym | 9 + .../3.3.5a-windows-386/symbol/storm/func.sym | 23 +- .../symbol/textblock/func.sym | 10 +- .../3.3.5a-windows-386/symbol/utf/func.sym | 1 + .../3.3.5a-windows-386/symbol/utf/label.sym | 1 + profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 97306 -> 105858 bytes profile/3.3.5a-windows-386/x64dbg/types.json | 799 ++- 49 files changed, 9188 insertions(+), 245 deletions(-) create mode 100644 profile/3.3.5a-windows-386/ida/test.txt create mode 100644 profile/3.3.5a-windows-386/include/bc/file/filesystem.h create mode 100644 profile/3.3.5a-windows-386/include/bc/file/stream.h create mode 100644 profile/3.3.5a-windows-386/include/bc/osfile.h create mode 100644 profile/3.3.5a-windows-386/include/bc/systemfile/stacked.h create mode 100644 profile/3.3.5a-windows-386/include/console/command.h create mode 100644 profile/3.3.5a-windows-386/include/console/line.h create mode 100644 profile/3.3.5a-windows-386/include/console/types.h create mode 100644 profile/3.3.5a-windows-386/include/console/var.h create mode 100644 profile/3.3.5a-windows-386/include/db/clientdb.h create mode 100644 profile/3.3.5a-windows-386/include/db/idatabase.h create mode 100644 profile/3.3.5a-windows-386/include/db/records.h create mode 100644 profile/3.3.5a-windows-386/include/storm/log.h create mode 100644 profile/3.3.5a-windows-386/include/text/font.h create mode 100644 profile/3.3.5a-windows-386/symbol/backdropgenerator/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/bc/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/bc/label.sym create mode 100644 profile/3.3.5a-windows-386/symbol/cvar/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/cvar/label.sym create mode 100644 profile/3.3.5a-windows-386/symbol/db/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/db/label.sym create mode 100644 profile/3.3.5a-windows-386/symbol/scriptregion/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/shadereffect/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/shadereffect/label.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simpleframe/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simpleregion/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/utf/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/utf/label.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc index f008824..64614fe 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc @@ -6,19 +6,44 @@ static import_data_types() { apply_type(0x00401030, "void __stdcall func(void* ptr)"); apply_type(0x00408070, "void __stdcall func(float* minX, float* maxX, float* minY, float* maxY, float* minZ, float* maxZ)"); apply_type(0x00409670, "void __thiscall func(CGxDevice* this)"); + apply_type(0x0042D440, "int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)"); apply_type(0x0047B6F0, "int32_t __stdcall func(CMDOPT)"); apply_type(0x0047B700, "char* __stdcall func(CMDOPT)"); apply_type(0x0047B720, "int32_t __stdcall func()"); + apply_type(0x0047B9E0, "int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)"); apply_type(0x004804F0, "void __cdecl func(EvtContext* context, EVENTID id, void* handler, void* param, float priority)"); apply_type(0x004806A0, "int32_t __cdecl func(EvtContext* context, EVENTID id, void *data, size_t bytes)"); + apply_type(0x00482C20, "void __thiscall func(CSimpleRegion* this)"); + apply_type(0x00483910, "void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)"); + apply_type(0x00487A10, "void __thiscall func(CSimpleRegion* this, CImVector* color)"); + apply_type(0x00487AB0, "void __thiscall func(CSimpleRegion* this, CImVector* color)"); + apply_type(0x00487BF0, "void __thiscall func(CSimpleRegion* this)"); + apply_type(0x00487C40, "void __thiscall func(CSimpleRegion* this)"); + apply_type(0x00487CA0, "void __thiscall func(CSimpleRegion* this)"); + apply_type(0x00487D70, "void __thiscall func(CSimpleRegion* this, bool a2)"); + apply_type(0x004880E0, "void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)"); + apply_type(0x004881D0, "void __thiscall func(CSimpleRegion* this)"); + apply_type(0x00488310, "void __thiscall func(CScriptRegion* this)"); + apply_type(0x0048D800, "int32_t __stdcall func(lua_State* L)"); + apply_type(0x0048EA10, "void __thiscall func(CSimpleFrame* this, uint8_t alpha)"); apply_type(0x00494EE0, "int32_t __thiscall func(CFrameStrata* this, int32_t a2)"); apply_type(0x00494F30, "void __thiscall func(CFrameStrata* this)"); + apply_type(0x0049F9E0, "void __stdcall func(lua_State* L)"); + apply_type(0x004A2630, "void __thiscall func(CBackdropGenerator* this, CImVector* borderColor)"); + apply_type(0x004A29D0, "void __thiscall func(CBackdropGenerator* this, CRect*)"); + apply_type(0x004A2D40, "void __thiscall func(CBackdropGenerator* this)"); + apply_type(0x004A2E00, "void __thiscall func(CBackdropGenerator* this, CSimpleFrame* a1)"); apply_type(0x004B5510, "int32_t __stdcall func(uint32_t width, uint32_t height)"); apply_type(0x004B7220, "MipBits* __stdcall func(PIXEL_FORMAT format, uint32_t width, uint32_t height)"); apply_type(0x004B7300, "void func(MipBits* image)"); apply_type(0x004B78A0, "int32_t __usercall func@(char* ext@, char* filename, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, PIXEL_FORMAT* texFormat, int32_t* isOpaque@, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)"); apply_type(0x004B8070, "int32_t __usercall func@(char* ext@, char* filename@, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, uint32_t* isOpaque, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)"); apply_type(0x004B81D0, "MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)"); + apply_type(0x004BD9D0, "CGxFont* __stdcall func(HTEXTFONT font)"); + apply_type(0x004BDAA0, "HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)"); + apply_type(0x004BDBF0, "void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)"); + apply_type(0x004BDD80, "float __stdcall func(HTEXTFONT fontHandle, char* text, float a3, float a4, C2Vector* a5, float a6, float a7, uint32_t flags)"); + apply_type(0x004BE9C0, "HTEXTFONT __stdcall func(char* fontName, uint32_t fontFlags, float fontHeight)"); apply_type(0x004C4B80, "void __thiscall func(TSGrowableArray_C3Vector* this, uint32_t count)"); apply_type(0x00532AF0, "CGxCaps* __thiscall func(CGxDevice* this)"); apply_type(0x0057FDD0, "void __thiscall func(TSGrowableArray_C2Vector* this, uint32_t count)"); @@ -26,6 +51,7 @@ static import_data_types() { apply_type(0x00616800, "void __stdcall func(CURSORMODE mode)"); apply_type(0x00616CA0, "void __thiscall func(TSGrowableArray_CImVector* this, uint32_t count)"); apply_type(0x00681630, "void __stdcall func(CGxQuery** query, EGxQueryType type)"); + apply_type(0x006817C0, "void __stdcall func()"); apply_type(0x00681A60, "void __stdcall func()"); apply_type(0x00681AB0, "void __stdcall func(uint32_t indexCount, uint16_t* indices)"); apply_type(0x00681B00, "void __stdcall func(CGxBuf* buf, EGxVertexBufferFormat format)"); @@ -64,6 +90,7 @@ static import_data_types() { apply_type(0x00683640, "void __thiscall func(CGxDevice* this, int32_t visible)"); apply_type(0x00683650, "uint32_t* __thiscall func(CGxDevice* this)"); apply_type(0x00683660, "void __thiscall func(CGxDevice* this, float depth)"); + apply_type(0x00683670, "void __stdcall func()"); apply_type(0x006840F0, "int32_t __thiscall func(CGxDevice* this, CGxFormat* format)"); apply_type(0x00684170, "void __thiscall func(CGxDevice* this, float gamma)"); apply_type(0x00684190, "int32_t __thiscall func(CGxDevice* this, CGxGammaRamp* ramp)"); @@ -212,10 +239,79 @@ static import_data_types() { apply_type(0x006AFF10, "int32_t __thiscall func(CBLPFile* this, char* filename)"); apply_type(0x006AFFD0, "int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)"); apply_type(0x006BF4C0, "void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ, C44Matrix* dst)"); + apply_type(0x00763680, "void __stdcall func(CONSOLELINE* node)"); + apply_type(0x00763730, "void __stdcall func(char* text)"); + apply_type(0x007637D0, "void __fastcall func(CONSOLELINE* lineptr, uint32_t chars)"); + apply_type(0x00763830, "void __stdcall func()"); + apply_type(0x00763860, "void __stdcall func()"); + apply_type(0x007639A0, "int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)"); + apply_type(0x007639D0, "int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)"); + apply_type(0x00763A60, "void __stdcall func(CONSOLELINE* lineptr@, char* command)"); + apply_type(0x00763AB0, "void __thiscall func(CONSOLELINE* this)"); + apply_type(0x00763B10, "void __thiscall func(CONSOLELINE* this)"); + apply_type(0x00763B40, "void __thiscall func(CONSOLELINE* this)"); + apply_type(0x00763B90, "void __thiscall func(CONSOLELINE* this)"); + apply_type(0x00763BE0, "int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)"); + apply_type(0x00763C50, "void __stdcall func()"); + apply_type(0x00763D60, "int32_t __stdcall func(void* param)"); + apply_type(0x00763DF0, "void __stdcall func()"); + apply_type(0x00764040, "void __stdcall func()"); + apply_type(0x007641A0, "void ___stdcall func(C3Vector* caretpos)"); + apply_type(0x007643F0, "void __stdcall func()"); + apply_type(0x00764520, "CONSOLELINE* __stdcall func()"); + apply_type(0x007645E0, "void __stdcall func(void* param, RECTF* rect, RECTF* visible, float elapsedSec)"); + apply_type(0x00764790, "CONSOLELINE* __stdcall func(float y)"); + apply_type(0x00764800, "void __stdcall func(char* characters)"); + apply_type(0x00764990, "int32_t __stdcall func(EVENT_DATA_CHAR* data, void* param)"); + apply_type(0x00764A10, "int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)"); + apply_type(0x00764B90, "int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)"); + apply_type(0x00765270, "void __stdcall func(char* str, COLOR_T color)"); + apply_type(0x007653B0, "void __stdcall func(char* str, COLOR_T color, ...)"); + apply_type(0x007658A0, "void __stdcall func(char* commandLine, int32_t addToHistory)"); + apply_type(0x007659C0, "int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)"); + apply_type(0x00765AF0, "int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)"); + apply_type(0x00765FF0, "void __stdcall func()"); + apply_type(0x00766140, "void __stdcall func()"); + apply_type(0x00766400, "int32_t __stdcall func(HOSFILE file)"); + apply_type(0x00766530, "int32_t __stdcall func(char* filename)"); + apply_type(0x00766640, "bool __stdcall func(char* name, char* value, void* param)"); + apply_type(0x007668C0, "bool __thiscall func(CVar* this, char* value, bool setValue, bool setReset, bool setDefault, bool a6)"); + apply_type(0x00767030, "int32_t __stdcall func(uint32_t a1, uint32_t a2, void* callback, void* param)"); + apply_type(0x00767100, "void __stdcall func()"); + apply_type(0x007673F0, "void __stdcall func()"); + apply_type(0x00767FC0, "CVar* __stdcall func(char* name, char* help, uint32_t flags, const char* value, void* fcn, uint32_t category, bool a7, void* arg, bool a9)"); + apply_type(0x00768340, "void __stdcall func(char* filename)"); + apply_type(0x00768410, "int32_t __stdcall func(char* command, char* arguments)"); + apply_type(0x00768440, "char* __stdcall func(uint32_t index)"); + apply_type(0x007689E0, "void __stdcall func(char* command)"); + apply_type(0x00768A20, "int32_t __stdcall func(char* partial, char** previous, int32_t direction)"); + apply_type(0x00769100, "int32_t __stdcall func(char* command, COMMANDHANDLER handler, CATEGORY category, char* helpText)"); + apply_type(0x00769230, "int32_t __stdcall func()"); + apply_type(0x00769240, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x007692D0, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769360, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x007693B0, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769520, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769550, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769580, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x007695B0, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x007695E0, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769610, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769650, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x007696A0, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769810, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769830, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769860, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769890, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x00769C00, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x0076A220, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x0076A580, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x0076AB80, "int32_t __stdcall func(char* title, int32_t multithreaded)"); apply_type(0x0076E4A0, "void __stdcall func(uint32_t flags, uint8_t changeMask)"); apply_type(0x0076E540, "void* __stdcall func(uint32_t bytes, char* filename, int32_t linenumber, uint32_t flags)"); apply_type(0x0076E5A0, "int32_t __stdcall func(void* ptr, char* filename, int32_t linenumber, uint32_t flags)"); apply_type(0x0076E5E0, "void* __stdcall func(void* ptr, uint32_t bytes, char* filename, int32_t linenumber, uint32_t flags)"); + apply_type(0x0076EE30, "int32_t __stdcall func(char* str)"); apply_type(0x0076F070, "int32_t __stdcall func(char* dest, size_t maxchars, char* format, ...)"); apply_type(0x00773590, "int32_t __stdcall func(ARGLIST* listptr, uint32_t numargs)"); apply_type(0x00773890, "int32_t __stdcall func(char* cmdline, int32_t skipprogname, CMDEXTRACALLBACK extracallback, CMDERRORCALLBACK errorcallback)"); @@ -224,6 +320,7 @@ static import_data_types() { apply_type(0x00774630, "void __thiscall func(SCritSect *this)"); apply_type(0x00774640, "void __thiscall func(SCritSect *this)"); apply_type(0x00774650, "void __thiscall func(SCritSect *this)"); + apply_type(0x007757E0, "int32_t __stdcall func(char* filename, uint32_t flags, HSLOG* log)"); apply_type(0x00777420, "void __stdcall func(HSRGN handle, RECTF* rect, void* param, int32_t combinemode)"); apply_type(0x00777590, "void __stdcall func(HSRGN handle, RECTF* rect)"); apply_type(0x00777940, "void __stdcall func(HSRGN handle)"); @@ -263,8 +360,12 @@ static import_data_types() { apply_type(0x0077C700, "void __stdcall func(BigData* a, BigData* b, BigData* c)"); apply_type(0x0077C720, "void __stdcall func(BigBuffer* a, BigBuffer* b, BigBuffer* c, BigBuffer* d, BigStack* stack)"); apply_type(0x0077C980, "void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)"); + apply_type(0x00818070, "void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)"); + apply_type(0x00819830, "void __thiscall func(FrameScript_Object* this)"); apply_type(0x00819EA0, "void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)"); apply_type(0x0086E200, "void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)"); + apply_type(0x008A1420, "bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)"); + apply_type(0x0095BFB0, "int32_t __stdcall func()"); apply_type(0x0095F3A0, "void __thiscall func(CSimpleModel* this)"); apply_type(0x0095F420, "FrameScript_Object__ScriptIx* __thiscall func(CSimpleModel* this, char* name, FrameScript_Object__ScriptData* data)"); apply_type(0x0095F4D0, "void __stdcall func(CM2Model* model, void* arg)"); @@ -311,11 +412,257 @@ static import_data_types() { apply_type(0x00961470, "int32_t __stdcall func(lua_State* L)"); apply_type(0x009614B0, "int32_t __stdcall func(lua_State* L)"); apply_type(0x009AD000, "void __thiscall func(DayNight__DNGlare* this, char* a1)"); + apply_type(0x009E9EC8, "uint32_t[7]"); apply_type(0x00A2DDC0, "CGxDevice__vtable"); + apply_type(0x00AB90AC, "Blizzard__File__Filesystem*"); apply_type(0x00AC1B9C, "TSExplicitList_CILayer"); apply_type(0x00AD2808, "char*[53]"); + apply_type(0x00AD305C, "WowClientDB_AchievementRec"); + apply_type(0x00AD3080, "WowClientDB_Achievement_CriteriaRec"); + apply_type(0x00AD30A4, "WowClientDB_Achievement_CategoryRec"); + apply_type(0x00AD30C8, "WowClientDB_AnimationDataRec"); + apply_type(0x00AD30EC, "WowClientDB_AreaGroupRec"); + apply_type(0x00AD3110, "WowClientDB_AreaPOIRec"); + apply_type(0x00AD3134, "WowClientDB_AreaTableRec"); + apply_type(0x00AD3158, "WowClientDB_AreaTriggerRec"); + apply_type(0x00AD317C, "WowClientDB_AttackAnimKitsRec"); + apply_type(0x00AD31A0, "WowClientDB_AttackAnimTypesRec"); + apply_type(0x00AD31C4, "WowClientDB_AuctionHouseRec"); + apply_type(0x00AD31E8, "WowClientDB_BankBagSlotPricesRec"); + apply_type(0x00AD320C, "WowClientDB_BannedAddOnsRec"); + apply_type(0x00AD3230, "WowClientDB_BarberShopStyleRec"); + apply_type(0x00AD3254, "WowClientDB_BattlemasterListRec"); + apply_type(0x00AD3278, "WowClientDB_CameraShakesRec"); + apply_type(0x00AD329C, "WowClientDB_Cfg_CategoriesRec"); + apply_type(0x00AD32C0, "WowClientDB_Cfg_ConfigsRec"); + apply_type(0x00AD32E4, "WowClientDB_CharBaseInfoRec"); + apply_type(0x00AD3308, "WowClientDB_CharHairGeosetsRec"); + apply_type(0x00AD332C, "WowClientDB_CharSectionsRec"); + apply_type(0x00AD3350, "WowClientDB_CharStartOutfitRec"); + apply_type(0x00AD3374, "WowClientDB_CharTitlesRec"); + apply_type(0x00AD3398, "WowClientDB_CharacterFacialHairStylesRec"); + apply_type(0x00AD33BC, "WowClientDB_ChatChannelsRec"); + apply_type(0x00AD33E0, "WowClientDB_ChatProfanityRec"); + apply_type(0x00AD3404, "WowClientDB_ChrClassesRec"); + apply_type(0x00AD3428, "WowClientDB_ChrRacesRec"); + apply_type(0x00AD344C, "WowClientDB_CinematicCameraRec"); + apply_type(0x00AD3470, "WowClientDB_CinematicSequencesRec"); + apply_type(0x00AD3494, "WowClientDB_CreatureDisplayInfoExtraRec"); + apply_type(0x00AD34B8, "WowClientDB_CreatureDisplayInfoRec"); + apply_type(0x00AD34DC, "WowClientDB_CreatureFamilyRec"); + apply_type(0x00AD3500, "WowClientDB_CreatureModelDataRec"); + apply_type(0x00AD3524, "WowClientDB_CreatureMovementInfoRec"); + apply_type(0x00AD3548, "WowClientDB_CreatureSoundDataRec"); + apply_type(0x00AD356C, "WowClientDB_CreatureSpellDataRec"); + apply_type(0x00AD3590, "WowClientDB_CreatureTypeRec"); + apply_type(0x00AD35B4, "WowClientDB_CurrencyTypesRec"); + apply_type(0x00AD35D8, "WowClientDB_CurrencyCategoryRec"); + apply_type(0x00AD35FC, "WowClientDB_DanceMovesRec"); + apply_type(0x00AD3620, "WowClientDB_DeathThudLookupsRec"); + apply_type(0x00AD368C, "WowClientDB_DestructibleModelDataRec"); + apply_type(0x00AD36B0, "WowClientDB_DungeonEncounterRec"); + apply_type(0x00AD36D4, "WowClientDB_DungeonMapRec"); + apply_type(0x00AD36F8, "WowClientDB_DungeonMapChunkRec"); + apply_type(0x00AD371C, "WowClientDB_DurabilityCostsRec"); + apply_type(0x00AD3740, "WowClientDB_DurabilityQualityRec"); + apply_type(0x00AD3764, "WowClientDB_EmotesRec"); + apply_type(0x00AD3788, "WowClientDB_EmotesTextDataRec"); + apply_type(0x00AD37AC, "WowClientDB_EmotesTextSoundRec"); + apply_type(0x00AD37D0, "WowClientDB_EmotesTextRec"); + apply_type(0x00AD37F4, "WowClientDB_EnvironmentalDamageRec"); + apply_type(0x00AD3818, "WowClientDB_ExhaustionRec"); + apply_type(0x00AD383C, "WowClientDB_FactionGroupRec"); + apply_type(0x00AD3860, "WowClientDB_FactionRec"); + apply_type(0x00AD3884, "WowClientDB_FactionTemplateRec"); + apply_type(0x00AD38A8, "WowClientDB_FileDataRec"); + apply_type(0x00AD38CC, "WowClientDB_FootprintTexturesRec"); + apply_type(0x00AD38F0, "WowClientDB_FootstepTerrainLookupRec"); + apply_type(0x00AD3914, "WowClientDB_GameObjectArtKitRec"); + apply_type(0x00AD3938, "WowClientDB_GameObjectDisplayInfoRec"); + apply_type(0x00AD395C, "WowClientDB_GameTablesRec"); + apply_type(0x00AD3980, "WowClientDB_GameTipsRec"); + apply_type(0x00AD39A4, "WowClientDB_GemPropertiesRec"); + apply_type(0x00AD39C8, "WowClientDB_GlyphPropertiesRec"); + apply_type(0x00AD39EC, "WowClientDB_GlyphSlotRec"); + apply_type(0x00AD3A10, "WowClientDB_GMSurveyAnswersRec"); + apply_type(0x00AD3A34, "WowClientDB_GMSurveyCurrentSurveyRec"); + apply_type(0x00AD3A58, "WowClientDB_GMSurveyQuestionsRec"); + apply_type(0x00AD3A7C, "WowClientDB_GMSurveySurveysRec"); + apply_type(0x00AD3AA0, "WowClientDB_GMTicketCategoryRec"); + apply_type(0x00AD3AC4, "WowClientDB_GroundEffectDoodadRec"); + apply_type(0x00AD3AE8, "WowClientDB_GroundEffectTextureRec"); + apply_type(0x00AD3B0C, "WowClientDB_gtBarberShopCostBaseRec"); + apply_type(0x00AD3B30, "WowClientDB_gtCombatRatingsRec"); + apply_type(0x00AD3B54, "WowClientDB_gtChanceToMeleeCritRec"); + apply_type(0x00AD3B78, "WowClientDB_gtChanceToMeleeCritBaseRec"); + apply_type(0x00AD3B9C, "WowClientDB_gtChanceToSpellCritRec"); + apply_type(0x00AD3BC0, "WowClientDB_gtChanceToSpellCritBaseRec"); + apply_type(0x00AD3BE4, "WowClientDB_gtNPCManaCostScalerRec"); + apply_type(0x00AD3C08, "WowClientDB_gtOCTClassCombatRatingScalarRec"); + apply_type(0x00AD3C2C, "WowClientDB_gtOCTRegenHPRec"); + apply_type(0x00AD3C50, "WowClientDB_gtOCTRegenMPRec"); + apply_type(0x00AD3C74, "WowClientDB_gtRegenHPPerSptRec"); + apply_type(0x00AD3C98, "WowClientDB_gtRegenMPPerSptRec"); + apply_type(0x00AD3CBC, "WowClientDB_HelmetGeosetVisDataRec"); + apply_type(0x00AD3CE0, "WowClientDB_HolidayDescriptionsRec"); + apply_type(0x00AD3D04, "WowClientDB_HolidayNamesRec"); + apply_type(0x00AD3D28, "WowClientDB_HolidaysRec"); + apply_type(0x00AD3D4C, "WowClientDB_ItemRec"); + apply_type(0x00AD3D70, "WowClientDB_ItemBagFamilyRec"); + apply_type(0x00AD3D94, "WowClientDB_ItemClassRec"); + apply_type(0x00AD3DB8, "WowClientDB_ItemCondExtCostsRec"); + apply_type(0x00AD3DDC, "WowClientDB_ItemDisplayInfoRec"); + apply_type(0x00AD3E00, "WowClientDB_ItemExtendedCostRec"); + apply_type(0x00AD3E24, "WowClientDB_ItemGroupSoundsRec"); + apply_type(0x00AD3E48, "WowClientDB_ItemLimitCategoryRec"); + apply_type(0x00AD3E6C, "WowClientDB_ItemPetFoodRec"); + apply_type(0x00AD3E90, "WowClientDB_ItemPurchaseGroupRec"); + apply_type(0x00AD3EB4, "WowClientDB_ItemRandomPropertiesRec"); + apply_type(0x00AD3ED8, "WowClientDB_ItemRandomSuffixRec"); + apply_type(0x00AD3EFC, "WowClientDB_ItemSetRec"); + apply_type(0x00AD3F20, "WowClientDB_ItemSubClassMaskRec"); + apply_type(0x00AD3F44, "WowClientDB_ItemSubClassRec"); + apply_type(0x00AD3F68, "WowClientDB_ItemVisualEffectsRec"); + apply_type(0x00AD3F8C, "WowClientDB_ItemVisualsRec"); + apply_type(0x00AD3FB0, "WowClientDB_LanguageWordsRec"); + apply_type(0x00AD3FD4, "WowClientDB_LanguagesRec"); + apply_type(0x00AD3FF8, "WowClientDB_LfgDungeonExpansionRec"); + apply_type(0x00AD401C, "WowClientDB_LfgDungeonGroupRec"); + apply_type(0x00AD4040, "WowClientDB_LfgDungeonsRec"); + apply_type(0x00AD4064, "WowClientDB_LiquidTypeRec"); + apply_type(0x00AD4088, "WowClientDB_LiquidMaterialRec"); + apply_type(0x00AD40AC, "WowClientDB_LoadingScreensRec"); + apply_type(0x00AD40D0, "WowClientDB_LoadingScreenTaxiSplinesRec"); + apply_type(0x00AD40F4, "WowClientDB_LockRec"); + apply_type(0x00AD4118, "WowClientDB_LockTypeRec"); + apply_type(0x00AD413C, "WowClientDB_MailTemplateRec"); + apply_type(0x00AD4160, "WowClientDB_MapRec"); + apply_type(0x00AD4184, "WowClientDB_MapDifficultyRec"); + apply_type(0x00AD41A8, "WowClientDB_MaterialRec"); + apply_type(0x00AD41CC, "WowClientDB_MovieRec"); + apply_type(0x00AD41F0, "WowClientDB_MovieFileDataRec"); + apply_type(0x00AD4214, "WowClientDB_MovieVariationRec"); + apply_type(0x00AD4238, "WowClientDB_NameGenRec"); + apply_type(0x00AD425C, "WowClientDB_NPCSoundsRec"); + apply_type(0x00AD4280, "WowClientDB_NamesProfanityRec"); + apply_type(0x00AD42A4, "WowClientDB_NamesReservedRec"); + apply_type(0x00AD42C8, "WowClientDB_OverrideSpellDataRec"); + apply_type(0x00AD42EC, "WowClientDB_PackageRec"); + apply_type(0x00AD4310, "WowClientDB_PageTextMaterialRec"); + apply_type(0x00AD4334, "WowClientDB_PaperDollItemFrameRec"); + apply_type(0x00AD4358, "WowClientDB_ParticleColorRec"); + apply_type(0x00AD437C, "WowClientDB_PetPersonalityRec"); + apply_type(0x00AD43A0, "WowClientDB_PowerDisplayRec"); + apply_type(0x00AD43C4, "WowClientDB_PvpDifficultyRec"); + apply_type(0x00AD43E8, "WowClientDB_QuestFactionRewardRec"); + apply_type(0x00AD440C, "WowClientDB_QuestInfoRec"); + apply_type(0x00AD4430, "WowClientDB_QuestSortRec"); + apply_type(0x00AD4454, "WowClientDB_QuestXPRec"); + apply_type(0x00AD4478, "WowClientDB_ResistancesRec"); + apply_type(0x00AD449C, "WowClientDB_RandPropPointsRec"); + apply_type(0x00AD44C0, "WowClientDB_ScalingStatDistributionRec"); + apply_type(0x00AD44E4, "WowClientDB_ScalingStatValuesRec"); + apply_type(0x00AD4508, "WowClientDB_ScreenEffectRec"); + apply_type(0x00AD452C, "WowClientDB_ServerMessagesRec"); + apply_type(0x00AD4550, "WowClientDB_SheatheSoundLookupsRec"); + apply_type(0x00AD4574, "WowClientDB_SkillCostsDataRec"); + apply_type(0x00AD4598, "WowClientDB_SkillLineAbilityRec"); + apply_type(0x00AD45BC, "WowClientDB_SkillLineCategoryRec"); + apply_type(0x00AD45E0, "WowClientDB_SkillLineRec"); + apply_type(0x00AD4604, "WowClientDB_SkillRaceClassInfoRec"); + apply_type(0x00AD4628, "WowClientDB_SkillTiersRec"); + apply_type(0x00AD464C, "WowClientDB_SoundAmbienceRec"); + apply_type(0x00AD4670, "WowClientDB_SoundEntriesRec"); + apply_type(0x00AD4694, "WowClientDB_SoundEmittersRec"); + apply_type(0x00AD46B8, "WowClientDB_SoundProviderPreferencesRec"); + apply_type(0x00AD46DC, "WowClientDB_SoundSamplePreferencesRec"); + apply_type(0x00AD4700, "WowClientDB_SoundWaterTypeRec"); + apply_type(0x00AD4724, "WowClientDB_SpamMessagesRec"); + apply_type(0x00AD4748, "WowClientDB_SpellCastTimesRec"); + apply_type(0x00AD476C, "WowClientDB_SpellCategoryRec"); + apply_type(0x00AD4790, "WowClientDB_SpellChainEffectsRec"); + apply_type(0x00AD47B4, "WowClientDB_SpellDescriptionVariablesRec"); + apply_type(0x00AD47D8, "WowClientDB_SpellDifficultyRec"); + apply_type(0x00AD47FC, "WowClientDB_SpellDispelTypeRec"); + apply_type(0x00AD4820, "WowClientDB_SpellDurationRec"); + apply_type(0x00AD4844, "WowClientDB_SpellEffectCameraShakesRec"); + apply_type(0x00AD4868, "WowClientDB_SpellFocusObjectRec"); + apply_type(0x00AD488C, "WowClientDB_SpellIconRec"); + apply_type(0x00AD48B0, "WowClientDB_SpellItemEnchantmentRec"); + apply_type(0x00AD48D4, "WowClientDB_SpellItemEnchantmentConditionRec"); + apply_type(0x00AD48F8, "WowClientDB_SpellMechanicRec"); + apply_type(0x00AD491C, "WowClientDB_SpellMissileRec"); + apply_type(0x00AD4940, "WowClientDB_SpellMissileMotionRec"); + apply_type(0x00AD4964, "WowClientDB_SpellRadiusRec"); + apply_type(0x00AD4988, "WowClientDB_SpellRangeRec"); + apply_type(0x00AD49AC, "WowClientDB_SpellRuneCostRec"); + apply_type(0x00AD49D0, "WowClientDB_SpellRec"); + apply_type(0x00AD49F4, "WowClientDB_SpellShapeshiftFormRec"); + apply_type(0x00AD4A18, "WowClientDB_SpellVisualEffectNameRec"); + apply_type(0x00AD4A3C, "WowClientDB_SpellVisualKitRec"); + apply_type(0x00AD4A60, "WowClientDB_SpellVisualKitAreaModelRec"); + apply_type(0x00AD4A84, "WowClientDB_SpellVisualKitModelAttachRec"); + apply_type(0x00AD4AA8, "WowClientDB_SpellVisualRec"); + apply_type(0x00AD4ACC, "WowClientDB_StableSlotPricesRec"); + apply_type(0x00AD4AF0, "WowClientDB_StationeryRec"); + apply_type(0x00AD4B14, "WowClientDB_StringLookupsRec"); + apply_type(0x00AD4B38, "WowClientDB_SummonPropertiesRec"); + apply_type(0x00AD4B5C, "WowClientDB_TalentRec"); + apply_type(0x00AD4B80, "WowClientDB_TalentTabRec"); + apply_type(0x00AD4BA4, "WowClientDB_TaxiNodesRec"); + apply_type(0x00AD4BC8, "WowClientDB_TaxiPathNodeRec"); + apply_type(0x00AD4BEC, "WowClientDB_TaxiPathRec"); + apply_type(0x00AD4C10, "WowClientDB_TeamContributionPointsRec"); + apply_type(0x00AD4C34, "WowClientDB_TerrainTypeRec"); + apply_type(0x00AD4C58, "WowClientDB_TerrainTypeSoundsRec"); + apply_type(0x00AD4C7C, "WowClientDB_TotemCategoryRec"); + apply_type(0x00AD4CA0, "WowClientDB_TransportAnimationRec"); + apply_type(0x00AD4CC4, "WowClientDB_TransportPhysicsRec"); + apply_type(0x00AD4CE8, "WowClientDB_TransportRotationRec"); + apply_type(0x00AD4D0C, "WowClientDB_UISoundLookupsRec"); + apply_type(0x00AD4D30, "WowClientDB_UnitBloodLevelsRec"); + apply_type(0x00AD4D54, "WowClientDB_UnitBloodRec"); + apply_type(0x00AD4D78, "WowClientDB_VehicleRec"); + apply_type(0x00AD4D9C, "WowClientDB_VehicleSeatRec"); + apply_type(0x00AD4DC0, "WowClientDB_VehicleUIIndicatorRec"); + apply_type(0x00AD4DE4, "WowClientDB_VehicleUIIndSeatRec"); + apply_type(0x00AD4E08, "WowClientDB_VocalUISoundsRec"); + apply_type(0x00AD4E2C, "WowClientDB_WMOAreaTableRec"); + apply_type(0x00AD4E50, "WowClientDB_WeaponImpactSoundsRec"); + apply_type(0x00AD4E74, "WowClientDB_WeaponSwingSounds2Rec"); + apply_type(0x00AD4E98, "WowClientDB_WeatherRec"); + apply_type(0x00AD4EBC, "WowClientDB_WorldMapAreaRec"); + apply_type(0x00AD4EE0, "WowClientDB_WorldMapContinentRec"); + apply_type(0x00AD4F04, "WowClientDB_WorldMapOverlayRec"); + apply_type(0x00AD4F28, "WowClientDB_WorldMapTransformsRec"); + apply_type(0x00AD4F4C, "WowClientDB_WorldSafeLocsRec"); + apply_type(0x00AD4F70, "WowClientDB_WorldStateUIRec"); + apply_type(0x00AD4F94, "WowClientDB_ZoneIntroMusicTableRec"); + apply_type(0x00AD4FB8, "WowClientDB_ZoneMusicRec"); + apply_type(0x00AD4FDC, "WowClientDB_WorldStateZoneSoundsRec"); + apply_type(0x00AD5000, "WowClientDB_WorldChunkSoundsRec"); + apply_type(0x00AD5024, "WowClientDB_SoundEntriesAdvancedRec"); + apply_type(0x00AD5048, "WowClientDB_ObjectEffectRec"); + apply_type(0x00AD506C, "WowClientDB_ObjectEffectGroupRec"); + apply_type(0x00AD5090, "WowClientDB_ObjectEffectModifierRec"); + apply_type(0x00AD50B4, "WowClientDB_ObjectEffectPackageRec"); + apply_type(0x00AD50D8, "WowClientDB_ObjectEffectPackageElemRec"); + apply_type(0x00AD50FC, "WowClientDB_SoundFilterRec"); + apply_type(0x00AD5120, "WowClientDB_SoundFilterElemRec"); apply_type(0x00AD90B0, "uint8_t[16]"); apply_type(0x00AD90C0, "uint8_t[2]"); + apply_type(0x00ADBAB4, "RECTF"); + apply_type(0x00ADBAC4, "KEY"); + apply_type(0x00ADBAC8, "int32_t"); + apply_type(0x00ADBACC, "float"); + apply_type(0x00ADBAD4, "RECTF"); + apply_type(0x00ADBAE4, "uint32_t"); + apply_type(0x00ADBBB0, "TSList_CONSOLELINE"); + apply_type(0x00AF4998, "WowClientDB_LightSkyboxRec"); + apply_type(0x00AF49BC, "WowClientDB_LightIntBandRec"); + apply_type(0x00AF49E0, "WowClientDB_LightFloatBandRec"); + apply_type(0x00AF4A04, "WowClientDB_LightParamsRec"); + apply_type(0x00AF4A28, "WowClientDB_LightRec"); apply_type(0x00B417C8, "uint32_t"); apply_type(0x00B417D0, "int32_t"); apply_type(0x00B41850, "CDataRecycler"); @@ -325,4 +672,66 @@ static import_data_types() { apply_type(0x00C26DE8, "CURSORMODE"); apply_type(0x00C26DF0, "uint32_t[53][1024]"); apply_type(0x00C5DF88, "CGxDevice*"); + apply_type(0x00C5FFF8, "HSLOG"); + apply_type(0x00CA1690, "float"); + apply_type(0x00CA1694, "int32_t"); + apply_type(0x00CA1718, "float"); + apply_type(0x00CA171C, "CGxString*"); + apply_type(0x00CA1720, "CONSOLELINE*"); + apply_type(0x00CA1724, "HLAYER"); + apply_type(0x00CA1728, "char[64]"); + apply_type(0x00CA1768, "char[260]"); + apply_type(0x00CA186C, "uint32_t"); + apply_type(0x00CA1870, "HLAYER"); + apply_type(0x00CA1874, "CGxStringBatch*"); + apply_type(0x00CA1878, "char[256]"); + apply_type(0x00CA1978, "int32_t"); + apply_type(0x00CA197C, "int32_t"); + apply_type(0x00CA1980, "int32_t"); + apply_type(0x00CA1984, "char*"); + apply_type(0x00CA198C, "HTEXTFONT"); + apply_type(0x00CA1990, "CONSOLERESIZESTATE"); + apply_type(0x00CA1994, "HIGHLIGHTSTATE"); + apply_type(0x00CA1998, "float"); + apply_type(0x00CA199C, "float"); + apply_type(0x00CA19A0, "uint32_t"); + apply_type(0x00CA19A4, "uint32_t"); + apply_type(0x00CA19A8, "float"); + apply_type(0x00CA19B0, "float"); + apply_type(0x00CA19B4, "SCritSect"); + apply_type(0x00CA19F0, "float"); + apply_type(0x00CA19F4, "char*"); + apply_type(0x00CA19F9, "bool"); + apply_type(0x00CA19FC, "TSHashTable_CVar_HASHKEY_STRI"); + apply_type(0x00CA3A28, "char[32][1024]"); + apply_type(0x00CABA28, "uint32_t"); + apply_type(0x00CABA2C, "COMMANDHANDLER"); + apply_type(0x00CABA30, "TSHashTable_CONSOLECOMMAND_HASHKEY_STRI"); + apply_type(0x00CABA98, "CVar*"); + apply_type(0x00CABA9C, "CVar*"); + apply_type(0x00CABAA0, "CVar*"); + apply_type(0x00CABAA4, "CVar*"); + apply_type(0x00CABAA8, "CVar*"); + apply_type(0x00CABAB0, "CVar*"); + apply_type(0x00CABAB4, "CVar*"); + apply_type(0x00CABAB8, "CVar*"); + apply_type(0x00CABABC, "CVar*"); + apply_type(0x00CABAC0, "CVar*"); + apply_type(0x00CABAC4, "CVar*"); + apply_type(0x00CABAEC, "CVar*"); + apply_type(0x00CABB30, "CVar*"); + apply_type(0x00CABB6C, "CVar*"); + apply_type(0x00CABB70, "CVar*"); + apply_type(0x00CABB74, "CVar*"); + apply_type(0x00CABB78, "CVar*"); + apply_type(0x00CABBA0, "CVar*"); + apply_type(0x00CABBA4, "CVar*"); + apply_type(0x00CABBA8, "CVar*"); + apply_type(0x00CABBAC, "CVar*"); + apply_type(0x00CABBB0, "CVar*"); + apply_type(0x00CABBB4, "CVar*"); + apply_type(0x00CABCBE, "bool"); + apply_type(0x00CABCC4, "int32_t"); + apply_type(0x00CABCD8, "CGxFormat"); + apply_type(0x00D43020, "int32_t"); } diff --git a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc index aeb53a9..7e2c764 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc @@ -9,6 +9,9 @@ static import_functions() { set_func_cmt(0x004010E0, "CDataStore::Reset()", 0); set_func_cmt(0x00401130, "CDataStore::Finalize()", 0); set_func_cmt(0x004038A0, "CDataStore::~CDataStore()", 0); + set_func_cmt(0x00427130, "Blizzard::File::Delete(char const*)", 0); + set_func_cmt(0x00427500, "Blizzard::File::MakeAbsolutePath(char const*, char*, int, bool)", 0); + set_func_cmt(0x00427560, "Blizzard::File::Move(char const*, char const*)", 0); set_func_cmt(0x0047ADE0, "CDataStore::GetBufferParams(void const**, unsigned int*, unsigned int*)", 0); set_func_cmt(0x0047AE10, "CDataStore::DetachBuffer(void**, unsigned int*, unsigned int*)", 0); set_func_cmt(0x0047AE50, "virtual void __thiscall CDataStore::InternalDestroy(unsigned char * &,unsigned int &,unsigned int &)", 0); @@ -31,11 +34,26 @@ static import_functions() { set_func_cmt(0x0047B560, "CDataStore::GetArray(unsigned char*, unsigned int)", 0); set_func_cmt(0x0047B6B0, "CDataStore::GetDataInSitu(void*&, unsigned int)", 0); set_func_cmt(0x0047F230, "IEvtSchedulerProcess as an independent function appears to be optimized out", 0); + set_func_cmt(0x004A2780, "_CBackdropGenerator::LoadXML(linkObject*, CStatus*)", 0); + set_func_cmt(0x004A81B0, "FrameScript_GetObjectThis(lua_State*, int)", 0); set_func_cmt(0x004DBFD0, "thanks namreeb :^)", 0); set_func_cmt(0x00532AF0, "public: class CGxCaps const & __thiscall CGxDevice::Caps(void)const", 0); set_func_cmt(0x005EEB70, "SErrDisplayAppFatal resolves to this in release mode?", 0); + set_func_cmt(0x006337D0, "00005400", 0); + set_func_cmt(0x00634C60, "00005400", 0); + set_func_cmt(0x00634E00, "ClientDBInitialize()", 0); + set_func_cmt(0x00636E50, "WowClientDB::Load(char const, int)", 0); + set_func_cmt(0x006393A0, "WowClientDB::Load(char const, int)", 0); + set_func_cmt(0x006395F0, "WowClientDB::Load(char const, int)", 0); + set_func_cmt(0x00639840, "WowClientDB::Load(char const, int)", 0); + set_func_cmt(0x00658D90, "WowClientDB::LoadRecords(SFile*, char const*, int)", 0); + set_func_cmt(0x00659910, "WowClientDB::LoadRecords(SFile*, char const*, int)", 0); + set_func_cmt(0x00659B80, "WowClientDB::LoadRecords(SFile*, char const*, int)", 0); + set_func_cmt(0x0065C290, "00005410", 0); + set_func_cmt(0x0065F520, "WowClientDB::GetRecordByIndex(int, void*)", 0); set_func_cmt(0x00681BE0, "UC", 0); set_func_cmt(0x00682400, "this is one of the functions named 'GxPrimVertexPtr' that uses the fixed-function pipeline", 0); + set_func_cmt(0x00683670, "static void CGxDevice::LogOpen(void)", 0); set_func_cmt(0x00684C40, "CGxDevice::Log(CGxCaps const&) const", 0); set_func_cmt(0x006859E0, "CGxDevice::IRsForceUpdate(EGxRenderState)", 0); set_func_cmt(0x00685A70, "CGxDevice::IRsForceUpdate()", 0); @@ -44,8 +62,10 @@ static import_functions() { set_func_cmt(0x006AA420, "private utility method", 0); set_func_cmt(0x006AB390, "public method", 0); set_func_cmt(0x00763730, "UC", 0); - set_func_cmt(0x00763B40, "UC", 0); - set_func_cmt(0x00763B90, "UC", 0); + set_func_cmt(0x00763AB0, "static void CONSOLELINE::Backspace()", 0); + set_func_cmt(0x00763B10, "void CONSOLELINE::Delete()", 0); + set_func_cmt(0x00763B40, "static void CONSOLELINE::Up()", 0); + set_func_cmt(0x00763B90, "static void CONSOLELINE::Down()", 0); set_func_cmt(0x0077ACF0, "public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const", 0); set_func_cmt(0x0077AE80, "public: __thiscall BigStack::~BigStack(void)", 0); set_func_cmt(0x0077AEC0, "public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const", 0); @@ -62,7 +82,17 @@ static import_functions() { set_func_cmt(0x0077BAC0, "void __fastcall Div(class BigBuffer &,class BigBuffer &,class BigBuffer const &,class BigBuffer const &,class BigStack &)", 0); set_func_cmt(0x0077BFF0, "void Mul(class BigBuffer &,class BigBuffer const &,class BigBuffer const &,class BigStack &)", 0); set_func_cmt(0x0077C330, "void __fastcall Square(class BigBuffer &,class BigBuffer const &,class BigStack &)", 0); - set_func_cmt(0x00869720, "actually called by IEvtInputInitialize, but this is optimized out", 0); + set_func_cmt(0x00816790, "FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*))", 0); + set_func_cmt(0x008167E0, "FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int)", 0); + set_func_cmt(0x00818070, "startIndex is the index of starting argument on stack", 0); + set_func_cmt(0x00819830, "FrameScript_Object::FrameScript_Object()", 0); + set_func_cmt(0x00819850, "FrameScript_Object::~FrameScript_Object()", 0); + set_func_cmt(0x008199C0, "FrameScript_Object::UnregisterScriptObject(char const*)", 0); + set_func_cmt(0x0081A2C0, "FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*)", 0); + set_func_cmt(0x0081AA00, "FrameScript_SignalEvent(unsigned int, lua_State*, int)", 0); + set_func_cmt(0x0081AC90, "vFrameScript_SignalEvent(unsigned int, char const*, char*)", 0); + set_func_cmt(0x0081B530, "FrameScript_SignalEvent(unsigned int, char const*, ...)", 0); + set_func_cmt(0x0081B5F0, "FrameScript_CreateEvents(char const**, unsigned int)", 0); set_func_cmt(0x008E5250, "Script_ToggleTris", 0); set_func_cmt(0x0095D110, "CDataAllocator::GetData(int, char const*, int)", 0); set_func_cmt(0x0095D1B0, "CDataAllocator::PutData(void*, char const*, int)", 0); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index 42227d0..9b665af 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -40,9 +40,18 @@ static import_symbols() { set_name(0x00424B50, "SFile__OpenEx"); set_name(0x00424E80, "SFile__Load"); set_name(0x00424F80, "SFile__Open"); + set_name(0x004270F0, "Blizzard__File__Close"); + set_name(0x00427130, "Blizzard__File__Delete"); + set_name(0x00427500, "Blizzard__File__MakeAbsolutePath"); + set_name(0x00427560, "Blizzard__File__Move"); + set_name(0x00427600, "Blizzard__File__Open"); + set_name(0x004276C0, "Blizzard__File__Read"); + set_name(0x004279B0, "Blizzard__File__Write"); + set_name(0x0042D440, "System_File__Stacked__file_init"); set_name(0x00461B00, "OsCloseFile"); set_name(0x00461B50, "OsReadFile"); set_name(0x00461BD0, "OsGetFileSize"); + set_name(0x00461D10, "OsCreateDirectory"); set_name(0x00461DB0, "OsSetCurrentDirectory"); set_name(0x00461FA0, "OsCreateFile"); set_name(0x0047ADD0, "nullsub_2"); @@ -71,6 +80,7 @@ static import_symbols() { set_name(0x0047B700, "CmdLineGetString"); set_name(0x0047B720, "CmdLineProcess"); set_name(0x0047B760, "j_nullsub_3"); + set_name(0x0047B9E0, "ConvertUTF16toUTF8"); set_name(0x0047BF30, "HandleClose"); set_name(0x0047BF50, "HandleCreate"); set_name(0x0047BF70, "HandleDuplicate"); @@ -142,10 +152,30 @@ static import_symbols() { set_name(0x004829F0, "GxBufUnlock"); set_name(0x00482A20, "GxBufStream"); set_name(0x00482A40, "GxDraw"); + set_name(0x00482C20, "CSimpleRegion__Hide"); + set_name(0x00483910, "CSimpleFontString__SetText"); + set_name(0x00487A10, "CSimpleRegion__SetVertexColor"); + set_name(0x00487AB0, "CSimpleRegion__GetVertexColor"); + set_name(0x00487BF0, "CSimpleRegion__HideThis"); + set_name(0x00487C40, "CSimpleRegion__ShowThis"); + set_name(0x00487CA0, "CSimpleRegion__OnRegionChanged"); + set_name(0x00487D70, "CSimpleRegion__OnColorChanged"); + set_name(0x004880E0, "CSimpleRegion__CSimpleRegion"); + set_name(0x004881D0, "CSimpleRegion__destructor"); + set_name(0x00488310, "CScriptRegion__CScriptRegion"); + set_name(0x0048D800, "CSimpleFontString_SetFormattedText"); + set_name(0x0048EA10, "CSimpleFrame__SetFrameAlpha"); set_name(0x00493BF0, "GxCapsWindowSizeInScreenCoords"); set_name(0x00494EE0, "CFrameStrata__BuildBatches"); set_name(0x00494F30, "CFrameStrata__RenderBatch"); set_name(0x00495410, "CSimpleTop__OnLayerRender"); + set_name(0x0049F9E0, "CSimpleFrame_SetAlpha"); + set_name(0x004A2630, "CBackdropGenerator__SetBorderVertexColor"); + set_name(0x004A2780, "CBackdropGenerator__LoadXML"); + set_name(0x004A29D0, "CBackdropGenerator__Generate"); + set_name(0x004A2D40, "CBackdropGenerator__CBackdropGenerator"); + set_name(0x004A2E00, "CBackdropGenerator__SetOutput"); + set_name(0x004A81B0, "FrameScript_GetObjectThis"); set_name(0x004A8500, "ScrnLayerSetRect"); set_name(0x004A8720, "OnPaint"); set_name(0x004A8BB0, "ScrnLayerCreate"); @@ -2096,11 +2126,24 @@ static import_symbols() { set_name(0x00616AD0, "GxXformPush_EGxXform_C44Matrix"); set_name(0x00616CA0, "TSGrowableArray_CImVector__SetCount"); set_name(0x00632050, "nullsub_4"); + set_name(0x006337D0, "StaticDBLoadAll"); + set_name(0x00634C60, "ClientDBShutdown"); + set_name(0x00634E00, "ClientDBInitialize"); + set_name(0x00636E50, "WowClientDB_AchievementRec__Load"); + set_name(0x006393A0, "WowClientDB_Cfg_CategoriesRec__Load"); + set_name(0x006395F0, "WowClientDB_Cfg_ConfigsRec__Load"); + set_name(0x00639840, "WowClientDB_CharBaseInfoRec__Load"); set_name(0x00653A10, "nullsub_5"); + set_name(0x00658D90, "WowClientDB_AchievementRec__LoadRecords"); + set_name(0x00659910, "WowClientDB_Cfg_CategoriesRec__LoadRecords"); + set_name(0x00659B80, "WowClientDB_CharBaseInfoRec__LoadRecords"); + set_name(0x0065C290, "WowClientDB__GetRecord"); + set_name(0x0065F520, "WowClientDB_AchievementRec__GetRecordByIndex"); set_name(0x00681290, "GxDevCreate"); set_name(0x006813B0, "GxSceneClear"); set_name(0x006813D0, "GxTexUpdate"); set_name(0x00681630, "GxQueryCreate"); + set_name(0x006817C0, "GxLogOpen"); set_name(0x006817E0, "GxLog"); set_name(0x00681A60, "GxDrawLockedElements"); set_name(0x00681AB0, "GxPrimIndexPtr"); @@ -2143,6 +2186,7 @@ static import_symbols() { set_name(0x00683640, "CGxDevice__CursorSetVisible"); set_name(0x00683650, "CGxDevice__CursorLock"); set_name(0x00683660, "CGxDevice__CursorSetDepth"); + set_name(0x00683670, "CGxDevice__LogOpen"); set_name(0x006840F0, "CGxDevice__DeviceSetFormat"); set_name(0x00684170, "CGxDevice__DeviceSetGamma"); set_name(0x00684190, "CGxDevice__DeviceSetGamma@2"); @@ -2163,8 +2207,8 @@ static import_symbols() { set_name(0x00684AD0, "CGxDevice__ICursorCreate"); set_name(0x00684B50, "CGxDevice__CursorUnlock"); set_name(0x00684C20, "CGxDevice__Log"); - set_name(0x00684C40, "CGxDevice__Log_CGxCaps"); - set_name(0x00684D10, "CGxDevice__Log_CGxFormat"); + set_name(0x00684C40, "CGxDevice__Log@2"); + set_name(0x00684D10, "CGxDevice__Log@3"); set_name(0x00684FE0, "CGxDevice__DeviceOverride"); set_name(0x006853B0, "CGxDevice__AddDeviceRestoredCallback"); set_name(0x006853D0, "CGxDevice__RemoveDeviceRestoredCallback"); @@ -2384,6 +2428,7 @@ static import_symbols() { set_name(0x006BF160, "GxuFontCreateBatch"); set_name(0x006BF370, "GxuXformCreateProjection_Exact"); set_name(0x006BF4C0, "GxuXformCreateOrtho"); + set_name(0x006BF5B0, "GxuXformCreateOrthoDepth"); set_name(0x006BF6D0, "GxuXformCalcFrustumCorners"); set_name(0x006BFDA0, "GxuUpdateSingleColorTexture"); set_name(0x006BFE00, "GxuXformCreateProjection_SG"); @@ -2402,6 +2447,7 @@ static import_symbols() { set_name(0x0074FC20, "Script_CombatLogAdvanceEntry"); set_name(0x0074FF70, "Script_CombatLogAddFilter"); set_name(0x00751120, "Script_CombatLogClearEntries"); + set_name(0x00763680, "GenerateNodeString"); set_name(0x00763730, "SetInputString"); set_name(0x007637D0, "ReserveInputSpace"); set_name(0x00763830, "ResetHighlight"); @@ -2409,8 +2455,10 @@ static import_symbols() { set_name(0x007639A0, "OnMouseUp"); set_name(0x007639D0, "OnMouseMove"); set_name(0x00763A60, "MakeCommandCurrent"); - set_name(0x00763B40, "ConsoleCommandHistoryPrev"); - set_name(0x00763B90, "ConsoleCommandHistoryNext"); + set_name(0x00763AB0, "CONSOLELINE__Backspace"); + set_name(0x00763B10, "CONSOLELINE__Delete"); + set_name(0x00763B40, "CONSOLELINE__Up"); + set_name(0x00763B90, "CONSOLELINE__Down"); set_name(0x00763BE0, "OnKeyUp"); set_name(0x00763C50, "ConsolePostClose"); set_name(0x00763D60, "EventCloseCallback"); @@ -2418,11 +2466,12 @@ static import_symbols() { set_name(0x00764040, "DrawHighLight"); set_name(0x007641A0, "DrawCaret"); set_name(0x007643F0, "PaintBackground"); + set_name(0x007644B0, "EnforceMaxLines"); set_name(0x00764520, "GetInputLine"); set_name(0x007645E0, "PaintText"); + set_name(0x00764790, "GetLineAtMousePosition"); set_name(0x00764800, "PasteInInputLine"); set_name(0x00764990, "OnChar"); - set_name(0x007649AF, "s_active"); set_name(0x00764A10, "OnMouseDown"); set_name(0x00764B90, "OnKeyDownRepeat"); set_name(0x00765270, "ConsoleWrite"); @@ -2432,8 +2481,11 @@ static import_symbols() { set_name(0x00765AF0, "OnKeyDown"); set_name(0x00765FF0, "RegisterHandlers"); set_name(0x00766140, "ConsoleScreenInitialize"); - set_name(0x00766530, "CVarLoadFile"); + set_name(0x00766400, "CVar__Load"); + set_name(0x00766530, "CVar__Load@2"); + set_name(0x00766640, "CVar__SaveCvar"); set_name(0x007668C0, "CVar__Set"); + set_name(0x00767030, "CVar__IterateForArchive"); set_name(0x00767100, "CVarSaveFile"); set_name(0x007673F0, "CVar__Destroy"); set_name(0x00767FC0, "CVar__Register"); @@ -2441,9 +2493,33 @@ static import_symbols() { set_name(0x00768410, "ConsoleCommand_Quit"); set_name(0x00768440, "ConsoleCommandHistory"); set_name(0x007689E0, "ConsoleCommandUnregister"); + set_name(0x00768A20, "ConsoleCommandComplete"); set_name(0x00769100, "ConsoleCommandRegister"); set_name(0x00769230, "ConsoleAccessGetEnabled"); + set_name(0x00769240, "CVGxColorBitsCallback"); + set_name(0x007692D0, "CVGxDepthBitsCallback"); + set_name(0x00769360, "CVGxTripleBufferCallback"); + set_name(0x007693B0, "CVGxApiCallback"); + set_name(0x00769520, "CVGxVSyncCallback"); + set_name(0x00769550, "CVGxWindowCallback"); + set_name(0x00769580, "CVGxAspectCallback"); + set_name(0x007695B0, "CVGxMaximizeCallback"); + set_name(0x007695E0, "CVGxCursorCallback"); + set_name(0x00769610, "CVGxMultisampleCallback"); + set_name(0x00769650, "CVGxMultisampleQualityCallback"); + set_name(0x007696A0, "CVGxFixLagCallback"); + set_name(0x00769810, "CVGxOverrideCallback"); + set_name(0x00769830, "CVGxMaxFPSCallback"); + set_name(0x00769860, "CVGxMaxFPSBkCallback"); + set_name(0x00769890, "CVGxWindowResizeLockCallback"); + set_name(0x00769950, "SetGxCVars"); + set_name(0x00769C00, "CVGxStereoEnabledCallback"); + set_name(0x0076A220, "CVGxResolutionCallback"); + set_name(0x0076A580, "CVGxRefreshCallback"); + set_name(0x0076A630, "RegisterGxCVars"); set_name(0x0076AB80, "ConsoleDeviceInitialize"); + set_name(0x0076B620, "ConsoleDetectSaveHardware"); + set_name(0x0076BA30, "ConsoleDetectDetectHardware"); set_name(0x0076E4A0, "SMemSetDebugFlags"); set_name(0x0076E540, "SMemAlloc"); set_name(0x0076E5A0, "SMemFree"); @@ -2452,13 +2528,25 @@ static import_symbols() { set_name(0x0076E720, "SStrChrR"); set_name(0x0076E760, "SStrCmp"); set_name(0x0076E780, "SStrCmpI"); + set_name(0x0076EA40, "SStrCmpUTF8I"); set_name(0x0076ED20, "SStrCopy"); set_name(0x0076EE30, "SStrLen"); set_name(0x0076EF70, "SStrPack"); + set_name(0x0076F010, "ISStrVPrintf"); set_name(0x0076F070, "SStrPrintf"); set_name(0x0076F0A0, "SStrVPrintf"); + set_name(0x0076F0D0, "SStrToInt"); + set_name(0x0076F140, "SStrToUnsigned"); set_name(0x0076F1E0, "SStrTokenize"); + set_name(0x0076F340, "SStrHash"); set_name(0x0076F640, "SStrHashHT"); + set_name(0x0076F6C0, "SStrUpper"); + set_name(0x0076F6E0, "SStrLower"); + set_name(0x0076F700, "SStrStr"); + set_name(0x0076F770, "SStrCmp@2"); + set_name(0x0076F7E0, "SStrStrUTF8I"); + set_name(0x0076F9E0, "SStrDupA"); + set_name(0x0076FB80, "SStrToFloat"); set_name(0x00770840, "SRegLoadValue"); set_name(0x007709A0, "SRegSaveValue"); set_name(0x00771870, "SErrSetLastError"); @@ -2479,6 +2567,7 @@ static import_symbols() { set_name(0x00774690, "SSyncObject__Wait"); set_name(0x00774720, "SEvent__Set"); set_name(0x00774730, "SEvent__Reset"); + set_name(0x007757E0, "SLogCreate"); set_name(0x00777420, "SRgnCombineRectf"); set_name(0x00777590, "SRgnGetBoundingRectf"); set_name(0x00777940, "SRgnDelete"); @@ -2544,8 +2633,18 @@ static import_symbols() { set_name(0x00809E30, "Script_SpellStopTargeting"); set_name(0x00809EA0, "Script_SpellStopCasting"); set_name(0x0080DC00, "Script_SpellTargetUnit"); + set_name(0x00816790, "FrameScript_Object__CreateScriptMetaTable"); + set_name(0x008167E0, "FrameScript_Object__FillScriptMethodTable"); + set_name(0x00818070, "FrameScript_Sprintf"); + set_name(0x00819830, "FrameScript_Object__FrameScript_Object"); + set_name(0x00819850, "FrameScript_Object__destructor"); + set_name(0x008199C0, "FrameScript_Object__UnregisterScriptObject"); set_name(0x00819EA0, "FrameScript_Execute"); - set_name(0x0081B530, "FrameScript_SignalEvent"); + set_name(0x0081A2C0, "FrameScript_Object__RunScript"); + set_name(0x0081AA00, "FrameScript_SignalEvent"); + set_name(0x0081AC90, "vFrameScript_SignalEvent"); + set_name(0x0081B530, "FrameScript_SignalEvent@2"); + set_name(0x0081B5F0, "FrameScript_CreateEvents"); set_name(0x0081B720, "Script_GetText"); set_name(0x0081B7B0, "Script_CreateFont"); set_name(0x0081B820, "Script_GetCurrentKeyBoardFocus"); @@ -2599,7 +2698,12 @@ static import_symbols() { set_name(0x0086F5A0, "OsCallSetContext"); set_name(0x0086F760, "OsCallInitialize"); set_name(0x0086F880, "OsCallInitializeContext"); + set_name(0x00872280, "OsClipboardGetString"); set_name(0x008722A0, "OsClipboardPutString"); + set_name(0x008726F0, "InternalClipboardGetString"); + set_name(0x008727E0, "InternalClipboardPutString"); + set_name(0x00872C10, "CShaderEffect__UpdateProjMatrix"); + set_name(0x008A1420, "CVGxVideoOptionsVersionCallback"); set_name(0x008E5250, "return_zero4_sub"); set_name(0x0095BFB0, "ConsoleCommandHistoryDepth"); set_name(0x0095CEC0, "CDataRecycler__Clear"); @@ -2820,13 +2924,247 @@ static import_symbols() { set_name(0x009DE1B0, "nullsub_148"); set_name(0x009DE1C0, "nullsub_149"); set_name(0x009DE1D0, "nullsub_150"); + set_name(0x009E9EC8, "firstByteMark"); set_name(0x009F1074, "s_pixelFormatToMipBitsCache"); set_name(0x00A2DDC0, "CGxDevice__vtable"); set_name(0x00A2E198, "CGxDeviceOpenGl__vtable"); set_name(0x00A2E718, "CGxDeviceD3d__vtable"); set_name(0x00A2F500, "CGxDeviceD3d9Ex__vtable"); + set_name(0x00AB90AC, "System_File__Stacked__s_manager"); set_name(0x00AC1B9C, "s_zorderlist"); set_name(0x00AD2808, "s_cursorNames"); + set_name(0x00AD305C, "g_achievementDB"); + set_name(0x00AD3080, "g_achievement_CriteriaDB"); + set_name(0x00AD30A4, "g_achievement_CategoryDB"); + set_name(0x00AD30C8, "g_animationDataDB"); + set_name(0x00AD30EC, "g_areaGroupDB"); + set_name(0x00AD3110, "g_areaPOIDB"); + set_name(0x00AD3134, "g_areaTableDB"); + set_name(0x00AD3158, "g_areaTriggerDB"); + set_name(0x00AD317C, "g_attackAnimKitsDB"); + set_name(0x00AD31A0, "g_attackAnimTypesDB"); + set_name(0x00AD31C4, "g_auctionHouseDB"); + set_name(0x00AD31E8, "g_bankBagSlotPricesDB"); + set_name(0x00AD320C, "g_bannedAddOnsDB"); + set_name(0x00AD3230, "g_barberShopStyleDB"); + set_name(0x00AD3254, "g_battlemasterListDB"); + set_name(0x00AD3278, "g_cameraShakesDB"); + set_name(0x00AD329C, "g_cfg_CategoriesDB"); + set_name(0x00AD32C0, "g_cfg_ConfigsDB"); + set_name(0x00AD32E4, "g_charBaseInfoDB"); + set_name(0x00AD3308, "g_charHairGeosetsDB"); + set_name(0x00AD332C, "g_charSectionsDB"); + set_name(0x00AD3350, "g_charStartOutfitDB"); + set_name(0x00AD3374, "g_charTitlesDB"); + set_name(0x00AD3398, "g_characterFacialHairStylesDB"); + set_name(0x00AD33BC, "g_chatChannelsDB"); + set_name(0x00AD33E0, "g_chatProfanityDB"); + set_name(0x00AD3404, "g_chrClassesDB"); + set_name(0x00AD3428, "g_chrRacesDB"); + set_name(0x00AD344C, "g_cinematicCameraDB"); + set_name(0x00AD3470, "g_cinematicSequencesDB"); + set_name(0x00AD3494, "g_creatureDisplayInfoExtraDB"); + set_name(0x00AD34B8, "g_creatureDisplayInfoDB"); + set_name(0x00AD34DC, "g_creatureFamilyDB"); + set_name(0x00AD3500, "g_creatureModelDataDB"); + set_name(0x00AD3524, "g_creatureMovementInfoDB"); + set_name(0x00AD3548, "g_creatureSoundDataDB"); + set_name(0x00AD356C, "g_creatureSpellDataDB"); + set_name(0x00AD3590, "g_creatureTypeDB"); + set_name(0x00AD35B4, "g_currencyTypesDB"); + set_name(0x00AD35D8, "g_currencyCategoryDB"); + set_name(0x00AD35FC, "g_danceMovesDB"); + set_name(0x00AD3620, "g_deathThudLookupsDB"); + set_name(0x00AD368C, "g_destructibleModelDataDB"); + set_name(0x00AD36B0, "g_dungeonEncounterDB"); + set_name(0x00AD36D4, "g_dungeonMapDB"); + set_name(0x00AD36F8, "g_dungeonMapChunkDB"); + set_name(0x00AD371C, "g_durabilityCostsDB"); + set_name(0x00AD3740, "g_durabilityQualityDB"); + set_name(0x00AD3764, "g_emotesDB"); + set_name(0x00AD3788, "g_emotesTextDataDB"); + set_name(0x00AD37AC, "g_emotesTextSoundDB"); + set_name(0x00AD37D0, "g_emotesTextDB"); + set_name(0x00AD37F4, "g_environmentalDamageDB"); + set_name(0x00AD3818, "g_exhaustionDB"); + set_name(0x00AD383C, "g_factionGroupDB"); + set_name(0x00AD3860, "g_factionDB"); + set_name(0x00AD3884, "g_factionTemplateDB"); + set_name(0x00AD38A8, "g_fileDataDB"); + set_name(0x00AD38CC, "g_footprintTexturesDB"); + set_name(0x00AD38F0, "g_footstepTerrainLookupDB"); + set_name(0x00AD3914, "g_gameObjectArtKitDB"); + set_name(0x00AD3938, "g_gameObjectDisplayInfoDB"); + set_name(0x00AD395C, "g_gameTablesDB"); + set_name(0x00AD3980, "g_gameTipsDB"); + set_name(0x00AD39A4, "g_gemPropertiesDB"); + set_name(0x00AD39C8, "g_glyphPropertiesDB"); + set_name(0x00AD39EC, "g_glyphSlotDB"); + set_name(0x00AD3A10, "g_gMSurveyAnswersDB"); + set_name(0x00AD3A34, "g_gMSurveyCurrentSurveyDB"); + set_name(0x00AD3A58, "g_gMSurveyQuestionsDB"); + set_name(0x00AD3A7C, "g_gMSurveySurveysDB"); + set_name(0x00AD3AA0, "g_gMTicketCategoryDB"); + set_name(0x00AD3AC4, "g_groundEffectDoodadDB"); + set_name(0x00AD3AE8, "g_groundEffectTextureDB"); + set_name(0x00AD3B0C, "g_gtBarberShopCostBaseDB"); + set_name(0x00AD3B30, "g_gtCombatRatingsDB"); + set_name(0x00AD3B54, "g_gtChanceToMeleeCritDB"); + set_name(0x00AD3B78, "g_gtChanceToMeleeCritBaseDB"); + set_name(0x00AD3B9C, "g_gtChanceToSpellCritDB"); + set_name(0x00AD3BC0, "g_gtChanceToSpellCritBaseDB"); + set_name(0x00AD3BE4, "g_gtNPCManaCostScalerDB"); + set_name(0x00AD3C08, "g_gtOCTClassCombatRatingScalarDB"); + set_name(0x00AD3C2C, "g_gtOCTRegenHPDB"); + set_name(0x00AD3C50, "g_gtOCTRegenMPDB"); + set_name(0x00AD3C74, "g_gtRegenHPPerSptDB"); + set_name(0x00AD3C98, "g_gtRegenMPPerSptDB"); + set_name(0x00AD3CBC, "g_helmetGeosetVisDataDB"); + set_name(0x00AD3CE0, "g_holidayDescriptionsDB"); + set_name(0x00AD3D04, "g_holidayNamesDB"); + set_name(0x00AD3D28, "g_holidaysDB"); + set_name(0x00AD3D4C, "g_itemDB"); + set_name(0x00AD3D70, "g_itemBagFamilyDB"); + set_name(0x00AD3D94, "g_itemClassDB"); + set_name(0x00AD3DB8, "g_itemCondExtCostsDB"); + set_name(0x00AD3DDC, "g_itemDisplayInfoDB"); + set_name(0x00AD3E00, "g_itemExtendedCostDB"); + set_name(0x00AD3E24, "g_itemGroupSoundsDB"); + set_name(0x00AD3E48, "g_itemLimitCategoryDB"); + set_name(0x00AD3E6C, "g_itemPetFoodDB"); + set_name(0x00AD3E90, "g_itemPurchaseGroupDB"); + set_name(0x00AD3EB4, "g_itemRandomPropertiesDB"); + set_name(0x00AD3ED8, "g_itemRandomSuffixDB"); + set_name(0x00AD3EFC, "g_itemSetDB"); + set_name(0x00AD3F20, "g_itemSubClassMaskDB"); + set_name(0x00AD3F44, "g_itemSubClassDB"); + set_name(0x00AD3F68, "g_itemVisualEffectsDB"); + set_name(0x00AD3F8C, "g_itemVisualsDB"); + set_name(0x00AD3FB0, "g_languageWordsDB"); + set_name(0x00AD3FD4, "g_languagesDB"); + set_name(0x00AD3FF8, "g_lfgDungeonExpansionDB"); + set_name(0x00AD401C, "g_lfgDungeonGroupDB"); + set_name(0x00AD4040, "g_lfgDungeonsDB"); + set_name(0x00AD4064, "g_liquidTypeDB"); + set_name(0x00AD4088, "g_liquidMaterialDB"); + set_name(0x00AD40AC, "g_loadingScreensDB"); + set_name(0x00AD40D0, "g_loadingScreenTaxiSplinesDB"); + set_name(0x00AD40F4, "g_lockDB"); + set_name(0x00AD4118, "g_lockTypeDB"); + set_name(0x00AD413C, "g_mailTemplateDB"); + set_name(0x00AD4160, "g_mapDB"); + set_name(0x00AD4184, "g_mapDifficultyDB"); + set_name(0x00AD41A8, "g_materialDB"); + set_name(0x00AD41CC, "g_movieDB"); + set_name(0x00AD41F0, "g_movieFileDataDB"); + set_name(0x00AD4214, "g_movieVariationDB"); + set_name(0x00AD4238, "g_nameGenDB"); + set_name(0x00AD425C, "g_nPCSoundsDB"); + set_name(0x00AD4280, "g_namesProfanityDB"); + set_name(0x00AD42A4, "g_namesReservedDB"); + set_name(0x00AD42C8, "g_overrideSpellDataDB"); + set_name(0x00AD42EC, "g_packageDB"); + set_name(0x00AD4310, "g_pageTextMaterialDB"); + set_name(0x00AD4334, "g_paperDollItemFrameDB"); + set_name(0x00AD4358, "g_particleColorDB"); + set_name(0x00AD437C, "g_petPersonalityDB"); + set_name(0x00AD43A0, "g_powerDisplayDB"); + set_name(0x00AD43C4, "g_pvpDifficultyDB"); + set_name(0x00AD43E8, "g_questFactionRewardDB"); + set_name(0x00AD440C, "g_questInfoDB"); + set_name(0x00AD4430, "g_questSortDB"); + set_name(0x00AD4454, "g_questXPDB"); + set_name(0x00AD4478, "g_resistancesDB"); + set_name(0x00AD449C, "g_randPropPointsDB"); + set_name(0x00AD44C0, "g_scalingStatDistributionDB"); + set_name(0x00AD44E4, "g_scalingStatValuesDB"); + set_name(0x00AD4508, "g_screenEffectDB"); + set_name(0x00AD452C, "g_serverMessagesDB"); + set_name(0x00AD4550, "g_sheatheSoundLookupsDB"); + set_name(0x00AD4574, "g_skillCostsDataDB"); + set_name(0x00AD4598, "g_skillLineAbilityDB"); + set_name(0x00AD45BC, "g_skillLineCategoryDB"); + set_name(0x00AD45E0, "g_skillLineDB"); + set_name(0x00AD4604, "g_skillRaceClassInfoDB"); + set_name(0x00AD4628, "g_skillTiersDB"); + set_name(0x00AD464C, "g_soundAmbienceDB"); + set_name(0x00AD4670, "g_soundEntriesDB"); + set_name(0x00AD4694, "g_soundEmittersDB"); + set_name(0x00AD46B8, "g_soundProviderPreferencesDB"); + set_name(0x00AD46DC, "g_soundSamplePreferencesDB"); + set_name(0x00AD4700, "g_soundWaterTypeDB"); + set_name(0x00AD4724, "g_spamMessagesDB"); + set_name(0x00AD4748, "g_spellCastTimesDB"); + set_name(0x00AD476C, "g_spellCategoryDB"); + set_name(0x00AD4790, "g_spellChainEffectsDB"); + set_name(0x00AD47B4, "g_spellDescriptionVariablesDB"); + set_name(0x00AD47D8, "g_spellDifficultyDB"); + set_name(0x00AD47FC, "g_spellDispelTypeDB"); + set_name(0x00AD4820, "g_spellDurationDB"); + set_name(0x00AD4844, "g_spellEffectCameraShakesDB"); + set_name(0x00AD4868, "g_spellFocusObjectDB"); + set_name(0x00AD488C, "g_spellIconDB"); + set_name(0x00AD48B0, "g_spellItemEnchantmentDB"); + set_name(0x00AD48D4, "g_spellItemEnchantmentConditionDB"); + set_name(0x00AD48F8, "g_spellMechanicDB"); + set_name(0x00AD491C, "g_spellMissileDB"); + set_name(0x00AD4940, "g_spellMissileMotionDB"); + set_name(0x00AD4964, "g_spellRadiusDB"); + set_name(0x00AD4988, "g_spellRangeDB"); + set_name(0x00AD49AC, "g_spellRuneCostDB"); + set_name(0x00AD49D0, "g_spellDB"); + set_name(0x00AD49F4, "g_spellShapeshiftFormDB"); + set_name(0x00AD4A18, "g_spellVisualEffectNameDB"); + set_name(0x00AD4A3C, "g_spellVisualKitDB"); + set_name(0x00AD4A60, "g_spellVisualKitAreaModelDB"); + set_name(0x00AD4A84, "g_spellVisualKitModelAttachDB"); + set_name(0x00AD4AA8, "g_spellVisualDB"); + set_name(0x00AD4ACC, "g_stableSlotPricesDB"); + set_name(0x00AD4AF0, "g_stationeryDB"); + set_name(0x00AD4B14, "g_stringLookupsDB"); + set_name(0x00AD4B38, "g_summonPropertiesDB"); + set_name(0x00AD4B5C, "g_talentDB"); + set_name(0x00AD4B80, "g_talentTabDB"); + set_name(0x00AD4BA4, "g_taxiNodesDB"); + set_name(0x00AD4BC8, "g_taxiPathNodeDB"); + set_name(0x00AD4BEC, "g_taxiPathDB"); + set_name(0x00AD4C10, "g_teamContributionPointsDB"); + set_name(0x00AD4C34, "g_terrainTypeDB"); + set_name(0x00AD4C58, "g_terrainTypeSoundsDB"); + set_name(0x00AD4C7C, "g_totemCategoryDB"); + set_name(0x00AD4CA0, "g_transportAnimationDB"); + set_name(0x00AD4CC4, "g_transportPhysicsDB"); + set_name(0x00AD4CE8, "g_transportRotationDB"); + set_name(0x00AD4D0C, "g_uISoundLookupsDB"); + set_name(0x00AD4D30, "g_unitBloodLevelsDB"); + set_name(0x00AD4D54, "g_unitBloodDB"); + set_name(0x00AD4D78, "g_vehicleDB"); + set_name(0x00AD4D9C, "g_vehicleSeatDB"); + set_name(0x00AD4DC0, "g_vehicleUIIndicatorDB"); + set_name(0x00AD4DE4, "g_vehicleUIIndSeatDB"); + set_name(0x00AD4E08, "g_vocalUISoundsDB"); + set_name(0x00AD4E2C, "g_wMOAreaTableDB"); + set_name(0x00AD4E50, "g_weaponImpactSoundsDB"); + set_name(0x00AD4E74, "g_weaponSwingSounds2DB"); + set_name(0x00AD4E98, "g_weatherDB"); + set_name(0x00AD4EBC, "g_worldMapAreaDB"); + set_name(0x00AD4EE0, "g_worldMapContinentDB"); + set_name(0x00AD4F04, "g_worldMapOverlayDB"); + set_name(0x00AD4F28, "g_worldMapTransformsDB"); + set_name(0x00AD4F4C, "g_worldSafeLocsDB"); + set_name(0x00AD4F70, "g_worldStateUIDB"); + set_name(0x00AD4F94, "g_zoneIntroMusicTableDB"); + set_name(0x00AD4FB8, "g_zoneMusicDB"); + set_name(0x00AD4FDC, "g_worldStateZoneSoundsDB"); + set_name(0x00AD5000, "g_worldChunkSoundsDB"); + set_name(0x00AD5024, "g_soundEntriesAdvancedDB"); + set_name(0x00AD5048, "g_objectEffectDB"); + set_name(0x00AD506C, "g_objectEffectGroupDB"); + set_name(0x00AD5090, "g_objectEffectModifierDB"); + set_name(0x00AD50B4, "g_objectEffectPackageDB"); + set_name(0x00AD50D8, "g_objectEffectPackageElemDB"); + set_name(0x00AD50FC, "g_soundFilterDB"); + set_name(0x00AD5120, "g_soundFilterElemDB"); set_name(0x00AD90B0, "CBLPFile__s_eightBitAlphaLookup"); set_name(0x00AD90C0, "CBLPFile__s_oneBitAlphaLookup"); set_name(0x00ADBAB4, "s_rect"); @@ -2835,6 +3173,12 @@ static import_symbols() { set_name(0x00ADBACC, "s_fontHeight"); set_name(0x00ADBAD4, "s_hRect"); set_name(0x00ADBAE4, "s_baseTextFlags"); + set_name(0x00ADBBB0, "s_linelist"); + set_name(0x00AF4998, "g_lightSkyboxDB"); + set_name(0x00AF49BC, "g_lightIntBandDB"); + set_name(0x00AF49E0, "g_lightFloatBandDB"); + set_name(0x00AF4A04, "g_lightParamsDB"); + set_name(0x00AF4A28, "g_lightDB"); set_name(0x00B417C8, "s_mainThread"); set_name(0x00B417D0, "s_interactiveCount"); set_name(0x00B41850, "s_messageRecycler"); @@ -2851,10 +3195,12 @@ static import_symbols() { set_name(0x00C5DF88, "g_theGxDevicePtr"); set_name(0x00C5DFDC, "CGxDevice__s_uiVertexShader"); set_name(0x00C5DFE0, "CGxDevice__s_shadowConstants"); + set_name(0x00C5FFF8, "CGxDevice__m_log"); set_name(0x00C5FFFC, "CGxDevice__s_uiPixelShader"); set_name(0x00C60760, "isIdent"); set_name(0x00CA1690, "s_caretpixheight"); set_name(0x00CA1694, "s_caret"); + set_name(0x00CA1698, "s_copyText"); set_name(0x00CA1718, "s_caretpixwidth"); set_name(0x00CA171C, "s_inputString"); set_name(0x00CA1720, "s_currlineptr"); @@ -2865,20 +3211,53 @@ static import_symbols() { set_name(0x00CA1870, "s_layerText"); set_name(0x00CA1874, "s_batch"); set_name(0x00CA1878, "s_partial"); + set_name(0x00CA1978, "s_active"); set_name(0x00CA197C, "s_NumLines"); set_name(0x00CA1980, "s_completionMode"); set_name(0x00CA1984, "s_completedCmd"); set_name(0x00CA198C, "s_textFont"); set_name(0x00CA1990, "s_consoleResizeState"); set_name(0x00CA1994, "s_highlightState"); + set_name(0x00CA1998, "s_highlightHStart"); + set_name(0x00CA199C, "s_highlightHEnd"); set_name(0x00CA19A0, "s_highlightLeftCharIndex"); set_name(0x00CA19A4, "s_highlightRightCharIndex"); set_name(0x00CA19A8, "s_charSpacing"); set_name(0x00CA19B0, "s_consoleHeight"); + set_name(0x00CA19B4, "s_critsect"); set_name(0x00CA19F0, "carettime"); + set_name(0x00CA19F4, "s_fileName"); + set_name(0x00CA19F9, "CVar__m_initialized"); + set_name(0x00CA19FC, "s_registeredCVars"); set_name(0x00CA3A28, "g_commandHistory"); set_name(0x00CABA28, "g_commandHistoryIndex"); set_name(0x00CABA2C, "g_defaultCommand"); set_name(0x00CABA30, "g_consoleCommandHash"); + set_name(0x00CABA98, "s_cvGxStereoEnabled"); + set_name(0x00CABA9C, "s_cvGxRefresh"); + set_name(0x00CABAA0, "s_cvGxMaximize"); + set_name(0x00CABAA4, "s_cvGxMultisample"); + set_name(0x00CABAA8, "s_cvGxCursor"); + set_name(0x00CABAB0, "s_cvGxMultisampleQuality"); + set_name(0x00CABAB4, "s_cvGxResolution"); + set_name(0x00CABAB8, "s_cvHwDetect"); + set_name(0x00CABABC, "s_cvGxOverride"); + set_name(0x00CABAC0, "s_cvGxFixLag"); + set_name(0x00CABAC4, "s_cvMaxFPS"); + set_name(0x00CABAEC, "s_cvGxVSync"); + set_name(0x00CABB30, "s_cvVideoOptionsVersion"); + set_name(0x00CABB6C, "s_cvMaxFPSBk"); + set_name(0x00CABB70, "s_cvGxTripleBuffer"); + set_name(0x00CABB74, "s_cvGxDepthBits"); + set_name(0x00CABB78, "s_cvGxColorBits"); + set_name(0x00CABBA0, "s_cvGxApi"); + set_name(0x00CABBA4, "s_cvGxAspect"); + set_name(0x00CABBA8, "s_cvFixedFunction"); + set_name(0x00CABBAC, "s_cvWidescreen"); + set_name(0x00CABBB0, "s_cvGxWindow"); + set_name(0x00CABBB4, "s_cvWindowResizeLock"); + set_name(0x00CABCBE, "s_hwDetect"); set_name(0x00CABCC4, "s_consoleAccessEnabled"); + set_name(0x00CABCD8, "s_requestedFormat"); + set_name(0x00D43020, "CShaderEffect__s_enableShaders"); } diff --git a/profile/3.3.5a-windows-386/ida/test.txt b/profile/3.3.5a-windows-386/ida/test.txt new file mode 100644 index 0000000..e69de29 diff --git a/profile/3.3.5a-windows-386/include/bc/file/filesystem.h b/profile/3.3.5a-windows-386/include/bc/file/filesystem.h new file mode 100644 index 0000000..503f773 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/bc/file/filesystem.h @@ -0,0 +1,82 @@ +#ifndef BC_FILE_FILESYSTEM_H +#define BC_FILE_FILESYSTEM_H + +#include "bc/systemfile/stacked.h" + +DECLARE_ENUM(Blizzard__File__Operation); + +DECLARE_STRUCT(Blizzard__File__Filesystem); + +// invented enum +enum Blizzard__File__Operation { + cd, + close, + create, + cwd, + dirwalk, + exists, + flush, + getfileinfo, + getfreespace, + getpos, + getrootchars, + isabspath, + isreadonly, + makeabspath, + mkdir, + move, + copy, + open, + read, + readp, + rmdir, + setcachemode, + seteof, + setfileinfo, + setpos, + unlink, + write, + writep, + shutdown, + num_operations +}; + +#define FS_OP(N) bool (*f_##N)(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms) + +// 0x7C bytes = 4 + 4 + (29 * 4) +struct Blizzard__File__Filesystem { + Blizzard__File__Filesystem* base; + Blizzard__File__Filesystem* next; + + FS_OP(cd); + FS_OP(close); + FS_OP(create); + FS_OP(cwd); + FS_OP(dirwalk); + FS_OP(exists); + FS_OP(flush); + FS_OP(getfileinfo); + FS_OP(getfreespace); + FS_OP(getpos); + FS_OP(getrootchars); + FS_OP(isabspath); + FS_OP(isreadonly); + FS_OP(makeabspath); + FS_OP(mkdir); + FS_OP(move); + FS_OP(copy); + FS_OP(open); + FS_OP(read); + FS_OP(readp); + FS_OP(rmdir); + FS_OP(setcachemode); + FS_OP(seteof); + FS_OP(setfileinfo); + FS_OP(setpos); + FS_OP(unlink); + FS_OP(write); + FS_OP(writep); + FS_OP(shutdown); +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/bc/file/stream.h b/profile/3.3.5a-windows-386/include/bc/file/stream.h new file mode 100644 index 0000000..897f766 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/bc/file/stream.h @@ -0,0 +1,10 @@ +#ifndef BC_FILE_STREAM_H +#define BC_FILE_STREAM_H + +DECLARE_STRUCT(Blizzard__File__StreamRecord); + +struct Blizzard__File__StreamRecord { + void* handle; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/bc/osfile.h b/profile/3.3.5a-windows-386/include/bc/osfile.h new file mode 100644 index 0000000..06417c3 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/bc/osfile.h @@ -0,0 +1,8 @@ +#ifndef BC_OS_FILE_H +#define BC_OS_FILE_H + +#include "common/handle.h" + +DECLARE_HANDLE(HOSFILE); + +#endif diff --git a/profile/3.3.5a-windows-386/include/bc/systemfile/stacked.h b/profile/3.3.5a-windows-386/include/bc/systemfile/stacked.h new file mode 100644 index 0000000..45060b6 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/bc/systemfile/stacked.h @@ -0,0 +1,10 @@ +#ifndef BC_SYSTEM_FILE_STACKED_H +#define BC_SYSTEM_FILE_STACKED_H + +DECLARE_STRUCT(System_File__Stacked__FileParms); + +struct System_File__Stacked__FileParms { + uint32_t offset; +}; + +#endif diff --git a/profile/3.3.5a-windows-386/include/console/command.h b/profile/3.3.5a-windows-386/include/console/command.h new file mode 100644 index 0000000..e49b051 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/console/command.h @@ -0,0 +1,21 @@ +#ifndef CONSOLE_COMMAND_H +#define CONSOLE_COMMAND_H + +DECLARE_STRUCT(CONSOLECOMMAND); + +#include "console/types.h" +#include "storm/hash.h" + +STORM_TS_HASH(CONSOLECOMMAND, HASHKEY_STRI); + +typedef int32_t (*COMMANDHANDLER)(const char*, const char*); + +// class CONSOLECOMMAND : public TSHashObject +struct CONSOLECOMMAND { + TSHashObject_CONSOLECOMMAND_HASHKEY_STRI b_base; + COMMANDHANDLER m_handler; + const char* m_helpText; + CATEGORY m_category; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/console/line.h b/profile/3.3.5a-windows-386/include/console/line.h new file mode 100644 index 0000000..a280237 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/console/line.h @@ -0,0 +1,24 @@ +#ifndef CONSOLE_LINE_H +#define CONSOLE_LINE_H + +DECLARE_STRUCT(CONSOLELINE); + +#include "storm/list.h" +#include "console/types.h" +#include "gx/string.h" + +STORM_TS_LIST(CONSOLELINE); + +// struct CONSOLELINE : TSLinkedNode +struct CONSOLELINE { + TSLinkedNode_CONSOLELINE b_base; + uint8_t* buffer; + uint32_t chars; + uint32_t charsalloc; + uint32_t inputpos; + uint32_t inputstart; + COLOR_T colorType; + CGxString* fontPointer; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/console/types.h b/profile/3.3.5a-windows-386/include/console/types.h new file mode 100644 index 0000000..852a3c7 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/console/types.h @@ -0,0 +1,51 @@ +#ifndef CONSOLE_TYPES_H +#define CONSOLE_TYPES_H + +DECLARE_ENUM(COLOR_T); +DECLARE_ENUM(CATEGORY); +DECLARE_ENUM(EXECMODE); +DECLARE_ENUM(CONSOLERESIZESTATE); + +enum COLOR_T { + DEFAULT_COLOR = 0, + INPUT_COLOR = 1, + ECHO_COLOR = 2, + ERROR_COLOR = 3, + WARNING_COLOR = 4, + GLOBAL_COLOR = 5, + ADMIN_COLOR = 6, + HIGHLIGHT_COLOR = 7, + BACKGROUND_COLOR = 8, + NUM_COLORTYPES +}; + +enum CATEGORY { + DEBUG = 0, + GRAPHICS = 1, + CONSOLE = 2, + COMBAT = 3, + GAME = 4, + DEFAULT = 5, + NET = 6, + SOUND = 7, + GM = 8, + NONE = 9, + LAST +}; + +enum EXECMODE { + EM_PROMPTOVERWRITE = 0, + EM_RECORDING = 1, + EM_APPEND = 2, + EM_WRITEFILE = 3, + EM_NOTACTIVE = 4, + EM_NUM_EXECMODES +}; + +enum CONSOLERESIZESTATE { + CS_NONE = 0, + CS_STRETCH = 1, + NUM_CONSOLERESIZESTATES +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/console/var.h b/profile/3.3.5a-windows-386/include/console/var.h new file mode 100644 index 0000000..3f0d556 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/console/var.h @@ -0,0 +1,28 @@ +#ifndef CONSOLE_VAR_H +#define CONSOLE_VAR_H + +DECLARE_STRUCT(CVar); + +#include "common/rcstring.h" +#include "storm/hash.h" + +STORM_TS_HASH(CVar, HASHKEY_STRI); + +// class CVar : public TSHashObject +struct CVar { + TSHashObject_CVar_HASHKEY_STRI b_base; + uint32_t m_category; + uint32_t m_flags; + RCString m_stringValue; + float m_floatValue; + int32_t m_intValue; + int32_t m_modified; + RCString m_defaultValue; + RCString m_resetValue; + RCString m_latchedValue; + RCString m_help; + bool (*m_callback)(CVar*, const char*, const char*, void*); + void* m_arg; +}; + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/db/clientdb.h b/profile/3.3.5a-windows-386/include/db/clientdb.h new file mode 100644 index 0000000..efa33ba --- /dev/null +++ b/profile/3.3.5a-windows-386/include/db/clientdb.h @@ -0,0 +1,35 @@ +#ifndef DB_CLIENT_DB_H +#define DB_CLIENT_DB_H + +#include "db/idatabase.h" + +DECLARE_STRUCT(WowClientDB_Base); +DECLARE_STRUCT(WowClientDB_Base__v_table); + +struct WowClientDB_Base__v_table { + void* v_fn_00; +}; + +struct WowClientDB_Base { + void** v_table; + // Member variables + int32_t m_loaded; + int32_t m_numRecords; + int32_t m_maxID; + int32_t m_minID; + const char* m_strings; +}; + +#define DB_CLIENT_DB(T) \ +DB_I_DATABASE(T); \ +typedef struct WowClientDB_Common_##T WowClientDB_Common_##T; \ +typedef struct WowClientDB_##T WowClientDB_##T; \ +struct WowClientDB_Common_##T { \ + WowClientDB_Base b_base; \ +}; \ +struct WowClientDB_##T { \ + WowClientDB_Common_##T b_base_01; \ + IDatabase_##T b_base_02; \ +} + +#endif diff --git a/profile/3.3.5a-windows-386/include/db/idatabase.h b/profile/3.3.5a-windows-386/include/db/idatabase.h new file mode 100644 index 0000000..ce71610 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/db/idatabase.h @@ -0,0 +1,19 @@ +#ifndef DB_I_DATABASE_H +#define DB_I_DATABASE_H + +DECLARE_STRUCT(IDatabase__vtable); + +struct IDatabase__vtable { + // T* GetRecord(int32_t id); + void* v_fn_GetRecord; +}; + +#define DB_I_DATABASE(T) \ +typedef struct IDatabase_##T IDatabase_##T; \ +struct IDatabase_##T { \ + IDatabase__vtable* v_table; \ + T* m_records; \ + T** m_recordsById; \ +} + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/db/records.h b/profile/3.3.5a-windows-386/include/db/records.h new file mode 100644 index 0000000..7295d13 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/db/records.h @@ -0,0 +1,6331 @@ +// DO NOT EDIT: generated by whoa-autocode +#ifndef DB_RECORDS_H +#define DB_RECORDS_H + +#include "db/clientdb.h" + +DECLARE_STRUCT(AchievementRec); +DECLARE_STRUCT(Achievement_CategoryRec); +DECLARE_STRUCT(Achievement_CriteriaRec); +DECLARE_STRUCT(AnimKitRec); +DECLARE_STRUCT(AnimKitBoneSetRec); +DECLARE_STRUCT(AnimKitBoneSetAliasRec); +DECLARE_STRUCT(AnimKitConfigRec); +DECLARE_STRUCT(AnimKitConfigBoneSetRec); +DECLARE_STRUCT(AnimKitPriorityRec); +DECLARE_STRUCT(AnimKitSegmentRec); +DECLARE_STRUCT(AnimReplacementRec); +DECLARE_STRUCT(AnimReplacementSetRec); +DECLARE_STRUCT(AnimationDataRec); +DECLARE_STRUCT(AreaAssignmentRec); +DECLARE_STRUCT(AreaGroupRec); +DECLARE_STRUCT(AreaPOIRec); +DECLARE_STRUCT(AreaTableRec); +DECLARE_STRUCT(AreaTriggerRec); +DECLARE_STRUCT(ArmorLocationRec); +DECLARE_STRUCT(AttackAnimKitsRec); +DECLARE_STRUCT(AttackAnimTypesRec); +DECLARE_STRUCT(AuctionHouseRec); +DECLARE_STRUCT(BankBagSlotPricesRec); +DECLARE_STRUCT(BannedAddonsRec); +DECLARE_STRUCT(BarberShopStyleRec); +DECLARE_STRUCT(BattlemasterListRec); +DECLARE_STRUCT(CameraModeRec); +DECLARE_STRUCT(CameraShakesRec); +DECLARE_STRUCT(Cfg_CategoriesRec); +DECLARE_STRUCT(Cfg_ConfigsRec); +DECLARE_STRUCT(CharBaseInfoRec); +DECLARE_STRUCT(CharHairGeosetsRec); +DECLARE_STRUCT(CharHairTexturesRec); +DECLARE_STRUCT(CharSectionsRec); +DECLARE_STRUCT(CharStartOutfitRec); +DECLARE_STRUCT(CharTitlesRec); +DECLARE_STRUCT(CharVariationsRec); +DECLARE_STRUCT(CharacterFacialHairStylesRec); +DECLARE_STRUCT(ChatChannelsRec); +DECLARE_STRUCT(ChatProfanityRec); +DECLARE_STRUCT(ChrClassesRec); +DECLARE_STRUCT(ChrRacesRec); +DECLARE_STRUCT(CinematicCameraRec); +DECLARE_STRUCT(CinematicSequencesRec); +DECLARE_STRUCT(CreatureDisplayInfoRec); +DECLARE_STRUCT(CreatureDisplayInfoExtraRec); +DECLARE_STRUCT(CreatureFamilyRec); +DECLARE_STRUCT(CreatureModelDataRec); +DECLARE_STRUCT(CreatureMovementInfoRec); +DECLARE_STRUCT(CreatureSoundDataRec); +DECLARE_STRUCT(CreatureSpellDataRec); +DECLARE_STRUCT(CreatureTypeRec); +DECLARE_STRUCT(CurrencyCategoryRec); +DECLARE_STRUCT(CurrencyTypesRec); +DECLARE_STRUCT(DanceMovesRec); +DECLARE_STRUCT(DeathThudLookupsRec); +DECLARE_STRUCT(DeclinedWordRec); +DECLARE_STRUCT(DeclinedWordCasesRec); +DECLARE_STRUCT(DestructibleModelDataRec); +DECLARE_STRUCT(DungeonEncounterRec); +DECLARE_STRUCT(DungeonMapRec); +DECLARE_STRUCT(DungeonMapChunkRec); +DECLARE_STRUCT(DurabilityCostsRec); +DECLARE_STRUCT(DurabilityQualityRec); +DECLARE_STRUCT(EmotesRec); +DECLARE_STRUCT(EmotesTextRec); +DECLARE_STRUCT(EmotesTextDataRec); +DECLARE_STRUCT(EmotesTextSoundRec); +DECLARE_STRUCT(EnvironmentalDamageRec); +DECLARE_STRUCT(ExhaustionRec); +DECLARE_STRUCT(FactionRec); +DECLARE_STRUCT(FactionGroupRec); +DECLARE_STRUCT(FactionTemplateRec); +DECLARE_STRUCT(FileDataRec); +DECLARE_STRUCT(FootprintTexturesRec); +DECLARE_STRUCT(FootstepTerrainLookupRec); +DECLARE_STRUCT(GMSurveyAnswersRec); +DECLARE_STRUCT(GMSurveyCurrentSurveyRec); +DECLARE_STRUCT(GMSurveyQuestionsRec); +DECLARE_STRUCT(GMSurveySurveysRec); +DECLARE_STRUCT(GMTicketCategoryRec); +DECLARE_STRUCT(GameObjectArtKitRec); +DECLARE_STRUCT(GameObjectDisplayInfoRec); +DECLARE_STRUCT(GameTablesRec); +DECLARE_STRUCT(GameTipsRec); +DECLARE_STRUCT(GemPropertiesRec); +DECLARE_STRUCT(GlueScreenEmoteRec); +DECLARE_STRUCT(GlyphPropertiesRec); +DECLARE_STRUCT(GlyphSlotRec); +DECLARE_STRUCT(GroundEffectDoodadRec); +DECLARE_STRUCT(GroundEffectTextureRec); +DECLARE_STRUCT(GuildPerkSpellsRec); +DECLARE_STRUCT(HelmetGeosetVisDataRec); +DECLARE_STRUCT(HolidayDescriptionsRec); +DECLARE_STRUCT(HolidayNamesRec); +DECLARE_STRUCT(HolidaysRec); +DECLARE_STRUCT(ItemRec); +DECLARE_STRUCT(ItemArmorQualityRec); +DECLARE_STRUCT(ItemArmorShieldRec); +DECLARE_STRUCT(ItemArmorTotalRec); +DECLARE_STRUCT(ItemBagFamilyRec); +DECLARE_STRUCT(ItemClassRec); +DECLARE_STRUCT(ItemCondExtCostsRec); +DECLARE_STRUCT(ItemDamageAmmoRec); +DECLARE_STRUCT(ItemDamageOneHandRec); +DECLARE_STRUCT(ItemDamageOneHandCasterRec); +DECLARE_STRUCT(ItemDamageRangedRec); +DECLARE_STRUCT(ItemDamageThrownRec); +DECLARE_STRUCT(ItemDamageTwoHandRec); +DECLARE_STRUCT(ItemDamageTwoHandCasterRec); +DECLARE_STRUCT(ItemDamageWandRec); +DECLARE_STRUCT(ItemDisplayInfoRec); +DECLARE_STRUCT(ItemExtendedCostRec); +DECLARE_STRUCT(ItemGroupSoundsRec); +DECLARE_STRUCT(ItemLimitCategoryRec); +DECLARE_STRUCT(ItemPetFoodRec); +DECLARE_STRUCT(ItemPurchaseGroupRec); +DECLARE_STRUCT(ItemRandomPropertiesRec); +DECLARE_STRUCT(ItemRandomSuffixRec); +DECLARE_STRUCT(ItemReforgeRec); +DECLARE_STRUCT(ItemSetRec); +DECLARE_STRUCT(ItemSubClassRec); +DECLARE_STRUCT(ItemSubClassMaskRec); +DECLARE_STRUCT(ItemVisualEffectsRec); +DECLARE_STRUCT(ItemVisualsRec); +DECLARE_STRUCT(LFGDungeonExpansionRec); +DECLARE_STRUCT(LFGDungeonGroupRec); +DECLARE_STRUCT(LFGDungeonsRec); +DECLARE_STRUCT(LanguageWordsRec); +DECLARE_STRUCT(LanguagesRec); +DECLARE_STRUCT(LightRec); +DECLARE_STRUCT(LightFloatBandRec); +DECLARE_STRUCT(LightIntBandRec); +DECLARE_STRUCT(LightParamsRec); +DECLARE_STRUCT(LightSkyboxRec); +DECLARE_STRUCT(LiquidMaterialRec); +DECLARE_STRUCT(LiquidObjectRec); +DECLARE_STRUCT(LiquidTypeRec); +DECLARE_STRUCT(LoadingScreenTaxiSplinesRec); +DECLARE_STRUCT(LoadingScreensRec); +DECLARE_STRUCT(LockRec); +DECLARE_STRUCT(LockTypeRec); +DECLARE_STRUCT(MailTemplateRec); +DECLARE_STRUCT(MapRec); +DECLARE_STRUCT(MapDifficultyRec); +DECLARE_STRUCT(MaterialRec); +DECLARE_STRUCT(MountTypeRec); +DECLARE_STRUCT(MovieRec); +DECLARE_STRUCT(MovieFileDataRec); +DECLARE_STRUCT(MovieVariationRec); +DECLARE_STRUCT(NPCSoundsRec); +DECLARE_STRUCT(NameGenRec); +DECLARE_STRUCT(NamesProfanityRec); +DECLARE_STRUCT(NamesReservedRec); +DECLARE_STRUCT(ObjectEffectRec); +DECLARE_STRUCT(ObjectEffectGroupRec); +DECLARE_STRUCT(ObjectEffectModifierRec); +DECLARE_STRUCT(ObjectEffectPackageRec); +DECLARE_STRUCT(ObjectEffectPackageElemRec); +DECLARE_STRUCT(OverrideSpellDataRec); +DECLARE_STRUCT(PVPDifficultyRec); +DECLARE_STRUCT(PackageRec); +DECLARE_STRUCT(PageTextMaterialRec); +DECLARE_STRUCT(PaperDollItemFrameRec); +DECLARE_STRUCT(ParticleColorRec); +DECLARE_STRUCT(PetPersonalityRec); +DECLARE_STRUCT(PetitionTypeRec); +DECLARE_STRUCT(PhaseRec); +DECLARE_STRUCT(PhaseShiftZoneSoundsRec); +DECLARE_STRUCT(PhaseXPhaseGroupRec); +DECLARE_STRUCT(PowerDisplayRec); +DECLARE_STRUCT(QuestFactionRewardRec); +DECLARE_STRUCT(QuestInfoRec); +DECLARE_STRUCT(QuestSortRec); +DECLARE_STRUCT(QuestXPRec); +DECLARE_STRUCT(RandPropPointsRec); +DECLARE_STRUCT(ResearchBranchRec); +DECLARE_STRUCT(ResistancesRec); +DECLARE_STRUCT(ScalingStatDistributionRec); +DECLARE_STRUCT(ScalingStatValuesRec); +DECLARE_STRUCT(ScreenEffectRec); +DECLARE_STRUCT(ServerMessagesRec); +DECLARE_STRUCT(SheatheSoundLookupsRec); +DECLARE_STRUCT(SkillCostsDataRec); +DECLARE_STRUCT(SkillLineRec); +DECLARE_STRUCT(SkillLineAbilityRec); +DECLARE_STRUCT(SkillLineCategoryRec); +DECLARE_STRUCT(SkillRaceClassInfoRec); +DECLARE_STRUCT(SkillTiersRec); +DECLARE_STRUCT(SoundAmbienceRec); +DECLARE_STRUCT(SoundEmittersRec); +DECLARE_STRUCT(SoundEntriesRec); +DECLARE_STRUCT(SoundEntriesAdvancedRec); +DECLARE_STRUCT(SoundFilterRec); +DECLARE_STRUCT(SoundFilterElemRec); +DECLARE_STRUCT(SoundProviderPreferencesRec); +DECLARE_STRUCT(SoundSamplePreferencesRec); +DECLARE_STRUCT(SoundWaterTypeRec); +DECLARE_STRUCT(SpamMessagesRec); +DECLARE_STRUCT(SpellRec); +DECLARE_STRUCT(SpellAuraOptionsRec); +DECLARE_STRUCT(SpellAuraRestrictionsRec); +DECLARE_STRUCT(SpellCastTimesRec); +DECLARE_STRUCT(SpellCastingRequirementsRec); +DECLARE_STRUCT(SpellCategoriesRec); +DECLARE_STRUCT(SpellCategoryRec); +DECLARE_STRUCT(SpellChainEffectsRec); +DECLARE_STRUCT(SpellClassOptionsRec); +DECLARE_STRUCT(SpellCooldownsRec); +DECLARE_STRUCT(SpellDescriptionVariablesRec); +DECLARE_STRUCT(SpellDifficultyRec); +DECLARE_STRUCT(SpellDispelTypeRec); +DECLARE_STRUCT(SpellDurationRec); +DECLARE_STRUCT(SpellEffectRec); +DECLARE_STRUCT(SpellEffectCameraShakesRec); +DECLARE_STRUCT(SpellEquippedItemsRec); +DECLARE_STRUCT(SpellFocusObjectRec); +DECLARE_STRUCT(SpellIconRec); +DECLARE_STRUCT(SpellInterruptsRec); +DECLARE_STRUCT(SpellItemEnchantmentRec); +DECLARE_STRUCT(SpellItemEnchantmentConditionRec); +DECLARE_STRUCT(SpellLevelsRec); +DECLARE_STRUCT(SpellMechanicRec); +DECLARE_STRUCT(SpellMissileRec); +DECLARE_STRUCT(SpellMissileMotionRec); +DECLARE_STRUCT(SpellPowerRec); +DECLARE_STRUCT(SpellRadiusRec); +DECLARE_STRUCT(SpellRangeRec); +DECLARE_STRUCT(SpellReagentsRec); +DECLARE_STRUCT(SpellRuneCostRec); +DECLARE_STRUCT(SpellScalingRec); +DECLARE_STRUCT(SpellShapeshiftRec); +DECLARE_STRUCT(SpellShapeshiftFormRec); +DECLARE_STRUCT(SpellTargetRestrictionsRec); +DECLARE_STRUCT(SpellTotemsRec); +DECLARE_STRUCT(SpellVisualRec); +DECLARE_STRUCT(SpellVisualEffectNameRec); +DECLARE_STRUCT(SpellVisualKitRec); +DECLARE_STRUCT(SpellVisualKitAreaModelRec); +DECLARE_STRUCT(SpellVisualKitModelAttachRec); +DECLARE_STRUCT(SpellVisualPrecastTransitionsRec); +DECLARE_STRUCT(StableSlotPricesRec); +DECLARE_STRUCT(Startup_StringsRec); +DECLARE_STRUCT(StationeryRec); +DECLARE_STRUCT(StringLookupsRec); +DECLARE_STRUCT(SummonPropertiesRec); +DECLARE_STRUCT(TalentRec); +DECLARE_STRUCT(TalentTabRec); +DECLARE_STRUCT(TaxiNodesRec); +DECLARE_STRUCT(TaxiPathRec); +DECLARE_STRUCT(TaxiPathNodeRec); +DECLARE_STRUCT(TeamContributionPointsRec); +DECLARE_STRUCT(TerrainMaterialRec); +DECLARE_STRUCT(TerrainTypeRec); +DECLARE_STRUCT(TerrainTypeSoundsRec); +DECLARE_STRUCT(TotemCategoryRec); +DECLARE_STRUCT(TransportAnimationRec); +DECLARE_STRUCT(TransportPhysicsRec); +DECLARE_STRUCT(TransportRotationRec); +DECLARE_STRUCT(UISoundLookupsRec); +DECLARE_STRUCT(UnitBloodRec); +DECLARE_STRUCT(UnitBloodLevelsRec); +DECLARE_STRUCT(VehicleRec); +DECLARE_STRUCT(VehicleSeatRec); +DECLARE_STRUCT(VehicleUIIndSeatRec); +DECLARE_STRUCT(VehicleUIIndicatorRec); +DECLARE_STRUCT(VideoHardwareRec); +DECLARE_STRUCT(VocalUISoundsRec); +DECLARE_STRUCT(WMOAreaTableRec); +DECLARE_STRUCT(WeaponImpactSoundsRec); +DECLARE_STRUCT(WeaponSwingSounds2Rec); +DECLARE_STRUCT(WeatherRec); +DECLARE_STRUCT(WorldChunkSoundsRec); +DECLARE_STRUCT(WorldMapAreaRec); +DECLARE_STRUCT(WorldMapContinentRec); +DECLARE_STRUCT(WorldMapOverlayRec); +DECLARE_STRUCT(WorldMapTransformsRec); +DECLARE_STRUCT(WorldSafeLocsRec); +DECLARE_STRUCT(WorldStateUIRec); +DECLARE_STRUCT(WorldStateZoneSoundsRec); +DECLARE_STRUCT(WowError_StringsRec); +DECLARE_STRUCT(ZoneIntroMusicTableRec); +DECLARE_STRUCT(ZoneLightRec); +DECLARE_STRUCT(ZoneLightPointRec); +DECLARE_STRUCT(ZoneMusicRec); +DECLARE_STRUCT(gtBarberShopCostBaseRec); +DECLARE_STRUCT(gtChanceToMeleeCritRec); +DECLARE_STRUCT(gtChanceToMeleeCritBaseRec); +DECLARE_STRUCT(gtChanceToSpellCritRec); +DECLARE_STRUCT(gtChanceToSpellCritBaseRec); +DECLARE_STRUCT(gtCombatRatingsRec); +DECLARE_STRUCT(gtNPCManaCostScalerRec); +DECLARE_STRUCT(gtOCTClassCombatRatingScalarRec); +DECLARE_STRUCT(gtOCTRegenHPRec); +DECLARE_STRUCT(gtOCTRegenMPRec); +DECLARE_STRUCT(gtRegenHPPerSptRec); +DECLARE_STRUCT(gtRegenMPPerSptRec); +DECLARE_STRUCT(gtSpellScalingRec); + +struct AchievementRec { + int32_t m_ID; + int32_t m_faction; + int32_t m_instanceID; + int32_t m_supercedes; + const char* m_title; + const char* m_description; + int32_t m_category; + int32_t m_points; + int32_t m_uiOrder; + int32_t m_flags; + int32_t m_iconID; + const char* m_reward; + int32_t m_minimumCriteria; + int32_t m_sharesCriteria; +}; + +struct Achievement_CategoryRec { + int32_t m_ID; + int32_t m_parent; + const char* m_name; + int32_t m_uiOrder; +}; + +struct Achievement_CriteriaRec { + int32_t m_ID; + int32_t m_achievementID; + int32_t m_type; + int32_t m_assetID; + int32_t m_quantity; + int32_t m_startEvent; + int32_t m_startAsset; + int32_t m_failEvent; + int32_t m_failAsset; + const char* m_description; + int32_t m_flags; + int32_t m_timerStartEvent; + int32_t m_timerAssetID; + int32_t m_timerTime; + int32_t m_uiOrder; +}; + +struct AnimKitRec { + int32_t m_ID; + int32_t m_oneShotDuration; + int32_t m_oneShotStopAnimKitID; +}; + +struct AnimKitBoneSetRec { + int32_t m_ID; + const char* m_name; + int32_t m_boneDataID; + int32_t m_parentAnimKitBoneSetID; + int32_t m_extraBoneCount; + int32_t m_altAnimKitBoneSetID; +}; + +struct AnimKitBoneSetAliasRec { + int32_t m_ID; + int32_t m_boneDataID; + int32_t m_animKitBoneSetID; +}; + +struct AnimKitConfigRec { + int32_t m_ID; + int32_t m_configFlags; +}; + +struct AnimKitConfigBoneSetRec { + int32_t m_ID; + int32_t m_parentAnimKitConfigID; + int32_t m_animKitBoneSetID; + int32_t m_animKitPriorityID; +}; + +struct AnimKitPriorityRec { + int32_t m_ID; + int32_t m_priority; +}; + +struct AnimKitSegmentRec { + int32_t m_ID; + int32_t m_parentAnimKitID; + int32_t m_animID; + int32_t m_animStartTime; + int32_t m_animKitConfigID; + int32_t m_startCondition; + int32_t m_startConditionParam; + int32_t m_startConditionDelay; + int32_t m_endCondition; + int32_t m_endConditionParam; + int32_t m_endConditionDelay; + float m_speed; + int32_t m_segmentFlags; + int32_t m_forcedVariation; + int32_t m_overrideConfigFlags; + int32_t m_loopToSegmentIndex; +}; + +struct AnimReplacementRec { + int32_t m_ID; + int32_t m_srcAnimID; + int32_t m_dstAnimID; + int32_t m_parentAnimReplacementSetID; +}; + +struct AnimReplacementSetRec { + int32_t m_ID; + int32_t m_execOrder; +}; + +struct AnimationDataRec { + int32_t m_ID; + const char* m_name; + int32_t m_weaponflags; + int32_t m_bodyflags; + int32_t m_flags; + int32_t m_fallback; + int32_t m_behaviorID; + int32_t m_behaviorTier; +}; + +struct AreaAssignmentRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + int32_t m_chunkX; + int32_t m_chunkY; +}; + +struct AreaGroupRec { + int32_t m_ID; + int32_t m_areaID[6]; + int32_t m_nextAreaID; +}; + +struct AreaPOIRec { + int32_t m_ID; + int32_t m_importance; + int32_t m_icon[9]; + int32_t m_factionID; + float m_pos[3]; + int32_t m_continentID; + int32_t m_flags; + int32_t m_areaID; + const char* m_name; + const char* m_description; + int32_t m_worldStateID; + int32_t m_worldMapLink; +}; + +struct AreaTableRec { + int32_t m_ID; + int32_t m_continentID; + int32_t m_parentAreaID; + int32_t m_areaBit; + int32_t m_flags; + int32_t m_soundProviderPref; + int32_t m_soundProviderPrefUnderwater; + int32_t m_ambienceID; + int32_t m_zoneMusic; + int32_t m_introSound; + int32_t m_explorationLevel; + const char* m_areaName; + int32_t m_factionGroupMask; + int32_t m_liquidTypeID[4]; + float m_minElevation; + float m_ambientMultiplier; + int32_t m_lightID; +}; + +struct AreaTriggerRec { + int32_t m_ID; + int32_t m_continentID; + float m_pos[3]; + float m_radius; + float m_boxLength; + float m_boxWidth; + float m_boxHeight; + float m_boxYaw; +}; + +struct ArmorLocationRec { + int32_t m_ID; + float m_clothmodifier; + float m_leathermodifier; + float m_chainmodifier; + float m_platemodifier; + float m_modifier; +}; + +struct AttackAnimKitsRec { + int32_t m_ID; + int32_t m_itemSubclassID; + int32_t m_animTypeID; + int32_t m_animFrequency; + int32_t m_whichHand; +}; + +struct AttackAnimTypesRec { + int32_t m_animID; + const char* m_animName; + int32_t m_generatedID; +}; + +struct AuctionHouseRec { + int32_t m_ID; + int32_t m_factionID; + int32_t m_depositRate; + int32_t m_consignmentRate; + const char* m_name; +}; + +struct BankBagSlotPricesRec { + int32_t m_ID; + int32_t m_cost; +}; + +struct BannedAddonsRec { + int32_t m_ID; + int32_t m_nameMd5[4]; + int32_t m_versionMd5[4]; + int32_t m_lastModified; + int32_t m_flags; +}; + +struct BarberShopStyleRec { + int32_t m_ID; + int32_t m_type; + const char* m_displayName; + const char* m_description; + float m_costModifier; + int32_t m_race; + int32_t m_sex; + int32_t m_data; +}; + +struct BattlemasterListRec { + int32_t m_ID; + int32_t m_mapID[8]; + int32_t m_instanceType; + int32_t m_groupsAllowed; + const char* m_name; + int32_t m_maxGroupSize; + int32_t m_holidayWorldState; + int32_t m_minLevel; + int32_t m_maxLevel; +}; + +struct CameraModeRec { + int32_t m_ID; + const char* m_name; + int32_t m_type; + int32_t m_flags; + float m_positionOffset[3]; + float m_targetOffset[3]; + float m_positionSmoothing; + float m_rotationSmoothing; + float m_fieldOfView; + int32_t m_lockedPositionOffsetBase; + int32_t m_lockedPositionOffsetDirection; + int32_t m_lockedTargetOffsetBase; + int32_t m_lockedTargetOffsetDirection; +}; + +struct CameraShakesRec { + int32_t m_ID; + int32_t m_shakeType; + int32_t m_direction; + float m_amplitude; + float m_frequency; + float m_duration; + float m_phase; + float m_coefficient; +}; + +struct Cfg_CategoriesRec { + int32_t m_ID; + int32_t m_localeMask; + int32_t m_createCharsetMask; + int32_t m_flags; + const char* m_name; +}; + +struct Cfg_ConfigsRec { + int32_t m_ID; + int32_t m_realmType; + int32_t m_playerKillingAllowed; + int32_t m_roleplaying; +}; + +struct CharBaseInfoRec { + int8_t m_raceID; + int8_t m_classID; + int32_t m_generatedID; +}; + +struct CharHairGeosetsRec { + int32_t m_ID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_variationID; + int32_t m_geosetID; + int32_t m_showscalp; +}; + +struct CharHairTexturesRec { + int32_t m_ID; + int32_t m_field_0_5_3_3368_001_race; // unconfirmed + int32_t m_field_0_5_3_3368_002_gender; // unconfirmed + int32_t m_field_0_5_3_3368_003; // unconfirmed + int32_t m_field_0_5_3_3368_004_mayberacemask; // unconfirmed + int32_t m_field_0_5_3_3368_005_the_x_in_hair_xy_blp; // unconfirmed + int32_t m_field_0_5_3_3368_006; // unconfirmed + int32_t m_field_0_5_3_3368_007; // unconfirmed +}; + +struct CharSectionsRec { + int32_t m_ID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_baseSection; + const char* m_textureName[3]; + int32_t m_flags; + int32_t m_variationIndex; + int32_t m_colorIndex; +}; + +struct CharStartOutfitRec { + int32_t m_ID; + int8_t m_raceID; + int8_t m_classID; + int8_t m_sexID; + int8_t m_outfitID; + int32_t m_itemID[24]; + int32_t m_displayItemID[24]; + int32_t m_inventoryType[24]; +}; + +struct CharTitlesRec { + int32_t m_ID; + int32_t m_conditionID; + const char* m_name; + const char* m_name1; + int32_t m_maskID; +}; + +struct CharVariationsRec { + int32_t m_raceID; + int32_t m_sexID; + int32_t m_textureHoldLayer[4]; + int32_t m_generatedID; +}; + +struct CharacterFacialHairStylesRec { + int32_t m_raceID; + int32_t m_sexID; + int32_t m_variationID; + int32_t m_geoset[5]; + int32_t m_generatedID; +}; + +struct ChatChannelsRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_factionGroup; + const char* m_name; + const char* m_shortcut; +}; + +struct ChatProfanityRec { + int32_t m_ID; + const char* m_text; + int32_t m_language; +}; + +struct ChrClassesRec { + int32_t m_ID; + int32_t m_damageBonusStat; + int32_t m_displayPower; + const char* m_petNameToken; + const char* m_name; + const char* m_nameFemale; + const char* m_nameMale; + const char* m_filename; + int32_t m_spellClassSet; + int32_t m_flags; + int32_t m_cinematicSequenceID; + int32_t m_requiredExpansion; +}; + +struct ChrRacesRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_factionID; + int32_t m_explorationSoundID; + int32_t m_maleDisplayID; + int32_t m_femaleDisplayID; + const char* m_clientPrefix; + int32_t m_baseLanguage; + int32_t m_creatureType; + int32_t m_resSicknessSpellID; + int32_t m_splashSoundID; + const char* m_clientFileString; + int32_t m_cinematicSequenceID; + int32_t m_alliance; + const char* m_name; + const char* m_nameFemale; + const char* m_nameMale; + const char* m_facialHairCustomization[2]; + const char* m_hairCustomization; + int32_t m_requiredExpansion; +}; + +struct CinematicCameraRec { + int32_t m_ID; + const char* m_model; + int32_t m_soundID; + float m_origin[3]; + float m_originFacing; +}; + +struct CinematicSequencesRec { + int32_t m_ID; + int32_t m_soundID; + int32_t m_camera[8]; +}; + +struct CreatureDisplayInfoRec { + int32_t m_ID; + int32_t m_modelID; + int32_t m_soundID; + int32_t m_extendedDisplayInfoID; + float m_creatureModelScale; + int32_t m_creatureModelAlpha; + const char* m_textureVariation[3]; + const char* m_portraitTextureName; + int32_t m_sizeClass; + int32_t m_bloodID; + int32_t m_npcsoundID; + int32_t m_particleColorID; + int32_t m_creatureGeosetData; + int32_t m_objectEffectPackageID; +}; + +struct CreatureDisplayInfoExtraRec { + int32_t m_ID; + int32_t m_displayRaceID; + int32_t m_displaySexID; + int32_t m_skinID; + int32_t m_faceID; + int32_t m_hairStyleID; + int32_t m_hairColorID; + int32_t m_facialHairID; + int32_t m_npcitemDisplay[11]; + int32_t m_flags; + const char* m_bakeName; +}; + +struct CreatureFamilyRec { + int32_t m_ID; + float m_minScale; + int32_t m_minScaleLevel; + float m_maxScale; + int32_t m_maxScaleLevel; + int32_t m_skillLine[2]; + int32_t m_petFoodMask; + int32_t m_petTalentType; + int32_t m_categoryEnumID; + const char* m_name; + const char* m_iconFile; +}; + +struct CreatureModelDataRec { + int32_t m_ID; + int32_t m_flags; + const char* m_modelName; + int32_t m_sizeClass; + float m_modelScale; + int32_t m_bloodID; + int32_t m_footprintTextureID; + float m_footprintTextureLength; + float m_footprintTextureWidth; + float m_footprintParticleScale; + int32_t m_foleyMaterialID; + int32_t m_footstepShakeSize; + int32_t m_deathThudShakeSize; + int32_t m_soundID; + float m_collisionWidth; + float m_collisionHeight; + float m_mountHeight; + float m_geoBoxMinX; + float m_geoBoxMinY; + float m_geoBoxMinZ; + float m_geoBoxMaxX; + float m_geoBoxMaxY; + float m_geoBoxMaxZ; + float m_worldEffectScale; + float m_attachedEffectScale; + float m_missileCollisionRadius; + float m_missileCollisionPush; + float m_missileCollisionRaise; +}; + +struct CreatureMovementInfoRec { + int32_t m_ID; + float m_smoothFacingChaseRate; +}; + +struct CreatureSoundDataRec { + int32_t m_ID; + int32_t m_soundExertionID; + int32_t m_soundExertionCriticalID; + int32_t m_soundInjuryID; + int32_t m_soundInjuryCriticalID; + int32_t m_soundInjuryCrushingBlowID; + int32_t m_soundDeathID; + int32_t m_soundStunID; + int32_t m_soundStandID; + int32_t m_soundFootstepID; + int32_t m_soundAggroID; + int32_t m_soundWingFlapID; + int32_t m_soundWingGlideID; + int32_t m_soundAlertID; + int32_t m_soundFidget[5]; + int32_t m_customAttack[4]; + int32_t m_npcsoundID; + int32_t m_loopSoundID; + int32_t m_creatureImpactType; + int32_t m_soundJumpStartID; + int32_t m_soundJumpEndID; + int32_t m_soundPetAttackID; + int32_t m_soundPetOrderID; + int32_t m_soundPetDismissID; + float m_fidgetDelaySecondsMin; + float m_fidgetDelaySecondsMax; + int32_t m_birthSoundID; + int32_t m_spellCastDirectedSoundID; + int32_t m_submergeSoundID; + int32_t m_submergedSoundID; + int32_t m_creatureSoundDataIdpet; +}; + +struct CreatureSpellDataRec { + int32_t m_ID; + int32_t m_spells[4]; + int32_t m_availability[4]; +}; + +struct CreatureTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; +}; + +struct CurrencyCategoryRec { + int32_t m_ID; + int32_t m_flags; + const char* m_name; +}; + +struct CurrencyTypesRec { + int32_t m_ID; + int32_t m_itemID; + int32_t m_categoryID; + int32_t m_bitIndex; +}; + +struct DanceMovesRec { + int32_t m_ID; + int32_t m_type; + int32_t m_param; + int32_t m_fallback; + int32_t m_racemask; + const char* m_internalName; + const char* m_name; + int32_t m_lockID; +}; + +struct DeathThudLookupsRec { + int32_t m_ID; + int32_t m_sizeClass; + int32_t m_terrainTypeSoundID; + int32_t m_soundEntryID; + int32_t m_soundEntryIdwater; +}; + +struct DeclinedWordRec { + int32_t m_ID; + const char* m_word; +}; + +struct DeclinedWordCasesRec { + int32_t m_ID; + int32_t m_declinedWordID; + int32_t m_caseIndex; + const char* m_declinedWord; +}; + +struct DestructibleModelDataRec { + int32_t m_ID; + int32_t m_state0ImpactEffectDoodadSet; + int32_t m_state0AmbientDoodadSet; + int32_t m_state1WMO; + int32_t m_state1DestructionDoodadSet; + int32_t m_state1ImpactEffectDoodadSet; + int32_t m_state1AmbientDoodadSet; + int32_t m_state2WMO; + int32_t m_state2DestructionDoodadSet; + int32_t m_state2ImpactEffectDoodadSet; + int32_t m_state2AmbientDoodadSet; + int32_t m_state3WMO; + int32_t m_state3InitDoodadSet; + int32_t m_state3AmbientDoodadSet; + int32_t m_ejectDirection; + int32_t m_repairGroundFx; + int32_t m_doNotHighlight; + int32_t m_healEffect; + int32_t m_healEffectSpeed; +}; + +struct DungeonEncounterRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_difficulty; + int32_t m_orderIndex; + int32_t m_bit; + const char* m_name; + int32_t m_spellIconID; +}; + +struct DungeonMapRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_floorIndex; + float m_minX; + float m_maxX; + float m_minY; + float m_maxY; + int32_t m_parentWorldMapID; +}; + +struct DungeonMapChunkRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_wmogroupID; + int32_t m_dungeonMapID; + float m_minZ; +}; + +struct DurabilityCostsRec { + int32_t m_ID; + int32_t m_weaponSubClassCost[21]; + int32_t m_armorSubClassCost[8]; +}; + +struct DurabilityQualityRec { + int32_t m_ID; + float m_data; +}; + +struct EmotesRec { + int32_t m_ID; + const char* m_emoteSlashCommand; + int32_t m_animID; + int32_t m_emoteFlags; + int32_t m_emoteSpecProc; + int32_t m_emoteSpecProcParam; + int32_t m_eventSoundID; +}; + +struct EmotesTextRec { + int32_t m_ID; + const char* m_name; + int32_t m_emoteID; + int32_t m_emoteText[16]; +}; + +struct EmotesTextDataRec { + int32_t m_ID; + const char* m_text; +}; + +struct EmotesTextSoundRec { + int32_t m_ID; + int32_t m_emotesTextID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_soundID; +}; + +struct EnvironmentalDamageRec { + int32_t m_ID; + int32_t m_enumID; + int32_t m_visualkitID; +}; + +struct ExhaustionRec { + int32_t m_ID; + int32_t m_xp; + float m_factor; + float m_outdoorHours; + float m_innHours; + const char* m_name; + float m_threshold; +}; + +struct FactionRec { + int32_t m_ID; + int32_t m_reputationIndex; + int32_t m_reputationRaceMask[4]; + int32_t m_reputationClassMask[4]; + int32_t m_reputationBase[4]; + int32_t m_reputationFlags[4]; + int32_t m_parentFactionID; + float m_parentFactionMod[2]; + int32_t m_parentFactionCap[2]; + const char* m_name; + const char* m_description; +}; + +struct FactionGroupRec { + int32_t m_ID; + int32_t m_maskID; + const char* m_internalName; + const char* m_name; +}; + +struct FactionTemplateRec { + int32_t m_ID; + int32_t m_faction; + int32_t m_flags; + int32_t m_factionGroup; + int32_t m_friendGroup; + int32_t m_enemyGroup; + int32_t m_enemies[4]; + int32_t m_friend[4]; +}; + +struct FileDataRec { + int32_t m_ID; + const char* m_filename; + const char* m_filepath; +}; + +struct FootprintTexturesRec { + int32_t m_ID; + const char* m_footstepFilename; +}; + +struct FootstepTerrainLookupRec { + int32_t m_ID; + int32_t m_creatureFootstepID; + int32_t m_terrainSoundID; + int32_t m_soundID; + int32_t m_soundIdsplash; +}; + +struct GMSurveyAnswersRec { + int32_t m_ID; + int32_t m_sortIndex; + int32_t m_gmsurveyQuestionID; + const char* m_answer; +}; + +struct GMSurveyCurrentSurveyRec { + int32_t m_langid; + int32_t m_gmsurveyID; + int32_t m_generatedID; +}; + +struct GMSurveyQuestionsRec { + int32_t m_ID; + const char* m_question; +}; + +struct GMSurveySurveysRec { + int32_t m_ID; + int32_t m_[10]; +}; + +struct GMTicketCategoryRec { + int32_t m_ID; + const char* m_category; +}; + +struct GameObjectArtKitRec { + int32_t m_ID; + const char* m_textureVariation[3]; + const char* m_attachModel[4]; +}; + +struct GameObjectDisplayInfoRec { + int32_t m_ID; + const char* m_modelName; + int32_t m_sound[10]; + float m_geoBoxMin[3]; + float m_geoBoxMax[3]; + int32_t m_objectEffectPackageID; +}; + +struct GameTablesRec { + const char* m_name; + int32_t m_numRows; + int32_t m_numColumns; + int32_t m_generatedID; +}; + +struct GameTipsRec { + int32_t m_ID; + const char* m_text; +}; + +struct GemPropertiesRec { + int32_t m_ID; + int32_t m_enchantID; + int32_t m_maxcountInv; + int32_t m_maxcountItem; + int32_t m_type; +}; + +struct GlueScreenEmoteRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_leftHandItemType; + int32_t m_rightHandItemType; + int32_t m_animKitID; + int32_t m_spellVisualKitID; +}; + +struct GlyphPropertiesRec { + int32_t m_ID; + int32_t m_spellID; + int32_t m_glyphSlotFlags; + int32_t m_spellIconID; +}; + +struct GlyphSlotRec { + int32_t m_ID; + int32_t m_type; + int32_t m_tooltip; +}; + +struct GroundEffectDoodadRec { + int32_t m_ID; + const char* m_doodadpath; + int32_t m_flags; +}; + +struct GroundEffectTextureRec { + int32_t m_ID; + int32_t m_doodadID[4]; + int32_t m_doodadWeight[4]; + int32_t m_density; + int32_t m_sound; +}; + +struct GuildPerkSpellsRec { + int32_t m_ID; + int32_t m_guildLevel; + int32_t m_spellID; +}; + +struct HelmetGeosetVisDataRec { + int32_t m_ID; + int32_t m_hideGeoset[7]; +}; + +struct HolidayDescriptionsRec { + int32_t m_ID; + const char* m_description; +}; + +struct HolidayNamesRec { + int32_t m_ID; + const char* m_name; +}; + +struct HolidaysRec { + int32_t m_ID; + int32_t m_duration[10]; + int32_t m_date[26]; + int32_t m_region; + int32_t m_looping; + int32_t m_calendarFlags[10]; + int32_t m_holidayNameID; + int32_t m_holidayDescriptionID; + const char* m_textureFileName; + int32_t m_priority; + int32_t m_calendarFilterType; + int32_t m_flags; +}; + +struct ItemRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_subclassID; + int32_t m_soundOverrideSubclassID; + int32_t m_material; + int32_t m_displayInfoID; + int32_t m_inventoryType; + int32_t m_sheatheType; +}; + +struct ItemArmorQualityRec { + int32_t m_ID; + float m_qualitymod[7]; + int32_t m_itemLevel; +}; + +struct ItemArmorShieldRec { + int32_t m_ID; + int32_t m_itemLevel; + float m_quality[7]; +}; + +struct ItemArmorTotalRec { + int32_t m_ID; + int32_t m_itemLevel; + float m_cloth; + float m_leather; + float m_mail; + float m_plate; +}; + +struct ItemBagFamilyRec { + int32_t m_ID; + const char* m_name; +}; + +struct ItemClassRec { + int32_t m_classID; + int32_t m_subclassMapID; + int32_t m_flags; + const char* m_className; + int32_t m_generatedID; +}; + +struct ItemCondExtCostsRec { + int32_t m_ID; + int32_t m_condExtendedCost; // unconfirmed + int32_t m_itemExtendedCostEntry; + int32_t m_arenaSeason; // unconfirmed +}; + +struct ItemDamageAmmoRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageOneHandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageOneHandCasterRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageRangedRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageThrownRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageTwoHandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageTwoHandCasterRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageWandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDisplayInfoRec { + int32_t m_ID; + const char* m_modelName[2]; + const char* m_modelTexture[2]; + const char* m_inventoryIcon[2]; + int32_t m_geosetGroup[3]; + int32_t m_flags; + int32_t m_spellVisualID; + int32_t m_groupSoundIndex; + int32_t m_helmetGeosetVisID[2]; + const char* m_texture[8]; + int32_t m_itemVisual; + int32_t m_particleColorID; +}; + +struct ItemExtendedCostRec { + int32_t m_ID; + int32_t m_honorPoints; + int32_t m_arenaPoints; + int32_t m_arenaBracket; + int32_t m_itemID[5]; + int32_t m_itemCount[5]; + int32_t m_requiredArenaRating; + int32_t m_itemPurchaseGroup; +}; + +struct ItemGroupSoundsRec { + int32_t m_ID; + int32_t m_sound[4]; +}; + +struct ItemLimitCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_quantity; + int32_t m_flags; +}; + +struct ItemPetFoodRec { + int32_t m_ID; + const char* m_name; +}; + +struct ItemPurchaseGroupRec { + int32_t m_ID; + int32_t m_itemID[8]; + const char* m_name; +}; + +struct ItemRandomPropertiesRec { + int32_t m_ID; + const char* m_name; + int32_t m_enchantment[5]; + const char* m_name; +}; + +struct ItemRandomSuffixRec { + int32_t m_ID; + const char* m_name; + const char* m_internalName; + int32_t m_enchantment[5]; + int32_t m_allocationPct[5]; +}; + +struct ItemReforgeRec { + int32_t m_ID; // unconfirmed + int32_t m_sourceStat; // unconfirmed + float m_sourceMultiplier; // unconfirmed + int32_t m_targetStat; // unconfirmed + float m_targetMultiplier; // unconfirmed +}; + +struct ItemSetRec { + int32_t m_ID; + const char* m_name; + int32_t m_itemID[17]; + int32_t m_setSpellID[8]; + int32_t m_setThreshold[8]; + int32_t m_requiredSkill; + int32_t m_requiredSkillRank; +}; + +struct ItemSubClassRec { + int32_t m_classID; + int32_t m_subClassID; + int32_t m_prerequisiteProficiency; + int32_t m_postrequisiteProficiency; + int32_t m_flags; + int32_t m_displayFlags; + int32_t m_weaponParrySeq; + int32_t m_weaponReadySeq; + int32_t m_weaponAttackSeq; + int32_t m_weaponSwingSize; + const char* m_displayName; + const char* m_verboseName; + int32_t m_generatedID; +}; + +struct ItemSubClassMaskRec { + int32_t m_classID; + int32_t m_mask; + const char* m_name; + int32_t m_generatedID; +}; + +struct ItemVisualEffectsRec { + int32_t m_ID; + const char* m_model; +}; + +struct ItemVisualsRec { + int32_t m_ID; + int32_t m_slot[5]; +}; + +struct LFGDungeonExpansionRec { + int32_t m_ID; + int32_t m_lfgID; + int32_t m_expansionLevel; + int32_t m_randomID; + int32_t m_hardLevelMin; + int32_t m_hardLevelMax; + int32_t m_targetLevelMin; + int32_t m_targetLevelMax; +}; + +struct LFGDungeonGroupRec { + int32_t m_ID; + const char* m_name; + int32_t m_orderIndex; + int32_t m_parentGroupID; + int32_t m_typeID; +}; + +struct LFGDungeonsRec { + int32_t m_ID; + const char* m_name; + int32_t m_minLevel; + int32_t m_maxLevel; + int32_t m_targetLevel; + int32_t m_targetLevelMin; + int32_t m_targetLevelMax; + int32_t m_mapID; + int32_t m_difficulty; + int32_t m_flags; + int32_t m_typeID; + int32_t m_faction; + const char* m_textureFilename; + int32_t m_expansionLevel; + int32_t m_orderIndex; + int32_t m_groupID; + const char* m_description; +}; + +struct LanguageWordsRec { + int32_t m_ID; + int32_t m_languageID; + const char* m_word; +}; + +struct LanguagesRec { + int32_t m_ID; + const char* m_name; +}; + +struct LightRec { + int32_t m_ID; + int32_t m_continentID; + float m_gameCoords[3]; + float m_gameFalloffStart; + float m_gameFalloffEnd; + int32_t m_lightParamsID[8]; +}; + +struct LightFloatBandRec { + int32_t m_ID; + int32_t m_num; + int32_t m_time[16]; + float m_data[16]; +}; + +struct LightIntBandRec { + int32_t m_ID; + int32_t m_num; + int32_t m_time[16]; + int32_t m_data[16]; +}; + +struct LightParamsRec { + int32_t m_ID; + int32_t m_highlightSky; + int32_t m_lightSkyboxID; + float m_glow; + float m_waterShallowAlpha; + float m_waterDeepAlpha; + float m_oceanShallowAlpha; + float m_oceanDeepAlpha; + int32_t m_flags; +}; + +struct LightSkyboxRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; +}; + +struct LiquidMaterialRec { + int32_t m_ID; + int32_t m_lvf; + int32_t m_flags; +}; + +struct LiquidObjectRec { + int32_t m_ID; + float m_flowDirection; + float m_flowSpeed; + int32_t m_liquidTypeID; + int32_t m_fishable; + int32_t m_reflection; +}; + +struct LiquidTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; + int32_t m_soundBank; + int32_t m_soundID; + int32_t m_spellID; + float m_maxDarkenDepth; + float m_fogDarkenIntensity; + float m_ambDarkenIntensity; + float m_dirDarkenIntensity; + int32_t m_lightID; + float m_particleScale; + int32_t m_particleMovement; + int32_t m_particleTexSlots; + int32_t m_materialID; + const char* m_texture[6]; + int32_t m_color[2]; + float m_float[18]; + int32_t m_int[4]; +}; + +struct LoadingScreenTaxiSplinesRec { + int32_t m_ID; + int32_t m_pathID; + float m_locx[8]; + float m_locy[8]; + int32_t m_legIndex; +}; + +struct LoadingScreensRec { + int32_t m_ID; + const char* m_name; + const char* m_fileName; + int32_t m_hasWideScreen; +}; + +struct LockRec { + int32_t m_ID; + int32_t m_type[8]; + int32_t m_index[8]; + int32_t m_skill[8]; + int32_t m_action[8]; +}; + +struct LockTypeRec { + int32_t m_ID; + const char* m_name; + const char* m_resourceName; + const char* m_verb; + const char* m_cursorName; +}; + +struct MailTemplateRec { + int32_t m_ID; + const char* m_subject; + const char* m_body; +}; + +struct MapRec { + int32_t m_ID; + const char* m_directory; + int32_t m_instanceType; + int32_t m_flags; // unconfirmed + int32_t m_pvp; + const char* m_mapName; + int32_t m_areaTableID; + const char* m_mapDescription0; + const char* m_mapDescription1; + int32_t m_loadingScreenID; + float m_minimapIconScale; + int32_t m_corpseMapID; + float m_corpse[2]; + int32_t m_timeOfDayOverride; + int32_t m_expansionID; + int32_t m_raidOffset; + int32_t m_maxPlayers; +}; + +struct MapDifficultyRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_difficulty; + const char* m_message; + int32_t m_raidDuration; + int32_t m_maxPlayers; + const char* m_difficultystring; +}; + +struct MaterialRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_foleySoundID; + int32_t m_sheatheSoundID; + int32_t m_unsheatheSoundID; +}; + +struct MountTypeRec { + int32_t m_ID; + int32_t m_capability[8]; +}; + +struct MovieRec { + int32_t m_ID; + const char* m_filename; + int32_t m_volume; +}; + +struct MovieFileDataRec { + int32_t m_fileDataID; + int32_t m_resolution; + int32_t m_generatedID; +}; + +struct MovieVariationRec { + int32_t m_ID; + int32_t m_movieID; + int32_t m_fileDataID; +}; + +struct NPCSoundsRec { + int32_t m_ID; + int32_t m_soundID[4]; +}; + +struct NameGenRec { + int32_t m_ID; + const char* m_name; + int32_t m_raceID; + int32_t m_sex; +}; + +struct NamesProfanityRec { + int32_t m_ID; + const char* m_name; + int32_t m_language; +}; + +struct NamesReservedRec { + int32_t m_ID; + const char* m_name; + int32_t m_language; +}; + +struct ObjectEffectRec { + int32_t m_ID; + const char* m_name; + int32_t m_objectEffectGroupID; + int32_t m_triggerType; + int32_t m_eventType; + int32_t m_effectRecType; + int32_t m_effectRecID; + int32_t m_attachment; + float m_offset[3]; + int32_t m_objectEffectModifierID; +}; + +struct ObjectEffectGroupRec { + int32_t m_ID; + const char* m_name; +}; + +struct ObjectEffectModifierRec { + int32_t m_ID; + int32_t m_inputType; + int32_t m_mapType; + int32_t m_outputType; + float m_param[4]; +}; + +struct ObjectEffectPackageRec { + int32_t m_ID; + const char* m_name; +}; + +struct ObjectEffectPackageElemRec { + int32_t m_ID; + int32_t m_objectEffectPackageID; + int32_t m_objectEffectGroupID; + int32_t m_stateType; +}; + +struct OverrideSpellDataRec { + int32_t m_ID; + int32_t m_spells[10]; + int32_t m_flags; +}; + +struct PVPDifficultyRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_rangeIndex; + int32_t m_minLevel; + int32_t m_maxLevel; + int32_t m_difficulty; +}; + +struct PackageRec { + int32_t m_ID; + const char* m_icon; + int32_t m_cost; + const char* m_name; +}; + +struct PageTextMaterialRec { + int32_t m_ID; + const char* m_name; +}; + +struct PaperDollItemFrameRec { + const char* m_itemButtonName; + const char* m_slotIcon; + int32_t m_slotNumber; + int32_t m_generatedID; +}; + +struct ParticleColorRec { + int32_t m_ID; + int32_t m_start[3]; + int32_t m_mid[3]; + int32_t m_end[3]; +}; + +struct PetPersonalityRec { + int32_t m_ID; + const char* m_name; + int32_t m_happinessThreshold[3]; + float m_happinessDamage[3]; +}; + +struct PetitionTypeRec { + int32_t m_ID; // unconfirmed + const char* m_name; // unconfirmed + int32_t m_type; // unconfirmed +}; + +struct PhaseRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_parentMapID[2]; // unconfirmed + const char* m_name; + int32_t m_flags; +}; + +struct PhaseShiftZoneSoundsRec { + int32_t m_ID; + int32_t m_areaID; + int32_t m_wmoareaID; + int32_t m_phaseID; + int32_t m_phaseGroupID; + int32_t m_phaseUseFlags; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; + int32_t m_uwzoneIntroMusicID; + int32_t m_uwzoneMusicID; + int32_t m_uwsoundAmbienceID; + int32_t m_uwsoundProviderPreferencesID; +}; + +struct PhaseXPhaseGroupRec { + int32_t m_ID; + int32_t m_phaseID; + int32_t m_phaseGroupID; +}; + +struct PowerDisplayRec { + int32_t m_ID; + int32_t m_actualType; + const char* m_globalStringBaseTag; + int8_t m_red; + int8_t m_green; + int8_t m_blue; +}; + +struct QuestFactionRewardRec { + int32_t m_ID; + int32_t m_difficulty[10]; +}; + +struct QuestInfoRec { + int32_t m_ID; + const char* m_infoName; +}; + +struct QuestSortRec { + int32_t m_ID; + const char* m_sortName; +}; + +struct QuestXPRec { + int32_t m_ID; + int32_t m_difficulty[10]; +}; + +struct RandPropPointsRec { + int32_t m_ID; + int32_t m_epic[5]; + int32_t m_superior[5]; + int32_t m_good[5]; +}; + +struct ResearchBranchRec { + int32_t m_ID; + const char* m_name; + int32_t m_researchFieldID; + int32_t m_currencyID; + const char* m_texture; + int32_t m_itemID; +}; + +struct ResistancesRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_fizzleSoundID; + const char* m_name; +}; + +struct ScalingStatDistributionRec { + int32_t m_ID; + int32_t m_statID[10]; + int32_t m_bonus[10]; + int32_t m_maxlevel; +}; + +struct ScalingStatValuesRec { + int32_t m_ID; + int32_t m_charlevel; + int32_t m_shoulderBudget; + int32_t m_trinketBudget; + int32_t m_weaponBudget1h; + int32_t m_rangedBudget; + int32_t m_clothShoulderArmor; + int32_t m_leatherShoulderArmor; + int32_t m_mailShoulderArmor; + int32_t m_plateShoulderArmor; + int32_t m_weaponDps1h; + int32_t m_weaponDps2h; + int32_t m_spellcasterDps1h; + int32_t m_spellcasterDps2h; + int32_t m_rangedDps; + int32_t m_wandDps; + int32_t m_spellPower; + int32_t m_primaryBudget; + int32_t m_tertiaryBudget; + int32_t m_clothCloakArmor; + int32_t m_clothChestArmor; + int32_t m_leatherChestArmor; + int32_t m_mailChestArmor; + int32_t m_plateChestArmor; +}; + +struct ScreenEffectRec { + int32_t m_ID; + const char* m_name; + int32_t m_effect; + int32_t m_param[4]; + int32_t m_lightParamsID; + int32_t m_soundAmbienceID; + int32_t m_zoneMusicID; +}; + +struct ServerMessagesRec { + int32_t m_ID; + const char* m_text; +}; + +struct SheatheSoundLookupsRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_subclassID; + int32_t m_material; + int32_t m_checkMaterial; + int32_t m_sheatheSound; + int32_t m_unsheatheSound; +}; + +struct SkillCostsDataRec { + int32_t m_ID; + int32_t m_skillCostsID; + int32_t m_cost[3]; +}; + +struct SkillLineRec { + int32_t m_ID; + int32_t m_categoryID; + int32_t m_skillCostsID; + const char* m_displayName; + const char* m_description; + int32_t m_spellIconID; + const char* m_alternateVerb; + int32_t m_canLink; +}; + +struct SkillLineAbilityRec { + int32_t m_ID; + int32_t m_skillLine; + int32_t m_spell; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_excludeRace; + int32_t m_excludeClass; + int32_t m_minSkillLineRank; + int32_t m_supercededBySpell; + int32_t m_acquireMethod; + int32_t m_trivialSkillLineRankHigh; + int32_t m_trivialSkillLineRankLow; + int32_t m_characterPoints[2]; +}; + +struct SkillLineCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_sortIndex; +}; + +struct SkillRaceClassInfoRec { + int32_t m_ID; + int32_t m_skillID; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_flags; + int32_t m_minLevel; + int32_t m_skillTierID; + int32_t m_skillCostIndex; +}; + +struct SkillTiersRec { + int32_t m_ID; + int32_t m_cost[16]; + int32_t m_value[16]; +}; + +struct SoundAmbienceRec { + int32_t m_ID; + int32_t m_ambienceID[2]; +}; + +struct SoundEmittersRec { + int32_t m_ID; + float m_position[3]; + float m_direction[3]; + int32_t m_soundEntryAdvancedID; + int32_t m_mapID; + const char* m_name; +}; + +struct SoundEntriesRec { + int32_t m_ID; + int32_t m_soundType; + const char* m_name; + const char* m_file[10]; + int32_t m_freq[10]; + const char* m_directoryBase; + float m_volumeFloat; + int32_t m_flags; + float m_minDistance; + float m_distanceCutoff; + int32_t m_eaxdef; + int32_t m_soundEntriesAdvancedID; +}; + +struct SoundEntriesAdvancedRec { + int32_t m_ID; + int32_t m_soundEntryID; + float m_innerRadius2d; + int32_t m_timeA; + int32_t m_timeB; + int32_t m_timeC; + int32_t m_timeD; + int32_t m_randomOffsetRange; + int32_t m_usage; + int32_t m_timeIntervalMin; + int32_t m_timeIntervalMax; + int32_t m_volumeSliderCategory; + float m_duckToSfx; + float m_duckToMusic; + float m_duckToAmbience; + float m_innerRadiusOfInfluence; + float m_outerRadiusOfInfluence; + int32_t m_timeToDuck; + int32_t m_timeToUnduck; + float m_insideAngle; + float m_outsideAngle; + float m_outsideVolume; + float m_outerRadius2d; + const char* m_name; +}; + +struct SoundFilterRec { + int32_t m_ID; + const char* m_name; +}; + +struct SoundFilterElemRec { + int32_t m_ID; + int32_t m_soundFilterID; + int32_t m_orderIndex; + int32_t m_filterType; + float m_params[9]; +}; + +struct SoundProviderPreferencesRec { + int32_t m_ID; + const char* m_description; + int32_t m_flags; + int32_t m_eaxenvironmentSelection; + float m_eaxdecayTime; + float m_eax2EnvironmentSize; + float m_eax2EnvironmentDiffusion; + int32_t m_eax2Room; + int32_t m_eax2RoomHf; + float m_eax2DecayHfratio; + int32_t m_eax2Reflections; + float m_eax2ReflectionsDelay; + int32_t m_eax2Reverb; + float m_eax2ReverbDelay; + float m_eax2RoomRolloff; + float m_eax2AirAbsorption; + int32_t m_eax3RoomLf; + float m_eax3DecayLfratio; + float m_eax3EchoTime; + float m_eax3EchoDepth; + float m_eax3ModulationTime; + float m_eax3ModulationDepth; + float m_eax3Hfreference; + float m_eax3Lfreference; +}; + +struct SoundSamplePreferencesRec { + int32_t m_ID; + int32_t m_field_0_6_0_3592_001; // unconfirmed + int32_t m_field_0_6_0_3592_002; // unconfirmed + int32_t m_eax2SampleRoom; + int32_t m_field_0_6_0_3592_004; // unconfirmed + int32_t m_field_0_6_0_3592_005; // unconfirmed + float m_field_0_6_0_3592_006; // unconfirmed + int32_t m_field_0_6_0_3592_007; // unconfirmed + float m_eax2SampleOcclusionLfratio; + float m_eax2SampleOcclusionRoomRatio; + int32_t m_field_0_6_0_3592_010; // unconfirmed + float m_eax1EffectLevel; + int32_t m_field_0_6_0_3592_012; // unconfirmed + float m_field_0_6_0_3592_013; // unconfirmed + float m_eax3SampleExclusion; + float m_field_0_6_0_3592_015; // unconfirmed + int32_t m_field_0_6_0_3592_016; // unconfirmed +}; + +struct SoundWaterTypeRec { + int32_t m_ID; + int32_t m_soundType; + int32_t m_soundSubtype; + int32_t m_soundID; +}; + +struct SpamMessagesRec { + int32_t m_ID; + const char* m_text; +}; + +struct SpellRec { + int32_t m_ID; + int32_t m_category; + int32_t m_dispelType; + int32_t m_mechanic; + int32_t m_attributes; + int32_t m_attributesEx; + int32_t m_attributesExB; + int32_t m_attributesExC; + int32_t m_attributesExD; + int32_t m_attributesExE; + int32_t m_attributesExF; + int32_t m_attributesExG; + int32_t m_shapeshiftMask[2]; + int32_t m_shapeshiftExclude[2]; + int32_t m_targets; + int32_t m_targetCreatureType; + int32_t m_requiresSpellFocus; + int32_t m_facingCasterFlags; + int32_t m_casterAuraState; + int32_t m_targetAuraState; + int32_t m_excludeCasterAuraState; + int32_t m_excludeTargetAuraState; + int32_t m_casterAuraSpell; + int32_t m_targetAuraSpell; + int32_t m_excludeCasterAuraSpell; + int32_t m_excludeTargetAuraSpell; + int32_t m_castingTimeIndex; + int32_t m_recoveryTime; + int32_t m_categoryRecoveryTime; + int32_t m_interruptFlags; + int32_t m_auraInterruptFlags; + int32_t m_channelInterruptFlags; + int32_t m_procTypeMask; + int32_t m_procChance; + int32_t m_procCharges; + int32_t m_maxLevel; + int32_t m_baseLevel; + int32_t m_spellLevel; + int32_t m_durationIndex; + int32_t m_powerType; + int32_t m_manaCost; + int32_t m_manaCostPerLevel; + int32_t m_manaPerSecond; + int32_t m_manaPerSecondPerLevel; + int32_t m_rangeIndex; + float m_speed; + int32_t m_modalNextSpell; + int32_t m_cumulativeAura; + int32_t m_totem[2]; + int32_t m_reagent[8]; + int32_t m_reagentCount[8]; + int32_t m_equippedItemClass; + int32_t m_equippedItemSubclass; + int32_t m_equippedItemInvTypes; + int32_t m_effect[3]; + int32_t m_effectDieSides[3]; + float m_effectRealPointsPerLevel[3]; + int32_t m_effectBasePoints[3]; + int32_t m_effectMechanic[3]; + int32_t m_implicitTargetA[3]; + int32_t m_implicitTargetB[3]; + int32_t m_effectRadiusIndex[3]; + int32_t m_effectAura[3]; + int32_t m_effectAuraPeriod[3]; + float m_effectAmplitude[3]; + int32_t m_effectChainTargets[3]; + int32_t m_effectItemType[3]; + int32_t m_effectMiscValue[3]; + int32_t m_effectMiscValueB[3]; + int32_t m_effectTriggerSpell[3]; + float m_effectPointsPerCombo[3]; + int32_t m_effectSpellClassMaskA[3]; + int32_t m_effectSpellClassMaskB[3]; + int32_t m_effectSpellClassMaskC[3]; + int32_t m_spellVisualID[2]; + int32_t m_spellIconID; + int32_t m_activeIconID; + int32_t m_spellPriority; + const char* m_name; + const char* m_nameSubtext; + const char* m_description; + const char* m_auraDescription; + int32_t m_manaCostPct; + int32_t m_startRecoveryCategory; + int32_t m_startRecoveryTime; + int32_t m_maxTargetLevel; + int32_t m_spellClassSet; + int32_t m_spellClassMask[3]; + int32_t m_maxTargets; + int32_t m_defenseType; + int32_t m_preventionType; + int32_t m_stanceBarOrder; + float m_effectChainAmplitude[3]; + int32_t m_minFactionID; + int32_t m_minReputation; + int32_t m_requiredAuraVision; + int32_t m_requiredTotemCategoryID[2]; + int32_t m_requiredAreasID; + int32_t m_schoolMask; + int32_t m_runeCostID; + int32_t m_spellMissileID; + int32_t m_powerDisplayID; + float m_effectBonusCoefficient[3]; + int32_t m_descriptionVariablesID; + int32_t m_difficulty; +}; + +struct SpellAuraOptionsRec { + int32_t m_ID; + int32_t m_cumulativeAura; + int32_t m_procChance; + int32_t m_procCharges; + int32_t m_procTypeMask; +}; + +struct SpellAuraRestrictionsRec { + int32_t m_ID; + int32_t m_casterAuraState; + int32_t m_targetAuraState; + int32_t m_excludeCasterAuraState; + int32_t m_excludeTargetAuraState; + int32_t m_casterAuraSpell; + int32_t m_targetAuraSpell; + int32_t m_excludeCasterAuraSpell; + int32_t m_excludeTargetAuraSpell; +}; + +struct SpellCastTimesRec { + int32_t m_ID; + int32_t m_base; + int32_t m_perLevel; + int32_t m_minimum; +}; + +struct SpellCastingRequirementsRec { + int32_t m_ID; + int32_t m_facingCasterFlags; + int32_t m_minFactionID; + int32_t m_minReputation; + int32_t m_requiredAreasID; + int32_t m_requiredAuraVision; + int32_t m_requiresSpellFocus; +}; + +struct SpellCategoriesRec { + int32_t m_ID; + int32_t m_category; + int32_t m_defenseType; + int32_t m_dispelType; + int32_t m_mechanic; + int32_t m_preventionType; + int32_t m_startRecoveryCategory; +}; + +struct SpellCategoryRec { + int32_t m_ID; + int32_t m_flags; +}; + +struct SpellChainEffectsRec { + int32_t m_ID; + float m_avgSegLen; + float m_width; + float m_noiseScale; + float m_texCoordScale; + int32_t m_segDuration; + int32_t m_segDelay; + const char* m_texture; + int32_t m_flags; + int32_t m_jointCount; + float m_jointOffsetRadius; + int32_t m_jointsPerMinorJoint; + int32_t m_minorJointsPerMajorJoint; + float m_minorJointScale; + float m_majorJointScale; + float m_jointMoveSpeed; + float m_jointSmoothness; + float m_minDurationBetweenJointJumps; + float m_maxDurationBetweenJointJumps; + float m_waveHeight; + float m_waveFreq; + float m_waveSpeed; + float m_minWaveAngle; + float m_maxWaveAngle; + float m_minWaveSpin; + float m_maxWaveSpin; + float m_arcHeight; + float m_minArcAngle; + float m_maxArcAngle; + float m_minArcSpin; + float m_maxArcSpin; + float m_delayBetweenEffects; + float m_minFlickerOnDuration; + float m_maxFlickerOnDuration; + float m_minFlickerOffDuration; + float m_maxFlickerOffDuration; + float m_pulseSpeed; + float m_pulseOnLength; + float m_pulseFadeLength; + int8_t m_alpha; + int8_t m_red; + int8_t m_green; + int8_t m_blue; + int8_t m_blendMode; + const char* m_combo; + int32_t m_renderLayer; + float m_textureLength; + float m_wavePhase; +}; + +struct SpellClassOptionsRec { + int32_t m_ID; + int32_t m_modalNextSpell; + int32_t m_spellClassMask[3]; + int32_t m_spellClassSet; +}; + +struct SpellCooldownsRec { + int32_t m_ID; + int32_t m_categoryRecoveryTime; + int32_t m_recoveryTime; + int32_t m_startRecoveryTime; +}; + +struct SpellDescriptionVariablesRec { + int32_t m_ID; + const char* m_variables; +}; + +struct SpellDifficultyRec { + int32_t m_ID; + int32_t m_difficultySpellID[4]; +}; + +struct SpellDispelTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_mask; + int32_t m_immunityPossible; + const char* m_internalName; +}; + +struct SpellDurationRec { + int32_t m_ID; + int32_t m_duration; + int32_t m_durationPerLevel; + int32_t m_maxDuration; +}; + +struct SpellEffectRec { + int32_t m_ID; + int32_t m_effect; + float m_effectAmplitude; + int32_t m_effectAura; + int32_t m_effectAuraPeriod; + int32_t m_effectBasePoints; + float m_effectBonusCoefficient; + float m_effectChainAmplitude; + int32_t m_effectChainTargets; + int32_t m_effectDieSides; + int32_t m_effectItemType; + int32_t m_effectMechanic; + int32_t m_effectMiscValue[2]; + float m_effectPointsPerResource; + int32_t m_effectRadiusIndex[2]; + float m_effectRealPointsPerLevel; + int32_t m_effectSpellClassMask[3]; + int32_t m_effectTriggerSpell; + int32_t m_implicitTarget[2]; + int32_t m_spellID; + int32_t m_effectIndex; +}; + +struct SpellEffectCameraShakesRec { + int32_t m_ID; + int32_t m_cameraShake[3]; +}; + +struct SpellEquippedItemsRec { + int32_t m_ID; + int32_t m_equippedItemClass; + int32_t m_equippedItemInvTypes; + int32_t m_equippedItemSubclass; +}; + +struct SpellFocusObjectRec { + int32_t m_ID; + const char* m_name; +}; + +struct SpellIconRec { + int32_t m_ID; + const char* m_textureFilename; +}; + +struct SpellInterruptsRec { + int32_t m_ID; + int32_t m_auraInterruptFlags[2]; + int32_t m_channelInterruptFlags[2]; + int32_t m_interruptFlags; +}; + +struct SpellItemEnchantmentRec { + int32_t m_ID; + int32_t m_charges; + int32_t m_effect[3]; + int32_t m_effectPointsMin[3]; + int32_t m_effectPointsMax[3]; + int32_t m_effectArg[3]; + const char* m_name; + int32_t m_itemVisual; + int32_t m_flags; + int32_t m_srcItemID; + int32_t m_conditionID; + int32_t m_requiredSkillID; + int32_t m_requiredSkillRank; + int32_t m_minLevel; +}; + +struct SpellItemEnchantmentConditionRec { + int32_t m_ID; + int8_t m_ltOperandType[5]; + int32_t m_ltOperand[5]; + int8_t m_operator[5]; + int8_t m_rtOperandType[5]; + int32_t m_rtOperand[5]; + int8_t m_logic[5]; +}; + +struct SpellLevelsRec { + int32_t m_ID; + int32_t m_baseLevel; + int32_t m_maxLevel; + int32_t m_spellLevel; +}; + +struct SpellMechanicRec { + int32_t m_ID; + const char* m_stateName; +}; + +struct SpellMissileRec { + int32_t m_ID; + int32_t m_flags; + float m_defaultPitchMin; + float m_defaultPitchMax; + float m_defaultSpeedMin; + float m_defaultSpeedMax; + float m_randomizeFacingMin; + float m_randomizeFacingMax; + float m_randomizePitchMin; + float m_randomizePitchMax; + float m_randomizeSpeedMin; + float m_randomizeSpeedMax; + float m_gravity; + float m_maxDuration; + float m_collisionRadius; +}; + +struct SpellMissileMotionRec { + int32_t m_ID; + const char* m_name; + const char* m_scriptBody; + int32_t m_flags; + int32_t m_missileCount; +}; + +struct SpellPowerRec { + int32_t m_ID; + int32_t m_manaCost; + int32_t m_manaCostPerLevel; + int32_t m_powerCost; // unconfirmed + int32_t m_manaPerSecond; + int32_t m_powerDisplayID; +}; + +struct SpellRadiusRec { + int32_t m_ID; + float m_radius; + float m_radiusPerLevel; + float m_radiusMax; +}; + +struct SpellRangeRec { + int32_t m_ID; + float m_rangeMin[2]; + float m_rangeMax[2]; + int32_t m_flags; + const char* m_displayName; + const char* m_displayNameShort; +}; + +struct SpellReagentsRec { + int32_t m_ID; + int32_t m_reagent[8]; + int32_t m_reagentCount[8]; +}; + +struct SpellRuneCostRec { + int32_t m_ID; + int32_t m_blood; + int32_t m_unholy; + int32_t m_frost; + int32_t m_runicPower; +}; + +struct SpellScalingRec { + int32_t m_ID; + int32_t m_castTimeMin; + int32_t m_castTimeMax; + int32_t m_castTimeMaxLevel; + int32_t m_class; + float m_coefficient[3]; + float m_variance[3]; + float m_comboPointsCoefficient[3]; + float m_nerfFactor; + int32_t m_nerfMaxLevel; +}; + +struct SpellShapeshiftRec { + int32_t m_ID; + int32_t m_shapeshiftExclude[2]; + int32_t m_shapeshiftMask[2]; + int32_t m_stanceBarOrder; +}; + +struct SpellShapeshiftFormRec { + int32_t m_ID; + int32_t m_bonusActionBar; + const char* m_name; + int32_t m_flags; + int32_t m_creatureType; + int32_t m_attackIconID; + int32_t m_combatRoundTime; + int32_t m_creatureDisplayID[4]; + int32_t m_presetSpellID[8]; +}; + +struct SpellTargetRestrictionsRec { + int32_t m_ID; + int32_t m_maxTargets; + int32_t m_maxTargetLevel; + int32_t m_targetCreatureType; + int32_t m_targets; +}; + +struct SpellTotemsRec { + int32_t m_ID; + int32_t m_requiredTotemCategoryID[2]; + int32_t m_totem[2]; +}; + +struct SpellVisualRec { + int32_t m_ID; + int32_t m_precastKit; + int32_t m_castKit; + int32_t m_impactKit; + int32_t m_stateKit; + int32_t m_stateDoneKit; + int32_t m_channelKit; + int32_t m_hasMissile; + int32_t m_missileModel; + int32_t m_missilePathType; + int32_t m_missileDestinationAttachment; + int32_t m_missileSound; + int32_t m_animEventSoundID; + int32_t m_flags; + int32_t m_casterImpactKit; + int32_t m_targetImpactKit; + int32_t m_missileAttachment; + int32_t m_missileFollowGroundHeight; + int32_t m_missileFollowGroundDropSpeed; + int32_t m_missileFollowGroundApproach; + int32_t m_missileFollowGroundFlags; + int32_t m_missileMotion; + int32_t m_missileTargetingKit; + int32_t m_instantAreaKit; + int32_t m_impactAreaKit; + int32_t m_persistentAreaKit; + float m_missileCastOffset[3]; + float m_missileImpactOffset[3]; +}; + +struct SpellVisualEffectNameRec { + int32_t m_ID; + const char* m_name; + const char* m_fileName; + float m_areaEffectSize; + float m_scale; + float m_minAllowedScale; + float m_maxAllowedScale; +}; + +struct SpellVisualKitRec { + int32_t m_ID; + int32_t m_startAnimID; + int32_t m_animID; + int32_t m_headEffect; + int32_t m_chestEffect; + int32_t m_baseEffect; + int32_t m_leftHandEffect; + int32_t m_rightHandEffect; + int32_t m_breathEffect; + int32_t m_leftWeaponEffect; + int32_t m_rightWeaponEffect; + int32_t m_specialEffect[3]; + int32_t m_worldEffect; + int32_t m_soundID; + int32_t m_shakeID; + int32_t m_charProc[4]; + float m_charParamZero[4]; + float m_charParamOne[4]; + float m_charParamTwo[4]; + float m_charParamThree[4]; + int32_t m_flags; +}; + +struct SpellVisualKitAreaModelRec { + int32_t m_ID; + const char* m_name; + int32_t m_enumID; +}; + +struct SpellVisualKitModelAttachRec { + int32_t m_ID; + int32_t m_parentSpellVisualKitID; + int32_t m_spellVisualEffectNameID; + int32_t m_attachmentID; + float m_offset[3]; + float m_yaw; + float m_pitch; + float m_roll; +}; + +struct SpellVisualPrecastTransitionsRec { + int32_t m_ID; + const char* m_precastLoadAnimName; + const char* m_precastHoldAnimName; +}; + +struct StableSlotPricesRec { + int32_t m_ID; + int32_t m_cost; +}; + +struct Startup_StringsRec { + int32_t m_ID; + const char* m_name; + const char* m_message; +}; + +struct StationeryRec { + int32_t m_ID; + int32_t m_itemID; + const char* m_texture; + int32_t m_flags; +}; + +struct StringLookupsRec { + int32_t m_ID; + const char* m_string; +}; + +struct SummonPropertiesRec { + int32_t m_ID; + int32_t m_control; + int32_t m_faction; + int32_t m_title; + int32_t m_slot; + int32_t m_flags; +}; + +struct TalentRec { + int32_t m_ID; + int32_t m_tabID; + int32_t m_tierID; + int32_t m_columnIndex; + int32_t m_spellRank[9]; + int32_t m_prereqTalent[3]; + int32_t m_prereqRank[3]; + int32_t m_flags; + int32_t m_requiredSpellID; + int32_t m_categoryMask[2]; +}; + +struct TalentTabRec { + int32_t m_ID; + const char* m_name; + int32_t m_spellIconID; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_categoryEnumID; // unconfirmed + int32_t m_orderIndex; + const char* m_backgroundFile; +}; + +struct TaxiNodesRec { + int32_t m_ID; + int32_t m_continentID; + float m_pos[3]; + const char* m_name; + int32_t m_mountCreatureID[2]; +}; + +struct TaxiPathRec { + int32_t m_ID; + int32_t m_fromTaxiNode; + int32_t m_toTaxiNode; + int32_t m_cost; +}; + +struct TaxiPathNodeRec { + int32_t m_ID; + int32_t m_pathID; + int32_t m_nodeIndex; + int32_t m_continentID; + float m_loc[3]; + int32_t m_flags; + int32_t m_delay; + int32_t m_arrivalEventID; + int32_t m_departureEventID; +}; + +struct TeamContributionPointsRec { + int32_t m_ID; + float m_data; +}; + +struct TerrainMaterialRec { + int32_t m_ID; + const char* m_name; + int32_t m_shader; + const char* m_envMapPath; +}; + +struct TerrainTypeRec { + int32_t m_terrainID; + const char* m_terrainDesc; + int32_t m_footstepSprayRun; + int32_t m_footstepSprayWalk; + int32_t m_soundID; + int32_t m_flags; + int32_t m_generatedID; +}; + +struct TerrainTypeSoundsRec { + int32_t m_ID; +}; + +struct TotemCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_totemCategoryType; + int32_t m_totemCategoryMask; +}; + +struct TransportAnimationRec { + int32_t m_ID; + int32_t m_transportID; + int32_t m_timeIndex; + float m_pos[3]; + int32_t m_sequenceID; +}; + +struct TransportPhysicsRec { + int32_t m_ID; + float m_waveAmp; + float m_waveTimeScale; + float m_rollAmp; + float m_rollTimeScale; + float m_pitchAmp; + float m_pitchTimeScale; + float m_maxBank; + float m_maxBankTurnSpeed; + float m_speedDampThresh; + float m_speedDamp; +}; + +struct TransportRotationRec { + int32_t m_ID; + int32_t m_gameObjectsID; + int32_t m_timeIndex; + float m_rot[4]; +}; + +struct UISoundLookupsRec { + int32_t m_ID; + int32_t m_soundID; + const char* m_soundName; +}; + +struct UnitBloodRec { + int32_t m_ID; + int32_t m_combatBloodSpurtFront[2]; + int32_t m_combatBloodSpurtBack[2]; + const char* m_groundBlood[5]; +}; + +struct UnitBloodLevelsRec { + int32_t m_ID; + int32_t m_violencelevel[3]; +}; + +struct VehicleRec { + int32_t m_ID; + int32_t m_flags; + float m_turnSpeed; + float m_pitchSpeed; + float m_pitchMin; + float m_pitchMax; + int32_t m_seatID[8]; + float m_mouseLookOffsetPitch; + float m_cameraFadeDistScalarMin; + float m_cameraFadeDistScalarMax; + float m_cameraPitchOffset; + float m_facingLimitRight; + float m_facingLimitLeft; + float m_msslTrgtTurnLingering; + float m_msslTrgtPitchLingering; + float m_msslTrgtMouseLingering; + float m_msslTrgtEndOpacity; + float m_msslTrgtArcSpeed; + float m_msslTrgtArcRepeat; + float m_msslTrgtArcWidth; + float m_msslTrgtImpactRadius[2]; + const char* m_msslTrgtArcTexture; + const char* m_msslTrgtImpactTexture; + const char* m_msslTrgtImpactModel[2]; + float m_cameraYawOffset; + int32_t m_uiLocomotionType; + float m_msslTrgtImpactTexRadius; + int32_t m_vehicleUiindicatorID; + int32_t m_powerDisplayID[3]; +}; + +struct VehicleSeatRec { + int32_t m_ID; + float m_field_3_3_5_12213_001; // unconfirmed + int32_t m_attachmentID; + float m_attachmentOffset[3]; + float m_field_3_3_5_12213_004; // unconfirmed + float m_enterSpeed; + float m_enterGravity; + float m_enterMinDuration; + float m_enterMaxDuration; + float m_enterMinArcHeight; + float m_enterMaxArcHeight; + int32_t m_enterAnimStart; + int32_t m_enterAnimLoop; + int32_t m_rideAnimStart; + int32_t m_rideAnimLoop; + int32_t m_rideUpperAnimStart; + int32_t m_rideUpperAnimLoop; + float m_field_3_3_5_12213_017; // unconfirmed + float m_exitSpeed; + float m_exitGravity; + float m_exitMinDuration; + float m_exitMaxDuration; + float m_exitMinArcHeight; + float m_exitMaxArcHeight; + int32_t m_exitAnimStart; + int32_t m_exitAnimLoop; + int32_t m_exitAnimEnd; + float m_field_3_3_5_12213_027; // unconfirmed + float m_passengerPitch; + float m_field_3_3_5_12213_029; // unconfirmed + int32_t m_passengerAttachmentID; + int32_t m_vehicleEnterAnim; + int32_t m_vehicleExitAnim; + int32_t m_vehicleRideAnimLoop; + int32_t m_field_3_3_5_12213_034; // unconfirmed + int32_t m_vehicleExitAnimBone; + int32_t m_vehicleEnterAnimBone; + float m_field_3_3_5_12213_037; // unconfirmed + float m_field_3_3_5_12213_038; // unconfirmed + int32_t m_vehicleAbilityDisplay; + int32_t m_enterUisoundID; + int32_t m_field_3_3_5_12213_041; // unconfirmed + int32_t m_uiSkin; + float m_field_3_3_5_12213_043; // unconfirmed + float m_field_3_3_5_12213_044; // unconfirmed + float m_field_3_3_5_12213_045; // unconfirmed + int32_t m_field_3_3_5_12213_046; // unconfirmed + float m_field_3_3_5_12213_047; // unconfirmed + float m_field_3_3_5_12213_048; // unconfirmed + float m_field_3_3_5_12213_049; // unconfirmed + float m_field_3_3_5_12213_050; // unconfirmed + float m_field_3_3_5_12213_051; // unconfirmed + float m_field_3_3_5_12213_052; // unconfirmed + float m_field_3_3_5_12213_053; // unconfirmed + float m_field_3_3_5_12213_054; // unconfirmed + float m_field_3_3_5_12213_055; // unconfirmed +}; + +struct VehicleUIIndSeatRec { + int32_t m_ID; + int32_t m_vehicleUiindicatorID; + int32_t m_virtualSeatIndex; + float m_xpos; + float m_ypos; +}; + +struct VehicleUIIndicatorRec { + int32_t m_ID; + const char* m_backgroundTexture; +}; + +struct VideoHardwareRec { + int32_t m_ID; + int32_t m_vendorID; + int32_t m_deviceID; + int32_t m_farclipIdx; + int32_t m_terrainLoddistIdx; + int32_t m_terrainShadowLod; + int32_t m_detailDoodadDensityIdx; + int32_t m_detailDoodadAlpha; + int32_t m_animatingDoodadIdx; + int32_t m_trilinear; + int32_t m_numLights; + int32_t m_specularity; + int32_t m_waterLodidx; + int32_t m_particleDensityIdx; + int32_t m_unitDrawDistIdx; + int32_t m_smallCullDistIdx; + int32_t m_resolutionIdx; + int32_t m_baseMipLevel; + const char* m_oglOverrides; + const char* m_d3DOverrides; + int32_t m_fixLag; + int32_t m_multisample; + int32_t m_atlasdisable; +}; + +struct VocalUISoundsRec { + int32_t m_ID; + int32_t m_vocalUienum; + int32_t m_raceID; + int32_t m_normalSoundID[2]; + int32_t m_pissedSoundID[2]; +}; + +struct WMOAreaTableRec { + int32_t m_ID; + int32_t m_wmoid; + int32_t m_nameSetID; + int32_t m_wmogroupID; + int32_t m_soundProviderPref; + int32_t m_soundProviderPrefUnderwater; + int32_t m_ambienceID; + int32_t m_zoneMusic; + int32_t m_introSound; + int32_t m_flags; + int32_t m_areaTableID; + const char* m_areaName; +}; + +struct WeaponImpactSoundsRec { + int32_t m_ID; + int32_t m_weaponSubClassID; + int32_t m_parrySoundType; + int32_t m_impactSoundID[10]; + int32_t m_critImpactSoundID[10]; +}; + +struct WeaponSwingSounds2Rec { + int32_t m_ID; + int32_t m_swingType; + int32_t m_crit; + int32_t m_soundID; +}; + +struct WeatherRec { + int32_t m_ID; + int32_t m_ambienceID; + int32_t m_effectType; + float m_transitionSkyBox; + float m_effectColor[3]; + const char* m_effectTexture; +}; + +struct WorldChunkSoundsRec { + int32_t m_ID; + int32_t m_chunkX; + int32_t m_chunkY; + int32_t m_subchunkX; + int32_t m_subchunkY; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; +}; + +struct WorldMapAreaRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + const char* m_areaName; + float m_locLeft; + float m_locRight; + float m_locTop; + float m_locBottom; + int32_t m_displayMapID; + int32_t m_defaultDungeonFloor; + int32_t m_parentWorldMapID; +}; + +struct WorldMapContinentRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_leftBoundary; + int32_t m_rightBoundary; + int32_t m_topBoundary; + int32_t m_bottomBoundary; + float m_continentOffset[2]; + float m_scale; + float m_taxiMin[2]; + float m_taxiMax[2]; + int32_t m_worldMapID; +}; + +struct WorldMapOverlayRec { + int32_t m_ID; + int32_t m_mapAreaID; + int32_t m_areaID[4]; + int32_t m_mapPointX; + int32_t m_mapPointY; + const char* m_textureName; + int32_t m_textureWidth; + int32_t m_textureHeight; + int32_t m_offsetX; + int32_t m_offsetY; + int32_t m_hitRectTop; + int32_t m_hitRectLeft; + int32_t m_hitRectBottom; + int32_t m_hitRectRight; +}; + +struct WorldMapTransformsRec { + int32_t m_ID; + int32_t m_mapID; + float m_regionMin[2]; + float m_regionMax[2]; + int32_t m_newMapID; + float m_regionOffset[2]; + int32_t m_newDungeonMapID; +}; + +struct WorldSafeLocsRec { + int32_t m_ID; + int32_t m_continent; + float m_loc[3]; + const char* m_areaName; +}; + +struct WorldStateUIRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + int32_t m_phaseShift; + const char* m_icon; + const char* m_string; + const char* m_tooltip; + int32_t m_stateVariable; + int32_t m_type; + const char* m_dynamicIcon; + const char* m_dynamicTooltip; + const char* m_extendedUi; + int32_t m_extendedUistateVariable[3]; +}; + +struct WorldStateZoneSoundsRec { + int32_t m_worldStateID; + int32_t m_worldStateValue; + int32_t m_areaID; + int32_t m_wmoareaID; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; + int32_t m_generatedID; +}; + +struct WowError_StringsRec { + int32_t m_ID; + const char* m_name; // unconfirmed + const char* m_description; +}; + +struct ZoneIntroMusicTableRec { + int32_t m_ID; + const char* m_name; + int32_t m_soundID; + int32_t m_priority; + int32_t m_minDelayMinutes; +}; + +struct ZoneLightRec { + int32_t m_ID; + const char* m_name; + int32_t m_mapID; + int32_t m_lightID; +}; + +struct ZoneLightPointRec { + int32_t m_ID; + int32_t m_zoneLightID; + float m_pos[2]; + int32_t m_pointOrder; +}; + +struct ZoneMusicRec { + int32_t m_ID; + const char* m_setName; + int32_t m_silenceIntervalMin[2]; + int32_t m_silenceIntervalMax[2]; + int32_t m_sounds[2]; +}; + +struct gtBarberShopCostBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToMeleeCritRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToMeleeCritBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToSpellCritRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToSpellCritBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtCombatRatingsRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtNPCManaCostScalerRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtOCTClassCombatRatingScalarRec { + int32_t m_ID; + float m_data; +}; + +struct gtOCTRegenHPRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtOCTRegenMPRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtRegenHPPerSptRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtRegenMPPerSptRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtSpellScalingRec { + int32_t m_ID; + float m_data; +}; + + +struct AchievementRec { + int32_t m_ID; + int32_t m_faction; + int32_t m_instanceID; + int32_t m_supercedes; + const char* m_title; + const char* m_description; + int32_t m_category; + int32_t m_points; + int32_t m_uiOrder; + int32_t m_flags; + int32_t m_iconID; + const char* m_reward; + int32_t m_minimumCriteria; + int32_t m_sharesCriteria; +}; + +struct Achievement_CategoryRec { + int32_t m_ID; + int32_t m_parent; + const char* m_name; + int32_t m_uiOrder; +}; + +struct Achievement_CriteriaRec { + int32_t m_ID; + int32_t m_achievementID; + int32_t m_type; + int32_t m_assetID; + int32_t m_quantity; + int32_t m_startEvent; + int32_t m_startAsset; + int32_t m_failEvent; + int32_t m_failAsset; + const char* m_description; + int32_t m_flags; + int32_t m_timerStartEvent; + int32_t m_timerAssetID; + int32_t m_timerTime; + int32_t m_uiOrder; +}; + +struct AnimKitRec { + int32_t m_ID; + int32_t m_oneShotDuration; + int32_t m_oneShotStopAnimKitID; +}; + +struct AnimKitBoneSetRec { + int32_t m_ID; + const char* m_name; + int32_t m_boneDataID; + int32_t m_parentAnimKitBoneSetID; + int32_t m_extraBoneCount; + int32_t m_altAnimKitBoneSetID; +}; + +struct AnimKitBoneSetAliasRec { + int32_t m_ID; + int32_t m_boneDataID; + int32_t m_animKitBoneSetID; +}; + +struct AnimKitConfigRec { + int32_t m_ID; + int32_t m_configFlags; +}; + +struct AnimKitConfigBoneSetRec { + int32_t m_ID; + int32_t m_parentAnimKitConfigID; + int32_t m_animKitBoneSetID; + int32_t m_animKitPriorityID; +}; + +struct AnimKitPriorityRec { + int32_t m_ID; + int32_t m_priority; +}; + +struct AnimKitSegmentRec { + int32_t m_ID; + int32_t m_parentAnimKitID; + int32_t m_animID; + int32_t m_animStartTime; + int32_t m_animKitConfigID; + int32_t m_startCondition; + int32_t m_startConditionParam; + int32_t m_startConditionDelay; + int32_t m_endCondition; + int32_t m_endConditionParam; + int32_t m_endConditionDelay; + float m_speed; + int32_t m_segmentFlags; + int32_t m_forcedVariation; + int32_t m_overrideConfigFlags; + int32_t m_loopToSegmentIndex; +}; + +struct AnimReplacementRec { + int32_t m_ID; + int32_t m_srcAnimID; + int32_t m_dstAnimID; + int32_t m_parentAnimReplacementSetID; +}; + +struct AnimReplacementSetRec { + int32_t m_ID; + int32_t m_execOrder; +}; + +struct AnimationDataRec { + int32_t m_ID; + const char* m_name; + int32_t m_weaponflags; + int32_t m_bodyflags; + int32_t m_flags; + int32_t m_fallback; + int32_t m_behaviorID; + int32_t m_behaviorTier; +}; + +struct AreaAssignmentRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + int32_t m_chunkX; + int32_t m_chunkY; +}; + +struct AreaGroupRec { + int32_t m_ID; + int32_t m_areaID[6]; + int32_t m_nextAreaID; +}; + +struct AreaPOIRec { + int32_t m_ID; + int32_t m_importance; + int32_t m_icon[9]; + int32_t m_factionID; + float m_pos[3]; + int32_t m_continentID; + int32_t m_flags; + int32_t m_areaID; + const char* m_name; + const char* m_description; + int32_t m_worldStateID; + int32_t m_worldMapLink; +}; + +struct AreaTableRec { + int32_t m_ID; + int32_t m_continentID; + int32_t m_parentAreaID; + int32_t m_areaBit; + int32_t m_flags; + int32_t m_soundProviderPref; + int32_t m_soundProviderPrefUnderwater; + int32_t m_ambienceID; + int32_t m_zoneMusic; + int32_t m_introSound; + int32_t m_explorationLevel; + const char* m_areaName; + int32_t m_factionGroupMask; + int32_t m_liquidTypeID[4]; + float m_minElevation; + float m_ambientMultiplier; + int32_t m_lightID; +}; + +struct AreaTriggerRec { + int32_t m_ID; + int32_t m_continentID; + float m_pos[3]; + float m_radius; + float m_boxLength; + float m_boxWidth; + float m_boxHeight; + float m_boxYaw; +}; + +struct ArmorLocationRec { + int32_t m_ID; + float m_clothmodifier; + float m_leathermodifier; + float m_chainmodifier; + float m_platemodifier; + float m_modifier; +}; + +struct AttackAnimKitsRec { + int32_t m_ID; + int32_t m_itemSubclassID; + int32_t m_animTypeID; + int32_t m_animFrequency; + int32_t m_whichHand; +}; + +struct AttackAnimTypesRec { + int32_t m_animID; + const char* m_animName; + int32_t m_generatedID; +}; + +struct AuctionHouseRec { + int32_t m_ID; + int32_t m_factionID; + int32_t m_depositRate; + int32_t m_consignmentRate; + const char* m_name; +}; + +struct BankBagSlotPricesRec { + int32_t m_ID; + int32_t m_cost; +}; + +struct BannedAddonsRec { + int32_t m_ID; + int32_t m_nameMd5[4]; + int32_t m_versionMd5[4]; + int32_t m_lastModified; + int32_t m_flags; +}; + +struct BarberShopStyleRec { + int32_t m_ID; + int32_t m_type; + const char* m_displayName; + const char* m_description; + float m_costModifier; + int32_t m_race; + int32_t m_sex; + int32_t m_data; +}; + +struct BattlemasterListRec { + int32_t m_ID; + int32_t m_mapID[8]; + int32_t m_instanceType; + int32_t m_groupsAllowed; + const char* m_name; + int32_t m_maxGroupSize; + int32_t m_holidayWorldState; + int32_t m_minLevel; + int32_t m_maxLevel; +}; + +struct CameraModeRec { + int32_t m_ID; + const char* m_name; + int32_t m_type; + int32_t m_flags; + float m_positionOffset[3]; + float m_targetOffset[3]; + float m_positionSmoothing; + float m_rotationSmoothing; + float m_fieldOfView; + int32_t m_lockedPositionOffsetBase; + int32_t m_lockedPositionOffsetDirection; + int32_t m_lockedTargetOffsetBase; + int32_t m_lockedTargetOffsetDirection; +}; + +struct CameraShakesRec { + int32_t m_ID; + int32_t m_shakeType; + int32_t m_direction; + float m_amplitude; + float m_frequency; + float m_duration; + float m_phase; + float m_coefficient; +}; + +struct Cfg_CategoriesRec { + int32_t m_ID; + int32_t m_localeMask; + int32_t m_createCharsetMask; + int32_t m_flags; + const char* m_name; +}; + +struct Cfg_ConfigsRec { + int32_t m_ID; + int32_t m_realmType; + int32_t m_playerKillingAllowed; + int32_t m_roleplaying; +}; + +struct CharBaseInfoRec { + int8_t m_raceID; + int8_t m_classID; + int32_t m_generatedID; +}; + +struct CharHairGeosetsRec { + int32_t m_ID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_variationID; + int32_t m_geosetID; + int32_t m_showscalp; +}; + +struct CharHairTexturesRec { + int32_t m_ID; + int32_t m_field_0_5_3_3368_001_race; // unconfirmed + int32_t m_field_0_5_3_3368_002_gender; // unconfirmed + int32_t m_field_0_5_3_3368_003; // unconfirmed + int32_t m_field_0_5_3_3368_004_mayberacemask; // unconfirmed + int32_t m_field_0_5_3_3368_005_the_x_in_hair_xy_blp; // unconfirmed + int32_t m_field_0_5_3_3368_006; // unconfirmed + int32_t m_field_0_5_3_3368_007; // unconfirmed +}; + +struct CharSectionsRec { + int32_t m_ID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_baseSection; + const char* m_textureName[3]; + int32_t m_flags; + int32_t m_variationIndex; + int32_t m_colorIndex; +}; + +struct CharStartOutfitRec { + int32_t m_ID; + int8_t m_raceID; + int8_t m_classID; + int8_t m_sexID; + int8_t m_outfitID; + int32_t m_itemID[24]; + int32_t m_displayItemID[24]; + int32_t m_inventoryType[24]; +}; + +struct CharTitlesRec { + int32_t m_ID; + int32_t m_conditionID; + const char* m_name; + const char* m_name1; + int32_t m_maskID; +}; + +struct CharVariationsRec { + int32_t m_raceID; + int32_t m_sexID; + int32_t m_textureHoldLayer[4]; + int32_t m_generatedID; +}; + +struct CharacterFacialHairStylesRec { + int32_t m_raceID; + int32_t m_sexID; + int32_t m_variationID; + int32_t m_geoset[5]; + int32_t m_generatedID; +}; + +struct ChatChannelsRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_factionGroup; + const char* m_name; + const char* m_shortcut; +}; + +struct ChatProfanityRec { + int32_t m_ID; + const char* m_text; + int32_t m_language; +}; + +struct ChrClassesRec { + int32_t m_ID; + int32_t m_damageBonusStat; + int32_t m_displayPower; + const char* m_petNameToken; + const char* m_name; + const char* m_nameFemale; + const char* m_nameMale; + const char* m_filename; + int32_t m_spellClassSet; + int32_t m_flags; + int32_t m_cinematicSequenceID; + int32_t m_requiredExpansion; +}; + +struct ChrRacesRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_factionID; + int32_t m_explorationSoundID; + int32_t m_maleDisplayID; + int32_t m_femaleDisplayID; + const char* m_clientPrefix; + int32_t m_baseLanguage; + int32_t m_creatureType; + int32_t m_resSicknessSpellID; + int32_t m_splashSoundID; + const char* m_clientFileString; + int32_t m_cinematicSequenceID; + int32_t m_alliance; + const char* m_name; + const char* m_nameFemale; + const char* m_nameMale; + const char* m_facialHairCustomization[2]; + const char* m_hairCustomization; + int32_t m_requiredExpansion; +}; + +struct CinematicCameraRec { + int32_t m_ID; + const char* m_model; + int32_t m_soundID; + float m_origin[3]; + float m_originFacing; +}; + +struct CinematicSequencesRec { + int32_t m_ID; + int32_t m_soundID; + int32_t m_camera[8]; +}; + +struct CreatureDisplayInfoRec { + int32_t m_ID; + int32_t m_modelID; + int32_t m_soundID; + int32_t m_extendedDisplayInfoID; + float m_creatureModelScale; + int32_t m_creatureModelAlpha; + const char* m_textureVariation[3]; + const char* m_portraitTextureName; + int32_t m_sizeClass; + int32_t m_bloodID; + int32_t m_npcsoundID; + int32_t m_particleColorID; + int32_t m_creatureGeosetData; + int32_t m_objectEffectPackageID; +}; + +struct CreatureDisplayInfoExtraRec { + int32_t m_ID; + int32_t m_displayRaceID; + int32_t m_displaySexID; + int32_t m_skinID; + int32_t m_faceID; + int32_t m_hairStyleID; + int32_t m_hairColorID; + int32_t m_facialHairID; + int32_t m_npcitemDisplay[11]; + int32_t m_flags; + const char* m_bakeName; +}; + +struct CreatureFamilyRec { + int32_t m_ID; + float m_minScale; + int32_t m_minScaleLevel; + float m_maxScale; + int32_t m_maxScaleLevel; + int32_t m_skillLine[2]; + int32_t m_petFoodMask; + int32_t m_petTalentType; + int32_t m_categoryEnumID; + const char* m_name; + const char* m_iconFile; +}; + +struct CreatureModelDataRec { + int32_t m_ID; + int32_t m_flags; + const char* m_modelName; + int32_t m_sizeClass; + float m_modelScale; + int32_t m_bloodID; + int32_t m_footprintTextureID; + float m_footprintTextureLength; + float m_footprintTextureWidth; + float m_footprintParticleScale; + int32_t m_foleyMaterialID; + int32_t m_footstepShakeSize; + int32_t m_deathThudShakeSize; + int32_t m_soundID; + float m_collisionWidth; + float m_collisionHeight; + float m_mountHeight; + float m_geoBoxMinX; + float m_geoBoxMinY; + float m_geoBoxMinZ; + float m_geoBoxMaxX; + float m_geoBoxMaxY; + float m_geoBoxMaxZ; + float m_worldEffectScale; + float m_attachedEffectScale; + float m_missileCollisionRadius; + float m_missileCollisionPush; + float m_missileCollisionRaise; +}; + +struct CreatureMovementInfoRec { + int32_t m_ID; + float m_smoothFacingChaseRate; +}; + +struct CreatureSoundDataRec { + int32_t m_ID; + int32_t m_soundExertionID; + int32_t m_soundExertionCriticalID; + int32_t m_soundInjuryID; + int32_t m_soundInjuryCriticalID; + int32_t m_soundInjuryCrushingBlowID; + int32_t m_soundDeathID; + int32_t m_soundStunID; + int32_t m_soundStandID; + int32_t m_soundFootstepID; + int32_t m_soundAggroID; + int32_t m_soundWingFlapID; + int32_t m_soundWingGlideID; + int32_t m_soundAlertID; + int32_t m_soundFidget[5]; + int32_t m_customAttack[4]; + int32_t m_npcsoundID; + int32_t m_loopSoundID; + int32_t m_creatureImpactType; + int32_t m_soundJumpStartID; + int32_t m_soundJumpEndID; + int32_t m_soundPetAttackID; + int32_t m_soundPetOrderID; + int32_t m_soundPetDismissID; + float m_fidgetDelaySecondsMin; + float m_fidgetDelaySecondsMax; + int32_t m_birthSoundID; + int32_t m_spellCastDirectedSoundID; + int32_t m_submergeSoundID; + int32_t m_submergedSoundID; + int32_t m_creatureSoundDataIdpet; +}; + +struct CreatureSpellDataRec { + int32_t m_ID; + int32_t m_spells[4]; + int32_t m_availability[4]; +}; + +struct CreatureTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; +}; + +struct CurrencyCategoryRec { + int32_t m_ID; + int32_t m_flags; + const char* m_name; +}; + +struct CurrencyTypesRec { + int32_t m_ID; + int32_t m_itemID; + int32_t m_categoryID; + int32_t m_bitIndex; +}; + +struct DanceMovesRec { + int32_t m_ID; + int32_t m_type; + int32_t m_param; + int32_t m_fallback; + int32_t m_racemask; + const char* m_internalName; + const char* m_name; + int32_t m_lockID; +}; + +struct DeathThudLookupsRec { + int32_t m_ID; + int32_t m_sizeClass; + int32_t m_terrainTypeSoundID; + int32_t m_soundEntryID; + int32_t m_soundEntryIdwater; +}; + +struct DeclinedWordRec { + int32_t m_ID; + const char* m_word; +}; + +struct DeclinedWordCasesRec { + int32_t m_ID; + int32_t m_declinedWordID; + int32_t m_caseIndex; + const char* m_declinedWord; +}; + +struct DestructibleModelDataRec { + int32_t m_ID; + int32_t m_state0ImpactEffectDoodadSet; + int32_t m_state0AmbientDoodadSet; + int32_t m_state1WMO; + int32_t m_state1DestructionDoodadSet; + int32_t m_state1ImpactEffectDoodadSet; + int32_t m_state1AmbientDoodadSet; + int32_t m_state2WMO; + int32_t m_state2DestructionDoodadSet; + int32_t m_state2ImpactEffectDoodadSet; + int32_t m_state2AmbientDoodadSet; + int32_t m_state3WMO; + int32_t m_state3InitDoodadSet; + int32_t m_state3AmbientDoodadSet; + int32_t m_ejectDirection; + int32_t m_repairGroundFx; + int32_t m_doNotHighlight; + int32_t m_healEffect; + int32_t m_healEffectSpeed; +}; + +struct DungeonEncounterRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_difficulty; + int32_t m_orderIndex; + int32_t m_bit; + const char* m_name; + int32_t m_spellIconID; +}; + +struct DungeonMapRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_floorIndex; + float m_minX; + float m_maxX; + float m_minY; + float m_maxY; + int32_t m_parentWorldMapID; +}; + +struct DungeonMapChunkRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_wmogroupID; + int32_t m_dungeonMapID; + float m_minZ; +}; + +struct DurabilityCostsRec { + int32_t m_ID; + int32_t m_weaponSubClassCost[21]; + int32_t m_armorSubClassCost[8]; +}; + +struct DurabilityQualityRec { + int32_t m_ID; + float m_data; +}; + +struct EmotesRec { + int32_t m_ID; + const char* m_emoteSlashCommand; + int32_t m_animID; + int32_t m_emoteFlags; + int32_t m_emoteSpecProc; + int32_t m_emoteSpecProcParam; + int32_t m_eventSoundID; +}; + +struct EmotesTextRec { + int32_t m_ID; + const char* m_name; + int32_t m_emoteID; + int32_t m_emoteText[16]; +}; + +struct EmotesTextDataRec { + int32_t m_ID; + const char* m_text; +}; + +struct EmotesTextSoundRec { + int32_t m_ID; + int32_t m_emotesTextID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_soundID; +}; + +struct EnvironmentalDamageRec { + int32_t m_ID; + int32_t m_enumID; + int32_t m_visualkitID; +}; + +struct ExhaustionRec { + int32_t m_ID; + int32_t m_xp; + float m_factor; + float m_outdoorHours; + float m_innHours; + const char* m_name; + float m_threshold; +}; + +struct FactionRec { + int32_t m_ID; + int32_t m_reputationIndex; + int32_t m_reputationRaceMask[4]; + int32_t m_reputationClassMask[4]; + int32_t m_reputationBase[4]; + int32_t m_reputationFlags[4]; + int32_t m_parentFactionID; + float m_parentFactionMod[2]; + int32_t m_parentFactionCap[2]; + const char* m_name; + const char* m_description; +}; + +struct FactionGroupRec { + int32_t m_ID; + int32_t m_maskID; + const char* m_internalName; + const char* m_name; +}; + +struct FactionTemplateRec { + int32_t m_ID; + int32_t m_faction; + int32_t m_flags; + int32_t m_factionGroup; + int32_t m_friendGroup; + int32_t m_enemyGroup; + int32_t m_enemies[4]; + int32_t m_friend[4]; +}; + +struct FileDataRec { + int32_t m_ID; + const char* m_filename; + const char* m_filepath; +}; + +struct FootprintTexturesRec { + int32_t m_ID; + const char* m_footstepFilename; +}; + +struct FootstepTerrainLookupRec { + int32_t m_ID; + int32_t m_creatureFootstepID; + int32_t m_terrainSoundID; + int32_t m_soundID; + int32_t m_soundIdsplash; +}; + +struct GMSurveyAnswersRec { + int32_t m_ID; + int32_t m_sortIndex; + int32_t m_gmsurveyQuestionID; + const char* m_answer; +}; + +struct GMSurveyCurrentSurveyRec { + int32_t m_langid; + int32_t m_gmsurveyID; + int32_t m_generatedID; +}; + +struct GMSurveyQuestionsRec { + int32_t m_ID; + const char* m_question; +}; + +struct GMSurveySurveysRec { + int32_t m_ID; + int32_t m_[10]; +}; + +struct GMTicketCategoryRec { + int32_t m_ID; + const char* m_category; +}; + +struct GameObjectArtKitRec { + int32_t m_ID; + const char* m_textureVariation[3]; + const char* m_attachModel[4]; +}; + +struct GameObjectDisplayInfoRec { + int32_t m_ID; + const char* m_modelName; + int32_t m_sound[10]; + float m_geoBoxMin[3]; + float m_geoBoxMax[3]; + int32_t m_objectEffectPackageID; +}; + +struct GameTablesRec { + const char* m_name; + int32_t m_numRows; + int32_t m_numColumns; + int32_t m_generatedID; +}; + +struct GameTipsRec { + int32_t m_ID; + const char* m_text; +}; + +struct GemPropertiesRec { + int32_t m_ID; + int32_t m_enchantID; + int32_t m_maxcountInv; + int32_t m_maxcountItem; + int32_t m_type; +}; + +struct GlueScreenEmoteRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_raceID; + int32_t m_sexID; + int32_t m_leftHandItemType; + int32_t m_rightHandItemType; + int32_t m_animKitID; + int32_t m_spellVisualKitID; +}; + +struct GlyphPropertiesRec { + int32_t m_ID; + int32_t m_spellID; + int32_t m_glyphSlotFlags; + int32_t m_spellIconID; +}; + +struct GlyphSlotRec { + int32_t m_ID; + int32_t m_type; + int32_t m_tooltip; +}; + +struct GroundEffectDoodadRec { + int32_t m_ID; + const char* m_doodadpath; + int32_t m_flags; +}; + +struct GroundEffectTextureRec { + int32_t m_ID; + int32_t m_doodadID[4]; + int32_t m_doodadWeight[4]; + int32_t m_density; + int32_t m_sound; +}; + +struct GuildPerkSpellsRec { + int32_t m_ID; + int32_t m_guildLevel; + int32_t m_spellID; +}; + +struct HelmetGeosetVisDataRec { + int32_t m_ID; + int32_t m_hideGeoset[7]; +}; + +struct HolidayDescriptionsRec { + int32_t m_ID; + const char* m_description; +}; + +struct HolidayNamesRec { + int32_t m_ID; + const char* m_name; +}; + +struct HolidaysRec { + int32_t m_ID; + int32_t m_duration[10]; + int32_t m_date[26]; + int32_t m_region; + int32_t m_looping; + int32_t m_calendarFlags[10]; + int32_t m_holidayNameID; + int32_t m_holidayDescriptionID; + const char* m_textureFileName; + int32_t m_priority; + int32_t m_calendarFilterType; + int32_t m_flags; +}; + +struct ItemRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_subclassID; + int32_t m_soundOverrideSubclassID; + int32_t m_material; + int32_t m_displayInfoID; + int32_t m_inventoryType; + int32_t m_sheatheType; +}; + +struct ItemArmorQualityRec { + int32_t m_ID; + float m_qualitymod[7]; + int32_t m_itemLevel; +}; + +struct ItemArmorShieldRec { + int32_t m_ID; + int32_t m_itemLevel; + float m_quality[7]; +}; + +struct ItemArmorTotalRec { + int32_t m_ID; + int32_t m_itemLevel; + float m_cloth; + float m_leather; + float m_mail; + float m_plate; +}; + +struct ItemBagFamilyRec { + int32_t m_ID; + const char* m_name; +}; + +struct ItemClassRec { + int32_t m_classID; + int32_t m_subclassMapID; + int32_t m_flags; + const char* m_className; + int32_t m_generatedID; +}; + +struct ItemCondExtCostsRec { + int32_t m_ID; + int32_t m_condExtendedCost; // unconfirmed + int32_t m_itemExtendedCostEntry; + int32_t m_arenaSeason; // unconfirmed +}; + +struct ItemDamageAmmoRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageOneHandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageOneHandCasterRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageRangedRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageThrownRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageTwoHandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageTwoHandCasterRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDamageWandRec { + int32_t m_ID; + float m_quality[7]; + int32_t m_itemLevel; +}; + +struct ItemDisplayInfoRec { + int32_t m_ID; + const char* m_modelName[2]; + const char* m_modelTexture[2]; + const char* m_inventoryIcon[2]; + int32_t m_geosetGroup[3]; + int32_t m_flags; + int32_t m_spellVisualID; + int32_t m_groupSoundIndex; + int32_t m_helmetGeosetVisID[2]; + const char* m_texture[8]; + int32_t m_itemVisual; + int32_t m_particleColorID; +}; + +struct ItemExtendedCostRec { + int32_t m_ID; + int32_t m_honorPoints; + int32_t m_arenaPoints; + int32_t m_arenaBracket; + int32_t m_itemID[5]; + int32_t m_itemCount[5]; + int32_t m_requiredArenaRating; + int32_t m_itemPurchaseGroup; +}; + +struct ItemGroupSoundsRec { + int32_t m_ID; + int32_t m_sound[4]; +}; + +struct ItemLimitCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_quantity; + int32_t m_flags; +}; + +struct ItemPetFoodRec { + int32_t m_ID; + const char* m_name; +}; + +struct ItemPurchaseGroupRec { + int32_t m_ID; + int32_t m_itemID[8]; + const char* m_name; +}; + +struct ItemRandomPropertiesRec { + int32_t m_ID; + const char* m_name; + int32_t m_enchantment[5]; + const char* m_name; +}; + +struct ItemRandomSuffixRec { + int32_t m_ID; + const char* m_name; + const char* m_internalName; + int32_t m_enchantment[5]; + int32_t m_allocationPct[5]; +}; + +struct ItemReforgeRec { + int32_t m_ID; // unconfirmed + int32_t m_sourceStat; // unconfirmed + float m_sourceMultiplier; // unconfirmed + int32_t m_targetStat; // unconfirmed + float m_targetMultiplier; // unconfirmed +}; + +struct ItemSetRec { + int32_t m_ID; + const char* m_name; + int32_t m_itemID[17]; + int32_t m_setSpellID[8]; + int32_t m_setThreshold[8]; + int32_t m_requiredSkill; + int32_t m_requiredSkillRank; +}; + +struct ItemSubClassRec { + int32_t m_classID; + int32_t m_subClassID; + int32_t m_prerequisiteProficiency; + int32_t m_postrequisiteProficiency; + int32_t m_flags; + int32_t m_displayFlags; + int32_t m_weaponParrySeq; + int32_t m_weaponReadySeq; + int32_t m_weaponAttackSeq; + int32_t m_weaponSwingSize; + const char* m_displayName; + const char* m_verboseName; + int32_t m_generatedID; +}; + +struct ItemSubClassMaskRec { + int32_t m_classID; + int32_t m_mask; + const char* m_name; + int32_t m_generatedID; +}; + +struct ItemVisualEffectsRec { + int32_t m_ID; + const char* m_model; +}; + +struct ItemVisualsRec { + int32_t m_ID; + int32_t m_slot[5]; +}; + +struct LFGDungeonExpansionRec { + int32_t m_ID; + int32_t m_lfgID; + int32_t m_expansionLevel; + int32_t m_randomID; + int32_t m_hardLevelMin; + int32_t m_hardLevelMax; + int32_t m_targetLevelMin; + int32_t m_targetLevelMax; +}; + +struct LFGDungeonGroupRec { + int32_t m_ID; + const char* m_name; + int32_t m_orderIndex; + int32_t m_parentGroupID; + int32_t m_typeID; +}; + +struct LFGDungeonsRec { + int32_t m_ID; + const char* m_name; + int32_t m_minLevel; + int32_t m_maxLevel; + int32_t m_targetLevel; + int32_t m_targetLevelMin; + int32_t m_targetLevelMax; + int32_t m_mapID; + int32_t m_difficulty; + int32_t m_flags; + int32_t m_typeID; + int32_t m_faction; + const char* m_textureFilename; + int32_t m_expansionLevel; + int32_t m_orderIndex; + int32_t m_groupID; + const char* m_description; +}; + +struct LanguageWordsRec { + int32_t m_ID; + int32_t m_languageID; + const char* m_word; +}; + +struct LanguagesRec { + int32_t m_ID; + const char* m_name; +}; + +struct LightRec { + int32_t m_ID; + int32_t m_continentID; + float m_gameCoords[3]; + float m_gameFalloffStart; + float m_gameFalloffEnd; + int32_t m_lightParamsID[8]; +}; + +struct LightFloatBandRec { + int32_t m_ID; + int32_t m_num; + int32_t m_time[16]; + float m_data[16]; +}; + +struct LightIntBandRec { + int32_t m_ID; + int32_t m_num; + int32_t m_time[16]; + int32_t m_data[16]; +}; + +struct LightParamsRec { + int32_t m_ID; + int32_t m_highlightSky; + int32_t m_lightSkyboxID; + float m_glow; + float m_waterShallowAlpha; + float m_waterDeepAlpha; + float m_oceanShallowAlpha; + float m_oceanDeepAlpha; + int32_t m_flags; +}; + +struct LightSkyboxRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; +}; + +struct LiquidMaterialRec { + int32_t m_ID; + int32_t m_lvf; + int32_t m_flags; +}; + +struct LiquidObjectRec { + int32_t m_ID; + float m_flowDirection; + float m_flowSpeed; + int32_t m_liquidTypeID; + int32_t m_fishable; + int32_t m_reflection; +}; + +struct LiquidTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_flags; + int32_t m_soundBank; + int32_t m_soundID; + int32_t m_spellID; + float m_maxDarkenDepth; + float m_fogDarkenIntensity; + float m_ambDarkenIntensity; + float m_dirDarkenIntensity; + int32_t m_lightID; + float m_particleScale; + int32_t m_particleMovement; + int32_t m_particleTexSlots; + int32_t m_materialID; + const char* m_texture[6]; + int32_t m_color[2]; + float m_float[18]; + int32_t m_int[4]; +}; + +struct LoadingScreenTaxiSplinesRec { + int32_t m_ID; + int32_t m_pathID; + float m_locx[8]; + float m_locy[8]; + int32_t m_legIndex; +}; + +struct LoadingScreensRec { + int32_t m_ID; + const char* m_name; + const char* m_fileName; + int32_t m_hasWideScreen; +}; + +struct LockRec { + int32_t m_ID; + int32_t m_type[8]; + int32_t m_index[8]; + int32_t m_skill[8]; + int32_t m_action[8]; +}; + +struct LockTypeRec { + int32_t m_ID; + const char* m_name; + const char* m_resourceName; + const char* m_verb; + const char* m_cursorName; +}; + +struct MailTemplateRec { + int32_t m_ID; + const char* m_subject; + const char* m_body; +}; + +struct MapRec { + int32_t m_ID; + const char* m_directory; + int32_t m_instanceType; + int32_t m_flags; // unconfirmed + int32_t m_pvp; + const char* m_mapName; + int32_t m_areaTableID; + const char* m_mapDescription0; + const char* m_mapDescription1; + int32_t m_loadingScreenID; + float m_minimapIconScale; + int32_t m_corpseMapID; + float m_corpse[2]; + int32_t m_timeOfDayOverride; + int32_t m_expansionID; + int32_t m_raidOffset; + int32_t m_maxPlayers; +}; + +struct MapDifficultyRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_difficulty; + const char* m_message; + int32_t m_raidDuration; + int32_t m_maxPlayers; + const char* m_difficultystring; +}; + +struct MaterialRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_foleySoundID; + int32_t m_sheatheSoundID; + int32_t m_unsheatheSoundID; +}; + +struct MountTypeRec { + int32_t m_ID; + int32_t m_capability[8]; +}; + +struct MovieRec { + int32_t m_ID; + const char* m_filename; + int32_t m_volume; +}; + +struct MovieFileDataRec { + int32_t m_fileDataID; + int32_t m_resolution; + int32_t m_generatedID; +}; + +struct MovieVariationRec { + int32_t m_ID; + int32_t m_movieID; + int32_t m_fileDataID; +}; + +struct NPCSoundsRec { + int32_t m_ID; + int32_t m_soundID[4]; +}; + +struct NameGenRec { + int32_t m_ID; + const char* m_name; + int32_t m_raceID; + int32_t m_sex; +}; + +struct NamesProfanityRec { + int32_t m_ID; + const char* m_name; + int32_t m_language; +}; + +struct NamesReservedRec { + int32_t m_ID; + const char* m_name; + int32_t m_language; +}; + +struct ObjectEffectRec { + int32_t m_ID; + const char* m_name; + int32_t m_objectEffectGroupID; + int32_t m_triggerType; + int32_t m_eventType; + int32_t m_effectRecType; + int32_t m_effectRecID; + int32_t m_attachment; + float m_offset[3]; + int32_t m_objectEffectModifierID; +}; + +struct ObjectEffectGroupRec { + int32_t m_ID; + const char* m_name; +}; + +struct ObjectEffectModifierRec { + int32_t m_ID; + int32_t m_inputType; + int32_t m_mapType; + int32_t m_outputType; + float m_param[4]; +}; + +struct ObjectEffectPackageRec { + int32_t m_ID; + const char* m_name; +}; + +struct ObjectEffectPackageElemRec { + int32_t m_ID; + int32_t m_objectEffectPackageID; + int32_t m_objectEffectGroupID; + int32_t m_stateType; +}; + +struct OverrideSpellDataRec { + int32_t m_ID; + int32_t m_spells[10]; + int32_t m_flags; +}; + +struct PVPDifficultyRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_rangeIndex; + int32_t m_minLevel; + int32_t m_maxLevel; + int32_t m_difficulty; +}; + +struct PackageRec { + int32_t m_ID; + const char* m_icon; + int32_t m_cost; + const char* m_name; +}; + +struct PageTextMaterialRec { + int32_t m_ID; + const char* m_name; +}; + +struct PaperDollItemFrameRec { + const char* m_itemButtonName; + const char* m_slotIcon; + int32_t m_slotNumber; + int32_t m_generatedID; +}; + +struct ParticleColorRec { + int32_t m_ID; + int32_t m_start[3]; + int32_t m_mid[3]; + int32_t m_end[3]; +}; + +struct PetPersonalityRec { + int32_t m_ID; + const char* m_name; + int32_t m_happinessThreshold[3]; + float m_happinessDamage[3]; +}; + +struct PetitionTypeRec { + int32_t m_ID; // unconfirmed + const char* m_name; // unconfirmed + int32_t m_type; // unconfirmed +}; + +struct PhaseRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_parentMapID[2]; // unconfirmed + const char* m_name; + int32_t m_flags; +}; + +struct PhaseShiftZoneSoundsRec { + int32_t m_ID; + int32_t m_areaID; + int32_t m_wmoareaID; + int32_t m_phaseID; + int32_t m_phaseGroupID; + int32_t m_phaseUseFlags; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; + int32_t m_uwzoneIntroMusicID; + int32_t m_uwzoneMusicID; + int32_t m_uwsoundAmbienceID; + int32_t m_uwsoundProviderPreferencesID; +}; + +struct PhaseXPhaseGroupRec { + int32_t m_ID; + int32_t m_phaseID; + int32_t m_phaseGroupID; +}; + +struct PowerDisplayRec { + int32_t m_ID; + int32_t m_actualType; + const char* m_globalStringBaseTag; + int8_t m_red; + int8_t m_green; + int8_t m_blue; +}; + +struct QuestFactionRewardRec { + int32_t m_ID; + int32_t m_difficulty[10]; +}; + +struct QuestInfoRec { + int32_t m_ID; + const char* m_infoName; +}; + +struct QuestSortRec { + int32_t m_ID; + const char* m_sortName; +}; + +struct QuestXPRec { + int32_t m_ID; + int32_t m_difficulty[10]; +}; + +struct RandPropPointsRec { + int32_t m_ID; + int32_t m_epic[5]; + int32_t m_superior[5]; + int32_t m_good[5]; +}; + +struct ResearchBranchRec { + int32_t m_ID; + const char* m_name; + int32_t m_researchFieldID; + int32_t m_currencyID; + const char* m_texture; + int32_t m_itemID; +}; + +struct ResistancesRec { + int32_t m_ID; + int32_t m_flags; + int32_t m_fizzleSoundID; + const char* m_name; +}; + +struct ScalingStatDistributionRec { + int32_t m_ID; + int32_t m_statID[10]; + int32_t m_bonus[10]; + int32_t m_maxlevel; +}; + +struct ScalingStatValuesRec { + int32_t m_ID; + int32_t m_charlevel; + int32_t m_shoulderBudget; + int32_t m_trinketBudget; + int32_t m_weaponBudget1h; + int32_t m_rangedBudget; + int32_t m_clothShoulderArmor; + int32_t m_leatherShoulderArmor; + int32_t m_mailShoulderArmor; + int32_t m_plateShoulderArmor; + int32_t m_weaponDps1h; + int32_t m_weaponDps2h; + int32_t m_spellcasterDps1h; + int32_t m_spellcasterDps2h; + int32_t m_rangedDps; + int32_t m_wandDps; + int32_t m_spellPower; + int32_t m_primaryBudget; + int32_t m_tertiaryBudget; + int32_t m_clothCloakArmor; + int32_t m_clothChestArmor; + int32_t m_leatherChestArmor; + int32_t m_mailChestArmor; + int32_t m_plateChestArmor; +}; + +struct ScreenEffectRec { + int32_t m_ID; + const char* m_name; + int32_t m_effect; + int32_t m_param[4]; + int32_t m_lightParamsID; + int32_t m_soundAmbienceID; + int32_t m_zoneMusicID; +}; + +struct ServerMessagesRec { + int32_t m_ID; + const char* m_text; +}; + +struct SheatheSoundLookupsRec { + int32_t m_ID; + int32_t m_classID; + int32_t m_subclassID; + int32_t m_material; + int32_t m_checkMaterial; + int32_t m_sheatheSound; + int32_t m_unsheatheSound; +}; + +struct SkillCostsDataRec { + int32_t m_ID; + int32_t m_skillCostsID; + int32_t m_cost[3]; +}; + +struct SkillLineRec { + int32_t m_ID; + int32_t m_categoryID; + int32_t m_skillCostsID; + const char* m_displayName; + const char* m_description; + int32_t m_spellIconID; + const char* m_alternateVerb; + int32_t m_canLink; +}; + +struct SkillLineAbilityRec { + int32_t m_ID; + int32_t m_skillLine; + int32_t m_spell; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_excludeRace; + int32_t m_excludeClass; + int32_t m_minSkillLineRank; + int32_t m_supercededBySpell; + int32_t m_acquireMethod; + int32_t m_trivialSkillLineRankHigh; + int32_t m_trivialSkillLineRankLow; + int32_t m_characterPoints[2]; +}; + +struct SkillLineCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_sortIndex; +}; + +struct SkillRaceClassInfoRec { + int32_t m_ID; + int32_t m_skillID; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_flags; + int32_t m_minLevel; + int32_t m_skillTierID; + int32_t m_skillCostIndex; +}; + +struct SkillTiersRec { + int32_t m_ID; + int32_t m_cost[16]; + int32_t m_value[16]; +}; + +struct SoundAmbienceRec { + int32_t m_ID; + int32_t m_ambienceID[2]; +}; + +struct SoundEmittersRec { + int32_t m_ID; + float m_position[3]; + float m_direction[3]; + int32_t m_soundEntryAdvancedID; + int32_t m_mapID; + const char* m_name; +}; + +struct SoundEntriesRec { + int32_t m_ID; + int32_t m_soundType; + const char* m_name; + const char* m_file[10]; + int32_t m_freq[10]; + const char* m_directoryBase; + float m_volumeFloat; + int32_t m_flags; + float m_minDistance; + float m_distanceCutoff; + int32_t m_eaxdef; + int32_t m_soundEntriesAdvancedID; +}; + +struct SoundEntriesAdvancedRec { + int32_t m_ID; + int32_t m_soundEntryID; + float m_innerRadius2d; + int32_t m_timeA; + int32_t m_timeB; + int32_t m_timeC; + int32_t m_timeD; + int32_t m_randomOffsetRange; + int32_t m_usage; + int32_t m_timeIntervalMin; + int32_t m_timeIntervalMax; + int32_t m_volumeSliderCategory; + float m_duckToSfx; + float m_duckToMusic; + float m_duckToAmbience; + float m_innerRadiusOfInfluence; + float m_outerRadiusOfInfluence; + int32_t m_timeToDuck; + int32_t m_timeToUnduck; + float m_insideAngle; + float m_outsideAngle; + float m_outsideVolume; + float m_outerRadius2d; + const char* m_name; +}; + +struct SoundFilterRec { + int32_t m_ID; + const char* m_name; +}; + +struct SoundFilterElemRec { + int32_t m_ID; + int32_t m_soundFilterID; + int32_t m_orderIndex; + int32_t m_filterType; + float m_params[9]; +}; + +struct SoundProviderPreferencesRec { + int32_t m_ID; + const char* m_description; + int32_t m_flags; + int32_t m_eaxenvironmentSelection; + float m_eaxdecayTime; + float m_eax2EnvironmentSize; + float m_eax2EnvironmentDiffusion; + int32_t m_eax2Room; + int32_t m_eax2RoomHf; + float m_eax2DecayHfratio; + int32_t m_eax2Reflections; + float m_eax2ReflectionsDelay; + int32_t m_eax2Reverb; + float m_eax2ReverbDelay; + float m_eax2RoomRolloff; + float m_eax2AirAbsorption; + int32_t m_eax3RoomLf; + float m_eax3DecayLfratio; + float m_eax3EchoTime; + float m_eax3EchoDepth; + float m_eax3ModulationTime; + float m_eax3ModulationDepth; + float m_eax3Hfreference; + float m_eax3Lfreference; +}; + +struct SoundSamplePreferencesRec { + int32_t m_ID; + int32_t m_field_0_6_0_3592_001; // unconfirmed + int32_t m_field_0_6_0_3592_002; // unconfirmed + int32_t m_eax2SampleRoom; + int32_t m_field_0_6_0_3592_004; // unconfirmed + int32_t m_field_0_6_0_3592_005; // unconfirmed + float m_field_0_6_0_3592_006; // unconfirmed + int32_t m_field_0_6_0_3592_007; // unconfirmed + float m_eax2SampleOcclusionLfratio; + float m_eax2SampleOcclusionRoomRatio; + int32_t m_field_0_6_0_3592_010; // unconfirmed + float m_eax1EffectLevel; + int32_t m_field_0_6_0_3592_012; // unconfirmed + float m_field_0_6_0_3592_013; // unconfirmed + float m_eax3SampleExclusion; + float m_field_0_6_0_3592_015; // unconfirmed + int32_t m_field_0_6_0_3592_016; // unconfirmed +}; + +struct SoundWaterTypeRec { + int32_t m_ID; + int32_t m_soundType; + int32_t m_soundSubtype; + int32_t m_soundID; +}; + +struct SpamMessagesRec { + int32_t m_ID; + const char* m_text; +}; + +struct SpellRec { + int32_t m_ID; + int32_t m_category; + int32_t m_dispelType; + int32_t m_mechanic; + int32_t m_attributes; + int32_t m_attributesEx; + int32_t m_attributesExB; + int32_t m_attributesExC; + int32_t m_attributesExD; + int32_t m_attributesExE; + int32_t m_attributesExF; + int32_t m_attributesExG; + int32_t m_shapeshiftMask[2]; + int32_t m_shapeshiftExclude[2]; + int32_t m_targets; + int32_t m_targetCreatureType; + int32_t m_requiresSpellFocus; + int32_t m_facingCasterFlags; + int32_t m_casterAuraState; + int32_t m_targetAuraState; + int32_t m_excludeCasterAuraState; + int32_t m_excludeTargetAuraState; + int32_t m_casterAuraSpell; + int32_t m_targetAuraSpell; + int32_t m_excludeCasterAuraSpell; + int32_t m_excludeTargetAuraSpell; + int32_t m_castingTimeIndex; + int32_t m_recoveryTime; + int32_t m_categoryRecoveryTime; + int32_t m_interruptFlags; + int32_t m_auraInterruptFlags; + int32_t m_channelInterruptFlags; + int32_t m_procTypeMask; + int32_t m_procChance; + int32_t m_procCharges; + int32_t m_maxLevel; + int32_t m_baseLevel; + int32_t m_spellLevel; + int32_t m_durationIndex; + int32_t m_powerType; + int32_t m_manaCost; + int32_t m_manaCostPerLevel; + int32_t m_manaPerSecond; + int32_t m_manaPerSecondPerLevel; + int32_t m_rangeIndex; + float m_speed; + int32_t m_modalNextSpell; + int32_t m_cumulativeAura; + int32_t m_totem[2]; + int32_t m_reagent[8]; + int32_t m_reagentCount[8]; + int32_t m_equippedItemClass; + int32_t m_equippedItemSubclass; + int32_t m_equippedItemInvTypes; + int32_t m_effect[3]; + int32_t m_effectDieSides[3]; + float m_effectRealPointsPerLevel[3]; + int32_t m_effectBasePoints[3]; + int32_t m_effectMechanic[3]; + int32_t m_implicitTargetA[3]; + int32_t m_implicitTargetB[3]; + int32_t m_effectRadiusIndex[3]; + int32_t m_effectAura[3]; + int32_t m_effectAuraPeriod[3]; + float m_effectAmplitude[3]; + int32_t m_effectChainTargets[3]; + int32_t m_effectItemType[3]; + int32_t m_effectMiscValue[3]; + int32_t m_effectMiscValueB[3]; + int32_t m_effectTriggerSpell[3]; + float m_effectPointsPerCombo[3]; + int32_t m_effectSpellClassMaskA[3]; + int32_t m_effectSpellClassMaskB[3]; + int32_t m_effectSpellClassMaskC[3]; + int32_t m_spellVisualID[2]; + int32_t m_spellIconID; + int32_t m_activeIconID; + int32_t m_spellPriority; + const char* m_name; + const char* m_nameSubtext; + const char* m_description; + const char* m_auraDescription; + int32_t m_manaCostPct; + int32_t m_startRecoveryCategory; + int32_t m_startRecoveryTime; + int32_t m_maxTargetLevel; + int32_t m_spellClassSet; + int32_t m_spellClassMask[3]; + int32_t m_maxTargets; + int32_t m_defenseType; + int32_t m_preventionType; + int32_t m_stanceBarOrder; + float m_effectChainAmplitude[3]; + int32_t m_minFactionID; + int32_t m_minReputation; + int32_t m_requiredAuraVision; + int32_t m_requiredTotemCategoryID[2]; + int32_t m_requiredAreasID; + int32_t m_schoolMask; + int32_t m_runeCostID; + int32_t m_spellMissileID; + int32_t m_powerDisplayID; + float m_effectBonusCoefficient[3]; + int32_t m_descriptionVariablesID; + int32_t m_difficulty; +}; + +struct SpellAuraOptionsRec { + int32_t m_ID; + int32_t m_cumulativeAura; + int32_t m_procChance; + int32_t m_procCharges; + int32_t m_procTypeMask; +}; + +struct SpellAuraRestrictionsRec { + int32_t m_ID; + int32_t m_casterAuraState; + int32_t m_targetAuraState; + int32_t m_excludeCasterAuraState; + int32_t m_excludeTargetAuraState; + int32_t m_casterAuraSpell; + int32_t m_targetAuraSpell; + int32_t m_excludeCasterAuraSpell; + int32_t m_excludeTargetAuraSpell; +}; + +struct SpellCastTimesRec { + int32_t m_ID; + int32_t m_base; + int32_t m_perLevel; + int32_t m_minimum; +}; + +struct SpellCastingRequirementsRec { + int32_t m_ID; + int32_t m_facingCasterFlags; + int32_t m_minFactionID; + int32_t m_minReputation; + int32_t m_requiredAreasID; + int32_t m_requiredAuraVision; + int32_t m_requiresSpellFocus; +}; + +struct SpellCategoriesRec { + int32_t m_ID; + int32_t m_category; + int32_t m_defenseType; + int32_t m_dispelType; + int32_t m_mechanic; + int32_t m_preventionType; + int32_t m_startRecoveryCategory; +}; + +struct SpellCategoryRec { + int32_t m_ID; + int32_t m_flags; +}; + +struct SpellChainEffectsRec { + int32_t m_ID; + float m_avgSegLen; + float m_width; + float m_noiseScale; + float m_texCoordScale; + int32_t m_segDuration; + int32_t m_segDelay; + const char* m_texture; + int32_t m_flags; + int32_t m_jointCount; + float m_jointOffsetRadius; + int32_t m_jointsPerMinorJoint; + int32_t m_minorJointsPerMajorJoint; + float m_minorJointScale; + float m_majorJointScale; + float m_jointMoveSpeed; + float m_jointSmoothness; + float m_minDurationBetweenJointJumps; + float m_maxDurationBetweenJointJumps; + float m_waveHeight; + float m_waveFreq; + float m_waveSpeed; + float m_minWaveAngle; + float m_maxWaveAngle; + float m_minWaveSpin; + float m_maxWaveSpin; + float m_arcHeight; + float m_minArcAngle; + float m_maxArcAngle; + float m_minArcSpin; + float m_maxArcSpin; + float m_delayBetweenEffects; + float m_minFlickerOnDuration; + float m_maxFlickerOnDuration; + float m_minFlickerOffDuration; + float m_maxFlickerOffDuration; + float m_pulseSpeed; + float m_pulseOnLength; + float m_pulseFadeLength; + int8_t m_alpha; + int8_t m_red; + int8_t m_green; + int8_t m_blue; + int8_t m_blendMode; + const char* m_combo; + int32_t m_renderLayer; + float m_textureLength; + float m_wavePhase; +}; + +struct SpellClassOptionsRec { + int32_t m_ID; + int32_t m_modalNextSpell; + int32_t m_spellClassMask[3]; + int32_t m_spellClassSet; +}; + +struct SpellCooldownsRec { + int32_t m_ID; + int32_t m_categoryRecoveryTime; + int32_t m_recoveryTime; + int32_t m_startRecoveryTime; +}; + +struct SpellDescriptionVariablesRec { + int32_t m_ID; + const char* m_variables; +}; + +struct SpellDifficultyRec { + int32_t m_ID; + int32_t m_difficultySpellID[4]; +}; + +struct SpellDispelTypeRec { + int32_t m_ID; + const char* m_name; + int32_t m_mask; + int32_t m_immunityPossible; + const char* m_internalName; +}; + +struct SpellDurationRec { + int32_t m_ID; + int32_t m_duration; + int32_t m_durationPerLevel; + int32_t m_maxDuration; +}; + +struct SpellEffectRec { + int32_t m_ID; + int32_t m_effect; + float m_effectAmplitude; + int32_t m_effectAura; + int32_t m_effectAuraPeriod; + int32_t m_effectBasePoints; + float m_effectBonusCoefficient; + float m_effectChainAmplitude; + int32_t m_effectChainTargets; + int32_t m_effectDieSides; + int32_t m_effectItemType; + int32_t m_effectMechanic; + int32_t m_effectMiscValue[2]; + float m_effectPointsPerResource; + int32_t m_effectRadiusIndex[2]; + float m_effectRealPointsPerLevel; + int32_t m_effectSpellClassMask[3]; + int32_t m_effectTriggerSpell; + int32_t m_implicitTarget[2]; + int32_t m_spellID; + int32_t m_effectIndex; +}; + +struct SpellEffectCameraShakesRec { + int32_t m_ID; + int32_t m_cameraShake[3]; +}; + +struct SpellEquippedItemsRec { + int32_t m_ID; + int32_t m_equippedItemClass; + int32_t m_equippedItemInvTypes; + int32_t m_equippedItemSubclass; +}; + +struct SpellFocusObjectRec { + int32_t m_ID; + const char* m_name; +}; + +struct SpellIconRec { + int32_t m_ID; + const char* m_textureFilename; +}; + +struct SpellInterruptsRec { + int32_t m_ID; + int32_t m_auraInterruptFlags[2]; + int32_t m_channelInterruptFlags[2]; + int32_t m_interruptFlags; +}; + +struct SpellItemEnchantmentRec { + int32_t m_ID; + int32_t m_charges; + int32_t m_effect[3]; + int32_t m_effectPointsMin[3]; + int32_t m_effectPointsMax[3]; + int32_t m_effectArg[3]; + const char* m_name; + int32_t m_itemVisual; + int32_t m_flags; + int32_t m_srcItemID; + int32_t m_conditionID; + int32_t m_requiredSkillID; + int32_t m_requiredSkillRank; + int32_t m_minLevel; +}; + +struct SpellItemEnchantmentConditionRec { + int32_t m_ID; + int8_t m_ltOperandType[5]; + int32_t m_ltOperand[5]; + int8_t m_operator[5]; + int8_t m_rtOperandType[5]; + int32_t m_rtOperand[5]; + int8_t m_logic[5]; +}; + +struct SpellLevelsRec { + int32_t m_ID; + int32_t m_baseLevel; + int32_t m_maxLevel; + int32_t m_spellLevel; +}; + +struct SpellMechanicRec { + int32_t m_ID; + const char* m_stateName; +}; + +struct SpellMissileRec { + int32_t m_ID; + int32_t m_flags; + float m_defaultPitchMin; + float m_defaultPitchMax; + float m_defaultSpeedMin; + float m_defaultSpeedMax; + float m_randomizeFacingMin; + float m_randomizeFacingMax; + float m_randomizePitchMin; + float m_randomizePitchMax; + float m_randomizeSpeedMin; + float m_randomizeSpeedMax; + float m_gravity; + float m_maxDuration; + float m_collisionRadius; +}; + +struct SpellMissileMotionRec { + int32_t m_ID; + const char* m_name; + const char* m_scriptBody; + int32_t m_flags; + int32_t m_missileCount; +}; + +struct SpellPowerRec { + int32_t m_ID; + int32_t m_manaCost; + int32_t m_manaCostPerLevel; + int32_t m_powerCost; // unconfirmed + int32_t m_manaPerSecond; + int32_t m_powerDisplayID; +}; + +struct SpellRadiusRec { + int32_t m_ID; + float m_radius; + float m_radiusPerLevel; + float m_radiusMax; +}; + +struct SpellRangeRec { + int32_t m_ID; + float m_rangeMin[2]; + float m_rangeMax[2]; + int32_t m_flags; + const char* m_displayName; + const char* m_displayNameShort; +}; + +struct SpellReagentsRec { + int32_t m_ID; + int32_t m_reagent[8]; + int32_t m_reagentCount[8]; +}; + +struct SpellRuneCostRec { + int32_t m_ID; + int32_t m_blood; + int32_t m_unholy; + int32_t m_frost; + int32_t m_runicPower; +}; + +struct SpellScalingRec { + int32_t m_ID; + int32_t m_castTimeMin; + int32_t m_castTimeMax; + int32_t m_castTimeMaxLevel; + int32_t m_class; + float m_coefficient[3]; + float m_variance[3]; + float m_comboPointsCoefficient[3]; + float m_nerfFactor; + int32_t m_nerfMaxLevel; +}; + +struct SpellShapeshiftRec { + int32_t m_ID; + int32_t m_shapeshiftExclude[2]; + int32_t m_shapeshiftMask[2]; + int32_t m_stanceBarOrder; +}; + +struct SpellShapeshiftFormRec { + int32_t m_ID; + int32_t m_bonusActionBar; + const char* m_name; + int32_t m_flags; + int32_t m_creatureType; + int32_t m_attackIconID; + int32_t m_combatRoundTime; + int32_t m_creatureDisplayID[4]; + int32_t m_presetSpellID[8]; +}; + +struct SpellTargetRestrictionsRec { + int32_t m_ID; + int32_t m_maxTargets; + int32_t m_maxTargetLevel; + int32_t m_targetCreatureType; + int32_t m_targets; +}; + +struct SpellTotemsRec { + int32_t m_ID; + int32_t m_requiredTotemCategoryID[2]; + int32_t m_totem[2]; +}; + +struct SpellVisualRec { + int32_t m_ID; + int32_t m_precastKit; + int32_t m_castKit; + int32_t m_impactKit; + int32_t m_stateKit; + int32_t m_stateDoneKit; + int32_t m_channelKit; + int32_t m_hasMissile; + int32_t m_missileModel; + int32_t m_missilePathType; + int32_t m_missileDestinationAttachment; + int32_t m_missileSound; + int32_t m_animEventSoundID; + int32_t m_flags; + int32_t m_casterImpactKit; + int32_t m_targetImpactKit; + int32_t m_missileAttachment; + int32_t m_missileFollowGroundHeight; + int32_t m_missileFollowGroundDropSpeed; + int32_t m_missileFollowGroundApproach; + int32_t m_missileFollowGroundFlags; + int32_t m_missileMotion; + int32_t m_missileTargetingKit; + int32_t m_instantAreaKit; + int32_t m_impactAreaKit; + int32_t m_persistentAreaKit; + float m_missileCastOffset[3]; + float m_missileImpactOffset[3]; +}; + +struct SpellVisualEffectNameRec { + int32_t m_ID; + const char* m_name; + const char* m_fileName; + float m_areaEffectSize; + float m_scale; + float m_minAllowedScale; + float m_maxAllowedScale; +}; + +struct SpellVisualKitRec { + int32_t m_ID; + int32_t m_startAnimID; + int32_t m_animID; + int32_t m_headEffect; + int32_t m_chestEffect; + int32_t m_baseEffect; + int32_t m_leftHandEffect; + int32_t m_rightHandEffect; + int32_t m_breathEffect; + int32_t m_leftWeaponEffect; + int32_t m_rightWeaponEffect; + int32_t m_specialEffect[3]; + int32_t m_worldEffect; + int32_t m_soundID; + int32_t m_shakeID; + int32_t m_charProc[4]; + float m_charParamZero[4]; + float m_charParamOne[4]; + float m_charParamTwo[4]; + float m_charParamThree[4]; + int32_t m_flags; +}; + +struct SpellVisualKitAreaModelRec { + int32_t m_ID; + const char* m_name; + int32_t m_enumID; +}; + +struct SpellVisualKitModelAttachRec { + int32_t m_ID; + int32_t m_parentSpellVisualKitID; + int32_t m_spellVisualEffectNameID; + int32_t m_attachmentID; + float m_offset[3]; + float m_yaw; + float m_pitch; + float m_roll; +}; + +struct SpellVisualPrecastTransitionsRec { + int32_t m_ID; + const char* m_precastLoadAnimName; + const char* m_precastHoldAnimName; +}; + +struct StableSlotPricesRec { + int32_t m_ID; + int32_t m_cost; +}; + +struct Startup_StringsRec { + int32_t m_ID; + const char* m_name; + const char* m_message; +}; + +struct StationeryRec { + int32_t m_ID; + int32_t m_itemID; + const char* m_texture; + int32_t m_flags; +}; + +struct StringLookupsRec { + int32_t m_ID; + const char* m_string; +}; + +struct SummonPropertiesRec { + int32_t m_ID; + int32_t m_control; + int32_t m_faction; + int32_t m_title; + int32_t m_slot; + int32_t m_flags; +}; + +struct TalentRec { + int32_t m_ID; + int32_t m_tabID; + int32_t m_tierID; + int32_t m_columnIndex; + int32_t m_spellRank[9]; + int32_t m_prereqTalent[3]; + int32_t m_prereqRank[3]; + int32_t m_flags; + int32_t m_requiredSpellID; + int32_t m_categoryMask[2]; +}; + +struct TalentTabRec { + int32_t m_ID; + const char* m_name; + int32_t m_spellIconID; + int32_t m_raceMask; + int32_t m_classMask; + int32_t m_categoryEnumID; // unconfirmed + int32_t m_orderIndex; + const char* m_backgroundFile; +}; + +struct TaxiNodesRec { + int32_t m_ID; + int32_t m_continentID; + float m_pos[3]; + const char* m_name; + int32_t m_mountCreatureID[2]; +}; + +struct TaxiPathRec { + int32_t m_ID; + int32_t m_fromTaxiNode; + int32_t m_toTaxiNode; + int32_t m_cost; +}; + +struct TaxiPathNodeRec { + int32_t m_ID; + int32_t m_pathID; + int32_t m_nodeIndex; + int32_t m_continentID; + float m_loc[3]; + int32_t m_flags; + int32_t m_delay; + int32_t m_arrivalEventID; + int32_t m_departureEventID; +}; + +struct TeamContributionPointsRec { + int32_t m_ID; + float m_data; +}; + +struct TerrainMaterialRec { + int32_t m_ID; + const char* m_name; + int32_t m_shader; + const char* m_envMapPath; +}; + +struct TerrainTypeRec { + int32_t m_terrainID; + const char* m_terrainDesc; + int32_t m_footstepSprayRun; + int32_t m_footstepSprayWalk; + int32_t m_soundID; + int32_t m_flags; + int32_t m_generatedID; +}; + +struct TerrainTypeSoundsRec { + int32_t m_ID; +}; + +struct TotemCategoryRec { + int32_t m_ID; + const char* m_name; + int32_t m_totemCategoryType; + int32_t m_totemCategoryMask; +}; + +struct TransportAnimationRec { + int32_t m_ID; + int32_t m_transportID; + int32_t m_timeIndex; + float m_pos[3]; + int32_t m_sequenceID; +}; + +struct TransportPhysicsRec { + int32_t m_ID; + float m_waveAmp; + float m_waveTimeScale; + float m_rollAmp; + float m_rollTimeScale; + float m_pitchAmp; + float m_pitchTimeScale; + float m_maxBank; + float m_maxBankTurnSpeed; + float m_speedDampThresh; + float m_speedDamp; +}; + +struct TransportRotationRec { + int32_t m_ID; + int32_t m_gameObjectsID; + int32_t m_timeIndex; + float m_rot[4]; +}; + +struct UISoundLookupsRec { + int32_t m_ID; + int32_t m_soundID; + const char* m_soundName; +}; + +struct UnitBloodRec { + int32_t m_ID; + int32_t m_combatBloodSpurtFront[2]; + int32_t m_combatBloodSpurtBack[2]; + const char* m_groundBlood[5]; +}; + +struct UnitBloodLevelsRec { + int32_t m_ID; + int32_t m_violencelevel[3]; +}; + +struct VehicleRec { + int32_t m_ID; + int32_t m_flags; + float m_turnSpeed; + float m_pitchSpeed; + float m_pitchMin; + float m_pitchMax; + int32_t m_seatID[8]; + float m_mouseLookOffsetPitch; + float m_cameraFadeDistScalarMin; + float m_cameraFadeDistScalarMax; + float m_cameraPitchOffset; + float m_facingLimitRight; + float m_facingLimitLeft; + float m_msslTrgtTurnLingering; + float m_msslTrgtPitchLingering; + float m_msslTrgtMouseLingering; + float m_msslTrgtEndOpacity; + float m_msslTrgtArcSpeed; + float m_msslTrgtArcRepeat; + float m_msslTrgtArcWidth; + float m_msslTrgtImpactRadius[2]; + const char* m_msslTrgtArcTexture; + const char* m_msslTrgtImpactTexture; + const char* m_msslTrgtImpactModel[2]; + float m_cameraYawOffset; + int32_t m_uiLocomotionType; + float m_msslTrgtImpactTexRadius; + int32_t m_vehicleUiindicatorID; + int32_t m_powerDisplayID[3]; +}; + +struct VehicleSeatRec { + int32_t m_ID; + float m_field_3_3_5_12213_001; // unconfirmed + int32_t m_attachmentID; + float m_attachmentOffset[3]; + float m_field_3_3_5_12213_004; // unconfirmed + float m_enterSpeed; + float m_enterGravity; + float m_enterMinDuration; + float m_enterMaxDuration; + float m_enterMinArcHeight; + float m_enterMaxArcHeight; + int32_t m_enterAnimStart; + int32_t m_enterAnimLoop; + int32_t m_rideAnimStart; + int32_t m_rideAnimLoop; + int32_t m_rideUpperAnimStart; + int32_t m_rideUpperAnimLoop; + float m_field_3_3_5_12213_017; // unconfirmed + float m_exitSpeed; + float m_exitGravity; + float m_exitMinDuration; + float m_exitMaxDuration; + float m_exitMinArcHeight; + float m_exitMaxArcHeight; + int32_t m_exitAnimStart; + int32_t m_exitAnimLoop; + int32_t m_exitAnimEnd; + float m_field_3_3_5_12213_027; // unconfirmed + float m_passengerPitch; + float m_field_3_3_5_12213_029; // unconfirmed + int32_t m_passengerAttachmentID; + int32_t m_vehicleEnterAnim; + int32_t m_vehicleExitAnim; + int32_t m_vehicleRideAnimLoop; + int32_t m_field_3_3_5_12213_034; // unconfirmed + int32_t m_vehicleExitAnimBone; + int32_t m_vehicleEnterAnimBone; + float m_field_3_3_5_12213_037; // unconfirmed + float m_field_3_3_5_12213_038; // unconfirmed + int32_t m_vehicleAbilityDisplay; + int32_t m_enterUisoundID; + int32_t m_field_3_3_5_12213_041; // unconfirmed + int32_t m_uiSkin; + float m_field_3_3_5_12213_043; // unconfirmed + float m_field_3_3_5_12213_044; // unconfirmed + float m_field_3_3_5_12213_045; // unconfirmed + int32_t m_field_3_3_5_12213_046; // unconfirmed + float m_field_3_3_5_12213_047; // unconfirmed + float m_field_3_3_5_12213_048; // unconfirmed + float m_field_3_3_5_12213_049; // unconfirmed + float m_field_3_3_5_12213_050; // unconfirmed + float m_field_3_3_5_12213_051; // unconfirmed + float m_field_3_3_5_12213_052; // unconfirmed + float m_field_3_3_5_12213_053; // unconfirmed + float m_field_3_3_5_12213_054; // unconfirmed + float m_field_3_3_5_12213_055; // unconfirmed +}; + +struct VehicleUIIndSeatRec { + int32_t m_ID; + int32_t m_vehicleUiindicatorID; + int32_t m_virtualSeatIndex; + float m_xpos; + float m_ypos; +}; + +struct VehicleUIIndicatorRec { + int32_t m_ID; + const char* m_backgroundTexture; +}; + +struct VideoHardwareRec { + int32_t m_ID; + int32_t m_vendorID; + int32_t m_deviceID; + int32_t m_farclipIdx; + int32_t m_terrainLoddistIdx; + int32_t m_terrainShadowLod; + int32_t m_detailDoodadDensityIdx; + int32_t m_detailDoodadAlpha; + int32_t m_animatingDoodadIdx; + int32_t m_trilinear; + int32_t m_numLights; + int32_t m_specularity; + int32_t m_waterLodidx; + int32_t m_particleDensityIdx; + int32_t m_unitDrawDistIdx; + int32_t m_smallCullDistIdx; + int32_t m_resolutionIdx; + int32_t m_baseMipLevel; + const char* m_oglOverrides; + const char* m_d3DOverrides; + int32_t m_fixLag; + int32_t m_multisample; + int32_t m_atlasdisable; +}; + +struct VocalUISoundsRec { + int32_t m_ID; + int32_t m_vocalUienum; + int32_t m_raceID; + int32_t m_normalSoundID[2]; + int32_t m_pissedSoundID[2]; +}; + +struct WMOAreaTableRec { + int32_t m_ID; + int32_t m_wmoid; + int32_t m_nameSetID; + int32_t m_wmogroupID; + int32_t m_soundProviderPref; + int32_t m_soundProviderPrefUnderwater; + int32_t m_ambienceID; + int32_t m_zoneMusic; + int32_t m_introSound; + int32_t m_flags; + int32_t m_areaTableID; + const char* m_areaName; +}; + +struct WeaponImpactSoundsRec { + int32_t m_ID; + int32_t m_weaponSubClassID; + int32_t m_parrySoundType; + int32_t m_impactSoundID[10]; + int32_t m_critImpactSoundID[10]; +}; + +struct WeaponSwingSounds2Rec { + int32_t m_ID; + int32_t m_swingType; + int32_t m_crit; + int32_t m_soundID; +}; + +struct WeatherRec { + int32_t m_ID; + int32_t m_ambienceID; + int32_t m_effectType; + float m_transitionSkyBox; + float m_effectColor[3]; + const char* m_effectTexture; +}; + +struct WorldChunkSoundsRec { + int32_t m_ID; + int32_t m_chunkX; + int32_t m_chunkY; + int32_t m_subchunkX; + int32_t m_subchunkY; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; +}; + +struct WorldMapAreaRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + const char* m_areaName; + float m_locLeft; + float m_locRight; + float m_locTop; + float m_locBottom; + int32_t m_displayMapID; + int32_t m_defaultDungeonFloor; + int32_t m_parentWorldMapID; +}; + +struct WorldMapContinentRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_leftBoundary; + int32_t m_rightBoundary; + int32_t m_topBoundary; + int32_t m_bottomBoundary; + float m_continentOffset[2]; + float m_scale; + float m_taxiMin[2]; + float m_taxiMax[2]; + int32_t m_worldMapID; +}; + +struct WorldMapOverlayRec { + int32_t m_ID; + int32_t m_mapAreaID; + int32_t m_areaID[4]; + int32_t m_mapPointX; + int32_t m_mapPointY; + const char* m_textureName; + int32_t m_textureWidth; + int32_t m_textureHeight; + int32_t m_offsetX; + int32_t m_offsetY; + int32_t m_hitRectTop; + int32_t m_hitRectLeft; + int32_t m_hitRectBottom; + int32_t m_hitRectRight; +}; + +struct WorldMapTransformsRec { + int32_t m_ID; + int32_t m_mapID; + float m_regionMin[2]; + float m_regionMax[2]; + int32_t m_newMapID; + float m_regionOffset[2]; + int32_t m_newDungeonMapID; +}; + +struct WorldSafeLocsRec { + int32_t m_ID; + int32_t m_continent; + float m_loc[3]; + const char* m_areaName; +}; + +struct WorldStateUIRec { + int32_t m_ID; + int32_t m_mapID; + int32_t m_areaID; + int32_t m_phaseShift; + const char* m_icon; + const char* m_string; + const char* m_tooltip; + int32_t m_stateVariable; + int32_t m_type; + const char* m_dynamicIcon; + const char* m_dynamicTooltip; + const char* m_extendedUi; + int32_t m_extendedUistateVariable[3]; +}; + +struct WorldStateZoneSoundsRec { + int32_t m_worldStateID; + int32_t m_worldStateValue; + int32_t m_areaID; + int32_t m_wmoareaID; + int32_t m_zoneIntroMusicID; + int32_t m_zoneMusicID; + int32_t m_soundAmbienceID; + int32_t m_soundProviderPreferencesID; + int32_t m_generatedID; +}; + +struct WowError_StringsRec { + int32_t m_ID; + const char* m_name; // unconfirmed + const char* m_description; +}; + +struct ZoneIntroMusicTableRec { + int32_t m_ID; + const char* m_name; + int32_t m_soundID; + int32_t m_priority; + int32_t m_minDelayMinutes; +}; + +struct ZoneLightRec { + int32_t m_ID; + const char* m_name; + int32_t m_mapID; + int32_t m_lightID; +}; + +struct ZoneLightPointRec { + int32_t m_ID; + int32_t m_zoneLightID; + float m_pos[2]; + int32_t m_pointOrder; +}; + +struct ZoneMusicRec { + int32_t m_ID; + const char* m_setName; + int32_t m_silenceIntervalMin[2]; + int32_t m_silenceIntervalMax[2]; + int32_t m_sounds[2]; +}; + +struct gtBarberShopCostBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToMeleeCritRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToMeleeCritBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToSpellCritRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtChanceToSpellCritBaseRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtCombatRatingsRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtNPCManaCostScalerRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtOCTClassCombatRatingScalarRec { + int32_t m_ID; + float m_data; +}; + +struct gtOCTRegenHPRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtOCTRegenMPRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtRegenHPPerSptRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtRegenMPPerSptRec { + float m_data; + int32_t m_generatedID; +}; + +struct gtSpellScalingRec { + int32_t m_ID; + float m_data; +}; + + +DB_CLIENT_DB(AchievementRec); +DB_CLIENT_DB(Achievement_CategoryRec); +DB_CLIENT_DB(Achievement_CriteriaRec); +DB_CLIENT_DB(AnimKitRec); +DB_CLIENT_DB(AnimKitBoneSetRec); +DB_CLIENT_DB(AnimKitBoneSetAliasRec); +DB_CLIENT_DB(AnimKitConfigRec); +DB_CLIENT_DB(AnimKitConfigBoneSetRec); +DB_CLIENT_DB(AnimKitPriorityRec); +DB_CLIENT_DB(AnimKitSegmentRec); +DB_CLIENT_DB(AnimReplacementRec); +DB_CLIENT_DB(AnimReplacementSetRec); +DB_CLIENT_DB(AnimationDataRec); +DB_CLIENT_DB(AreaAssignmentRec); +DB_CLIENT_DB(AreaGroupRec); +DB_CLIENT_DB(AreaPOIRec); +DB_CLIENT_DB(AreaTableRec); +DB_CLIENT_DB(AreaTriggerRec); +DB_CLIENT_DB(ArmorLocationRec); +DB_CLIENT_DB(AttackAnimKitsRec); +DB_CLIENT_DB(AttackAnimTypesRec); +DB_CLIENT_DB(AuctionHouseRec); +DB_CLIENT_DB(BankBagSlotPricesRec); +DB_CLIENT_DB(BannedAddonsRec); +DB_CLIENT_DB(BarberShopStyleRec); +DB_CLIENT_DB(BattlemasterListRec); +DB_CLIENT_DB(CameraModeRec); +DB_CLIENT_DB(CameraShakesRec); +DB_CLIENT_DB(Cfg_CategoriesRec); +DB_CLIENT_DB(Cfg_ConfigsRec); +DB_CLIENT_DB(CharBaseInfoRec); +DB_CLIENT_DB(CharHairGeosetsRec); +DB_CLIENT_DB(CharHairTexturesRec); +DB_CLIENT_DB(CharSectionsRec); +DB_CLIENT_DB(CharStartOutfitRec); +DB_CLIENT_DB(CharTitlesRec); +DB_CLIENT_DB(CharVariationsRec); +DB_CLIENT_DB(CharacterFacialHairStylesRec); +DB_CLIENT_DB(ChatChannelsRec); +DB_CLIENT_DB(ChatProfanityRec); +DB_CLIENT_DB(ChrClassesRec); +DB_CLIENT_DB(ChrRacesRec); +DB_CLIENT_DB(CinematicCameraRec); +DB_CLIENT_DB(CinematicSequencesRec); +DB_CLIENT_DB(CreatureDisplayInfoRec); +DB_CLIENT_DB(CreatureDisplayInfoExtraRec); +DB_CLIENT_DB(CreatureFamilyRec); +DB_CLIENT_DB(CreatureModelDataRec); +DB_CLIENT_DB(CreatureMovementInfoRec); +DB_CLIENT_DB(CreatureSoundDataRec); +DB_CLIENT_DB(CreatureSpellDataRec); +DB_CLIENT_DB(CreatureTypeRec); +DB_CLIENT_DB(CurrencyCategoryRec); +DB_CLIENT_DB(CurrencyTypesRec); +DB_CLIENT_DB(DanceMovesRec); +DB_CLIENT_DB(DeathThudLookupsRec); +DB_CLIENT_DB(DeclinedWordRec); +DB_CLIENT_DB(DeclinedWordCasesRec); +DB_CLIENT_DB(DestructibleModelDataRec); +DB_CLIENT_DB(DungeonEncounterRec); +DB_CLIENT_DB(DungeonMapRec); +DB_CLIENT_DB(DungeonMapChunkRec); +DB_CLIENT_DB(DurabilityCostsRec); +DB_CLIENT_DB(DurabilityQualityRec); +DB_CLIENT_DB(EmotesRec); +DB_CLIENT_DB(EmotesTextRec); +DB_CLIENT_DB(EmotesTextDataRec); +DB_CLIENT_DB(EmotesTextSoundRec); +DB_CLIENT_DB(EnvironmentalDamageRec); +DB_CLIENT_DB(ExhaustionRec); +DB_CLIENT_DB(FactionRec); +DB_CLIENT_DB(FactionGroupRec); +DB_CLIENT_DB(FactionTemplateRec); +DB_CLIENT_DB(FileDataRec); +DB_CLIENT_DB(FootprintTexturesRec); +DB_CLIENT_DB(FootstepTerrainLookupRec); +DB_CLIENT_DB(GMSurveyAnswersRec); +DB_CLIENT_DB(GMSurveyCurrentSurveyRec); +DB_CLIENT_DB(GMSurveyQuestionsRec); +DB_CLIENT_DB(GMSurveySurveysRec); +DB_CLIENT_DB(GMTicketCategoryRec); +DB_CLIENT_DB(GameObjectArtKitRec); +DB_CLIENT_DB(GameObjectDisplayInfoRec); +DB_CLIENT_DB(GameTablesRec); +DB_CLIENT_DB(GameTipsRec); +DB_CLIENT_DB(GemPropertiesRec); +DB_CLIENT_DB(GlueScreenEmoteRec); +DB_CLIENT_DB(GlyphPropertiesRec); +DB_CLIENT_DB(GlyphSlotRec); +DB_CLIENT_DB(GroundEffectDoodadRec); +DB_CLIENT_DB(GroundEffectTextureRec); +DB_CLIENT_DB(GuildPerkSpellsRec); +DB_CLIENT_DB(HelmetGeosetVisDataRec); +DB_CLIENT_DB(HolidayDescriptionsRec); +DB_CLIENT_DB(HolidayNamesRec); +DB_CLIENT_DB(HolidaysRec); +DB_CLIENT_DB(ItemRec); +DB_CLIENT_DB(ItemArmorQualityRec); +DB_CLIENT_DB(ItemArmorShieldRec); +DB_CLIENT_DB(ItemArmorTotalRec); +DB_CLIENT_DB(ItemBagFamilyRec); +DB_CLIENT_DB(ItemClassRec); +DB_CLIENT_DB(ItemCondExtCostsRec); +DB_CLIENT_DB(ItemDamageAmmoRec); +DB_CLIENT_DB(ItemDamageOneHandRec); +DB_CLIENT_DB(ItemDamageOneHandCasterRec); +DB_CLIENT_DB(ItemDamageRangedRec); +DB_CLIENT_DB(ItemDamageThrownRec); +DB_CLIENT_DB(ItemDamageTwoHandRec); +DB_CLIENT_DB(ItemDamageTwoHandCasterRec); +DB_CLIENT_DB(ItemDamageWandRec); +DB_CLIENT_DB(ItemDisplayInfoRec); +DB_CLIENT_DB(ItemExtendedCostRec); +DB_CLIENT_DB(ItemGroupSoundsRec); +DB_CLIENT_DB(ItemLimitCategoryRec); +DB_CLIENT_DB(ItemPetFoodRec); +DB_CLIENT_DB(ItemPurchaseGroupRec); +DB_CLIENT_DB(ItemRandomPropertiesRec); +DB_CLIENT_DB(ItemRandomSuffixRec); +DB_CLIENT_DB(ItemReforgeRec); +DB_CLIENT_DB(ItemSetRec); +DB_CLIENT_DB(ItemSubClassRec); +DB_CLIENT_DB(ItemSubClassMaskRec); +DB_CLIENT_DB(ItemVisualEffectsRec); +DB_CLIENT_DB(ItemVisualsRec); +DB_CLIENT_DB(LFGDungeonExpansionRec); +DB_CLIENT_DB(LFGDungeonGroupRec); +DB_CLIENT_DB(LFGDungeonsRec); +DB_CLIENT_DB(LanguageWordsRec); +DB_CLIENT_DB(LanguagesRec); +DB_CLIENT_DB(LightRec); +DB_CLIENT_DB(LightFloatBandRec); +DB_CLIENT_DB(LightIntBandRec); +DB_CLIENT_DB(LightParamsRec); +DB_CLIENT_DB(LightSkyboxRec); +DB_CLIENT_DB(LiquidMaterialRec); +DB_CLIENT_DB(LiquidObjectRec); +DB_CLIENT_DB(LiquidTypeRec); +DB_CLIENT_DB(LoadingScreenTaxiSplinesRec); +DB_CLIENT_DB(LoadingScreensRec); +DB_CLIENT_DB(LockRec); +DB_CLIENT_DB(LockTypeRec); +DB_CLIENT_DB(MailTemplateRec); +DB_CLIENT_DB(MapRec); +DB_CLIENT_DB(MapDifficultyRec); +DB_CLIENT_DB(MaterialRec); +DB_CLIENT_DB(MountTypeRec); +DB_CLIENT_DB(MovieRec); +DB_CLIENT_DB(MovieFileDataRec); +DB_CLIENT_DB(MovieVariationRec); +DB_CLIENT_DB(NPCSoundsRec); +DB_CLIENT_DB(NameGenRec); +DB_CLIENT_DB(NamesProfanityRec); +DB_CLIENT_DB(NamesReservedRec); +DB_CLIENT_DB(ObjectEffectRec); +DB_CLIENT_DB(ObjectEffectGroupRec); +DB_CLIENT_DB(ObjectEffectModifierRec); +DB_CLIENT_DB(ObjectEffectPackageRec); +DB_CLIENT_DB(ObjectEffectPackageElemRec); +DB_CLIENT_DB(OverrideSpellDataRec); +DB_CLIENT_DB(PVPDifficultyRec); +DB_CLIENT_DB(PackageRec); +DB_CLIENT_DB(PageTextMaterialRec); +DB_CLIENT_DB(PaperDollItemFrameRec); +DB_CLIENT_DB(ParticleColorRec); +DB_CLIENT_DB(PetPersonalityRec); +DB_CLIENT_DB(PetitionTypeRec); +DB_CLIENT_DB(PhaseRec); +DB_CLIENT_DB(PhaseShiftZoneSoundsRec); +DB_CLIENT_DB(PhaseXPhaseGroupRec); +DB_CLIENT_DB(PowerDisplayRec); +DB_CLIENT_DB(QuestFactionRewardRec); +DB_CLIENT_DB(QuestInfoRec); +DB_CLIENT_DB(QuestSortRec); +DB_CLIENT_DB(QuestXPRec); +DB_CLIENT_DB(RandPropPointsRec); +DB_CLIENT_DB(ResearchBranchRec); +DB_CLIENT_DB(ResistancesRec); +DB_CLIENT_DB(ScalingStatDistributionRec); +DB_CLIENT_DB(ScalingStatValuesRec); +DB_CLIENT_DB(ScreenEffectRec); +DB_CLIENT_DB(ServerMessagesRec); +DB_CLIENT_DB(SheatheSoundLookupsRec); +DB_CLIENT_DB(SkillCostsDataRec); +DB_CLIENT_DB(SkillLineRec); +DB_CLIENT_DB(SkillLineAbilityRec); +DB_CLIENT_DB(SkillLineCategoryRec); +DB_CLIENT_DB(SkillRaceClassInfoRec); +DB_CLIENT_DB(SkillTiersRec); +DB_CLIENT_DB(SoundAmbienceRec); +DB_CLIENT_DB(SoundEmittersRec); +DB_CLIENT_DB(SoundEntriesRec); +DB_CLIENT_DB(SoundEntriesAdvancedRec); +DB_CLIENT_DB(SoundFilterRec); +DB_CLIENT_DB(SoundFilterElemRec); +DB_CLIENT_DB(SoundProviderPreferencesRec); +DB_CLIENT_DB(SoundSamplePreferencesRec); +DB_CLIENT_DB(SoundWaterTypeRec); +DB_CLIENT_DB(SpamMessagesRec); +DB_CLIENT_DB(SpellRec); +DB_CLIENT_DB(SpellAuraOptionsRec); +DB_CLIENT_DB(SpellAuraRestrictionsRec); +DB_CLIENT_DB(SpellCastTimesRec); +DB_CLIENT_DB(SpellCastingRequirementsRec); +DB_CLIENT_DB(SpellCategoriesRec); +DB_CLIENT_DB(SpellCategoryRec); +DB_CLIENT_DB(SpellChainEffectsRec); +DB_CLIENT_DB(SpellClassOptionsRec); +DB_CLIENT_DB(SpellCooldownsRec); +DB_CLIENT_DB(SpellDescriptionVariablesRec); +DB_CLIENT_DB(SpellDifficultyRec); +DB_CLIENT_DB(SpellDispelTypeRec); +DB_CLIENT_DB(SpellDurationRec); +DB_CLIENT_DB(SpellEffectRec); +DB_CLIENT_DB(SpellEffectCameraShakesRec); +DB_CLIENT_DB(SpellEquippedItemsRec); +DB_CLIENT_DB(SpellFocusObjectRec); +DB_CLIENT_DB(SpellIconRec); +DB_CLIENT_DB(SpellInterruptsRec); +DB_CLIENT_DB(SpellItemEnchantmentRec); +DB_CLIENT_DB(SpellItemEnchantmentConditionRec); +DB_CLIENT_DB(SpellLevelsRec); +DB_CLIENT_DB(SpellMechanicRec); +DB_CLIENT_DB(SpellMissileRec); +DB_CLIENT_DB(SpellMissileMotionRec); +DB_CLIENT_DB(SpellPowerRec); +DB_CLIENT_DB(SpellRadiusRec); +DB_CLIENT_DB(SpellRangeRec); +DB_CLIENT_DB(SpellReagentsRec); +DB_CLIENT_DB(SpellRuneCostRec); +DB_CLIENT_DB(SpellScalingRec); +DB_CLIENT_DB(SpellShapeshiftRec); +DB_CLIENT_DB(SpellShapeshiftFormRec); +DB_CLIENT_DB(SpellTargetRestrictionsRec); +DB_CLIENT_DB(SpellTotemsRec); +DB_CLIENT_DB(SpellVisualRec); +DB_CLIENT_DB(SpellVisualEffectNameRec); +DB_CLIENT_DB(SpellVisualKitRec); +DB_CLIENT_DB(SpellVisualKitAreaModelRec); +DB_CLIENT_DB(SpellVisualKitModelAttachRec); +DB_CLIENT_DB(SpellVisualPrecastTransitionsRec); +DB_CLIENT_DB(StableSlotPricesRec); +DB_CLIENT_DB(Startup_StringsRec); +DB_CLIENT_DB(StationeryRec); +DB_CLIENT_DB(StringLookupsRec); +DB_CLIENT_DB(SummonPropertiesRec); +DB_CLIENT_DB(TalentRec); +DB_CLIENT_DB(TalentTabRec); +DB_CLIENT_DB(TaxiNodesRec); +DB_CLIENT_DB(TaxiPathRec); +DB_CLIENT_DB(TaxiPathNodeRec); +DB_CLIENT_DB(TeamContributionPointsRec); +DB_CLIENT_DB(TerrainMaterialRec); +DB_CLIENT_DB(TerrainTypeRec); +DB_CLIENT_DB(TerrainTypeSoundsRec); +DB_CLIENT_DB(TotemCategoryRec); +DB_CLIENT_DB(TransportAnimationRec); +DB_CLIENT_DB(TransportPhysicsRec); +DB_CLIENT_DB(TransportRotationRec); +DB_CLIENT_DB(UISoundLookupsRec); +DB_CLIENT_DB(UnitBloodRec); +DB_CLIENT_DB(UnitBloodLevelsRec); +DB_CLIENT_DB(VehicleRec); +DB_CLIENT_DB(VehicleSeatRec); +DB_CLIENT_DB(VehicleUIIndSeatRec); +DB_CLIENT_DB(VehicleUIIndicatorRec); +DB_CLIENT_DB(VideoHardwareRec); +DB_CLIENT_DB(VocalUISoundsRec); +DB_CLIENT_DB(WMOAreaTableRec); +DB_CLIENT_DB(WeaponImpactSoundsRec); +DB_CLIENT_DB(WeaponSwingSounds2Rec); +DB_CLIENT_DB(WeatherRec); +DB_CLIENT_DB(WorldChunkSoundsRec); +DB_CLIENT_DB(WorldMapAreaRec); +DB_CLIENT_DB(WorldMapContinentRec); +DB_CLIENT_DB(WorldMapOverlayRec); +DB_CLIENT_DB(WorldMapTransformsRec); +DB_CLIENT_DB(WorldSafeLocsRec); +DB_CLIENT_DB(WorldStateUIRec); +DB_CLIENT_DB(WorldStateZoneSoundsRec); +DB_CLIENT_DB(WowError_StringsRec); +DB_CLIENT_DB(ZoneIntroMusicTableRec); +DB_CLIENT_DB(ZoneLightRec); +DB_CLIENT_DB(ZoneLightPointRec); +DB_CLIENT_DB(ZoneMusicRec); +DB_CLIENT_DB(gtBarberShopCostBaseRec); +DB_CLIENT_DB(gtChanceToMeleeCritRec); +DB_CLIENT_DB(gtChanceToMeleeCritBaseRec); +DB_CLIENT_DB(gtChanceToSpellCritRec); +DB_CLIENT_DB(gtChanceToSpellCritBaseRec); +DB_CLIENT_DB(gtCombatRatingsRec); +DB_CLIENT_DB(gtNPCManaCostScalerRec); +DB_CLIENT_DB(gtOCTClassCombatRatingScalarRec); +DB_CLIENT_DB(gtOCTRegenHPRec); +DB_CLIENT_DB(gtOCTRegenMPRec); +DB_CLIENT_DB(gtRegenHPPerSptRec); +DB_CLIENT_DB(gtRegenMPPerSptRec); +DB_CLIENT_DB(gtSpellScalingRec); + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/gx/format.h b/profile/3.3.5a-windows-386/include/gx/format.h index d62d332..4b81eca 100644 --- a/profile/3.3.5a-windows-386/include/gx/format.h +++ b/profile/3.3.5a-windows-386/include/gx/format.h @@ -33,7 +33,7 @@ struct CGxFormat { C2iVector size; uint32_t unk1C; uint32_t sampleCount; - float float24; + float float24; // multisampleQuality? write at 00769693 CGxFormat__Format colorFormat; uint32_t refreshRate; uint32_t vsync; diff --git a/profile/3.3.5a-windows-386/include/main.h b/profile/3.3.5a-windows-386/include/main.h index 79102c9..96f04cd 100644 --- a/profile/3.3.5a-windows-386/include/main.h +++ b/profile/3.3.5a-windows-386/include/main.h @@ -13,6 +13,11 @@ #include "async/object.h" #include "async/queue.h" +#include "bc/file/filesystem.h" +#include "bc/file/stream.h" +#include "bc/systemfile/stacked.h" +#include "bc/osfile.h" + #include "camera/camera.h" #include "cmd/option.h" @@ -25,6 +30,11 @@ #include "common/refcount.h" #include "common/rcstring.h" +#include "console/command.h" +#include "console/line.h" +#include "console/var.h" +#include "console/types.h" + #include "cursor/types.h" #include "event/types.h" @@ -76,6 +86,7 @@ #include "storm/queue.h" #include "storm/region.h" #include "storm/thread.h" +#include "storm/log.h" #include "tempest/box.h" #include "tempest/matrix.h" @@ -86,6 +97,8 @@ #include "tempest/sphere.h" #include "tempest/vector.h" +#include "text/font.h" + #include "texture/blp.h" #include "texture/texture.h" #include "texture/tga.h" diff --git a/profile/3.3.5a-windows-386/include/storm/log.h b/profile/3.3.5a-windows-386/include/storm/log.h new file mode 100644 index 0000000..258202c --- /dev/null +++ b/profile/3.3.5a-windows-386/include/storm/log.h @@ -0,0 +1,8 @@ +#ifndef STORM_LOG_H +#define STORM_LOG_H + +#include "common/handle.h" + +DECLARE_HANDLE(HSLOG); + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/include/text/font.h b/profile/3.3.5a-windows-386/include/text/font.h new file mode 100644 index 0000000..bed1f9b --- /dev/null +++ b/profile/3.3.5a-windows-386/include/text/font.h @@ -0,0 +1,10 @@ +#ifndef TEXT_TYPES_H +#define TEXT_TYPES_H + +#include "common/handle.h" + +DECLARE_HANDLE(HTEXTBLOCK); +DECLARE_HANDLE(HTEXTFONT); +DECLARE_HANDLE(HFACE); + +#endif \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/backdropgenerator/func.sym b/profile/3.3.5a-windows-386/symbol/backdropgenerator/func.sym new file mode 100644 index 0000000..e5617c8 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/backdropgenerator/func.sym @@ -0,0 +1,5 @@ +CBackdropGenerator__SetBorderVertexColor 004A2630 f end=004A26C1 type="void __thiscall func(CBackdropGenerator* this, CImVector* borderColor)" +CBackdropGenerator__LoadXML 004A2780 f end=004A29CB ; _CBackdropGenerator::LoadXML(linkObject*, CStatus*) +CBackdropGenerator__Generate 004A29D0 f end=004A2D34 type="void __thiscall func(CBackdropGenerator* this, CRect*)" +CBackdropGenerator__CBackdropGenerator 004A2D40 f end=004A2DF9 type="void __thiscall func(CBackdropGenerator* this)" +CBackdropGenerator__SetOutput 004A2E00 f end=004A36EE type="void __thiscall func(CBackdropGenerator* this, CSimpleFrame* a1)" diff --git a/profile/3.3.5a-windows-386/symbol/bc/func.sym b/profile/3.3.5a-windows-386/symbol/bc/func.sym new file mode 100644 index 0000000..0cb98f9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/bc/func.sym @@ -0,0 +1,14 @@ +Blizzard__File__Open 00427600 f end=0042765E +Blizzard__File__Read 004276C0 f end=0042771F +Blizzard__File__Write 004279B0 f end=00427A12 +Blizzard__File__Close 004270F0 f end=0042712f +Blizzard__File__Delete 00427130 f end=0042716F ; Blizzard::File::Delete(char const*) +Blizzard__File__MakeAbsolutePath 00427500 f end=00427551 ; Blizzard::File::MakeAbsolutePath(char const*, char*, int, bool) +Blizzard__File__Move 00427560 f end=004275A8 ; Blizzard::File::Move(char const*, char const*) +System_File__Stacked__file_init 0042D440 f end=0042D4F4 type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" +OsCloseFile 00461B00 f end=00461B09 +OsReadFile 00461B50 f end=00461B88 +OsGetFileSize 00461BD0 f end=00461BF4 +OsSetCurrentDirectory 00461DB0 f end=00461DD7 +OsCreateFile 00461FA0 f end=00461FFA +OsCreateDirectory 00461D10 f end=00461D3F \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/bc/label.sym b/profile/3.3.5a-windows-386/symbol/bc/label.sym new file mode 100644 index 0000000..7926e40 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/bc/label.sym @@ -0,0 +1 @@ +System_File__Stacked__s_manager 00AB90AC l type="Blizzard__File__Filesystem*" diff --git a/profile/3.3.5a-windows-386/symbol/client/func.sym b/profile/3.3.5a-windows-386/symbol/client/func.sym index a3e258f..2d19edc 100644 --- a/profile/3.3.5a-windows-386/symbol/client/func.sym +++ b/profile/3.3.5a-windows-386/symbol/client/func.sym @@ -1,4 +1,4 @@ -operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" +operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" operator_delete_array 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) SetPaths 00402B20 f end=00402B8B CommonMain 00406C70 f end=00406D64 diff --git a/profile/3.3.5a-windows-386/symbol/console/func.sym b/profile/3.3.5a-windows-386/symbol/console/func.sym index 7e1ca32..1ec4eb7 100644 --- a/profile/3.3.5a-windows-386/symbol/console/func.sym +++ b/profile/3.3.5a-windows-386/symbol/console/func.sym @@ -1,42 +1,55 @@ -SetInputString 00763730 f end=007637CD ; UC -ReserveInputSpace 007637D0 f end=0076382B -ResetHighlight 00763830 f end=00763855 -UpdateHighlight 00763860 f end=00763996 -OnMouseUp 007639A0 f end=007639CF -OnMouseMove 007639D0 f end=00763A54 -MakeCommandCurrent 00763A60 f end=00763AAA -ConsoleCommandHistoryPrev 00763B40 f end=00763B83 ; UC -ConsoleCommandHistoryNext 00763B90 f end=00763BD6 ; UC -OnKeyUp 00763BE0 f end=00763C0A -ConsolePostClose 00763C50 f end=00763C5D -EventCloseCallback 00763D60 f end=00763D71 -DrawBackground 00763DF0 f end=00764039 -DrawHighLight 00764040 f end=00764196 -DrawCaret 007641A0 f end=007643EA -PaintBackground 007643F0 f end=00764413 -GetInputLine 00764520 f end=007645D3 -PaintText 007645E0 f end=00764788 -PasteInInputLine 00764800 f end=00764985 -OnChar 00764990 f end=00764A03 -OnMouseDown 00764A10 f end=00764B88 -OnKeyDownRepeat 00764B90 f end=00764E4F -ConsoleWrite 00765270 f end=00765359 -ConsoleWriteA 007653B0 f end=00765400 -ConsoleCommandExecute 007658A0 f end=007659BF -OnIdle 007659C0 f end=00765AE5 -OnKeyDown 00765AF0 f end=00765FB2 -RegisterHandlers 00765FF0 f end=007660C2 -ConsoleScreenInitialize 00766140 f end=00766295 -CVarLoadFile 00766530 f end=007665C2 -CVar__Set 007668C0 f end=00766936 -CVarSaveFile 00767100 f end=0076719C -CVar__Destroy 007673F0 f end=00767434 -CVar__Register 00767FC0 f end=007681E9 -CVar__Initialize 00768340 f end=00768402 -ConsoleCommand_Quit 00768410 f end=0076841B -ConsoleCommandHistory 00768440 f end=0076845B -ConsoleCommandUnregister 007689E0 f end=00768A19 -ConsoleCommandRegister 00769100 f end=007691B3 -ConsoleAccessGetEnabled 00769230 f end=00769236 -ConsoleDeviceInitialize 0076AB80 f end=0076B287 -ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 +GenerateNodeString 00763680 f end=0076372C type="void __stdcall func(CONSOLELINE* node)" +SetInputString 00763730 f end=007637CD type="void __stdcall func(char* text)" ; UC +ReserveInputSpace 007637D0 f end=0076382B type="void __fastcall func(CONSOLELINE* lineptr, uint32_t chars)" +ResetHighlight 00763830 f end=00763855 type="void __stdcall func()" +UpdateHighlight 00763860 f end=00763996 type="void __stdcall func()" +OnMouseUp 007639A0 f end=007639CF type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +OnMouseMove 007639D0 f end=00763A54 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +MakeCommandCurrent 00763A60 f end=00763AAA type="void __stdcall func(CONSOLELINE* lineptr@, char* command)" +CONSOLELINE__Backspace 00763AB0 f end=00763B08 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Backspace() +CONSOLELINE__Delete 00763B10 f end=00763B40 type="void __thiscall func(CONSOLELINE* this)" ; void CONSOLELINE::Delete() +CONSOLELINE__Up 00763B40 f end=00763B83 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Up() +CONSOLELINE__Down 00763B90 f end=00763BD6 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Down() +OnKeyUp 00763BE0 f end=00763C0A type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +ConsolePostClose 00763C50 f end=00763C5D type="void __stdcall func()" +EventCloseCallback 00763D60 f end=00763D71 type="int32_t __stdcall func(void* param)" +DrawBackground 00763DF0 f end=00764039 type="void __stdcall func()" +DrawHighLight 00764040 f end=00764196 type="void __stdcall func()" +DrawCaret 007641A0 f end=007643EA type="void ___stdcall func(C3Vector* caretpos)" +PaintBackground 007643F0 f end=00764413 type="void __stdcall func()" +EnforceMaxLines 007644B0 f end=0076451C +GetInputLine 00764520 f end=007645D3 type="CONSOLELINE* __stdcall func()" +PaintText 007645E0 f end=00764788 type="void __stdcall func(void* param, RECTF* rect, RECTF* visible, float elapsedSec)" +GetLineAtMousePosition 00764790 f end=007647F5 type="CONSOLELINE* __stdcall func(float y)" +PasteInInputLine 00764800 f end=00764985 type="void __stdcall func(char* characters)" +OnChar 00764990 f end=00764A03 type="int32_t __stdcall func(EVENT_DATA_CHAR* data, void* param)" +OnMouseDown 00764A10 f end=00764B88 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +OnKeyDownRepeat 00764B90 f end=00764E4F type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +ConsoleWrite 00765270 f end=00765359 type="void __stdcall func(char* str, COLOR_T color)" +ConsoleWriteA 007653B0 f end=00765400 type="void __stdcall func(char* str, COLOR_T color, ...)" +ConsoleCommandExecute 007658A0 f end=007659BF type="void __stdcall func(char* commandLine, int32_t addToHistory)" +OnIdle 007659C0 f end=00765AE5 type="int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)" +OnKeyDown 00765AF0 f end=00765FB2 type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +RegisterHandlers 00765FF0 f end=007660C2 type="void __stdcall func()" +ConsoleScreenInitialize 00766140 f end=00766295 type="void __stdcall func()" +CVar__Load 00766400 f end=0076652C type="int32_t __stdcall func(HOSFILE file)" +CVar__Load 00766530 f end=007665C2 type="int32_t __stdcall func(char* filename)" +CVar__SaveCvar 00766640 f end=007666A1 type="bool __stdcall func(char* name, char* value, void* param)" +CVar__Set 007668C0 f end=00766936 type="bool __thiscall func(CVar* this, char* value, bool setValue, bool setReset, bool setDefault, bool a6)" +CVar__IterateForArchive 00767030 f end=007670DA type="int32_t __stdcall func(uint32_t a1, uint32_t a2, void* callback, void* param)" +CVarSaveFile 00767100 f end=0076719C type="void __stdcall func()" +CVar__Destroy 007673F0 f end=00767434 type="void __stdcall func()" +CVar__Register 00767FC0 f end=007681E9 type="CVar* __stdcall func(char* name, char* help, uint32_t flags, const char* value, void* fcn, uint32_t category, bool a7, void* arg, bool a9)" +CVar__Initialize 00768340 f end=00768402 type="void __stdcall func(char* filename)" +ConsoleCommand_Quit 00768410 f end=0076841B type="int32_t __stdcall func(char* command, char* arguments)" +ConsoleCommandHistory 00768440 f end=0076845B type="char* __stdcall func(uint32_t index)" +ConsoleCommandUnregister 007689E0 f end=00768A19 type="void __stdcall func(char* command)" +ConsoleCommandComplete 00768A20 f end=00768AD6 type="int32_t __stdcall func(char* partial, char** previous, int32_t direction)" +ConsoleCommandRegister 00769100 f end=007691B3 type="int32_t __stdcall func(char* command, COMMANDHANDLER handler, CATEGORY category, char* helpText)" +ConsoleAccessGetEnabled 00769230 f end=00769236 type="int32_t __stdcall func()" +SetGxCVars 00769950 f end=00769BF5 +ConsoleDeviceInitialize 0076AB80 f end=0076B287 type="int32_t __stdcall func(char* title, int32_t multithreaded)" +ConsoleDetectSaveHardware 0076B620 f end=0076B7DB +ConsoleDetectDetectHardware 0076BA30 f end=0076BBE9 +ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 type="int32_t __stdcall func()" +RegisterGxCVars 0076A630 f end=0076AAA8 diff --git a/profile/3.3.5a-windows-386/symbol/console/label.sym b/profile/3.3.5a-windows-386/symbol/console/label.sym index a921a59..8868dad 100644 --- a/profile/3.3.5a-windows-386/symbol/console/label.sym +++ b/profile/3.3.5a-windows-386/symbol/console/label.sym @@ -1,35 +1,45 @@ -g_commandHistory 00ca3a28 l ; char[10394] -g_commandHistoryIndex 00caba28 l ; uint32 -g_consoleCommandHash 00caba30 l ; TSHashTable -g_defaultCommand 00caba2c l ; command function pointer -s_active 007649af l ; int32 as boolean -s_baseTextFlags 00adbae4 l ; uint32 -s_batch 00ca1874 l ; CGxStringBatch* -s_caret 00ca1694 l ; int32 -s_caretpixwidth 00ca1718 l -s_caretpixheight 00ca1690 l -s_charSpacing 00ca19a8 l ; float -s_completedCmd 00ca1984 l ; int32 -s_completionMode 00ca1980 l -s_consoleAccessEnabled 00cabcc4 l ; int32 as boolean -s_consoleHeight 00ca19b0 l ; float -s_consoleHotKey 00adbac4 l ; KEY -s_consoleResizeState 00ca1990 l ; CONSOLERESIZESTATE -s_currlineptr 00ca1720 l ; CONSOLELINE* -s_fontHeight 00adbacc l ; float -s_fontName 00ca1768 l ; char[260] -s_highlightState 00ca1994 l ; HIGHLIGHTSTATE -s_highlightLeftCharIndex 00ca19a0 l ; uint32 -s_highlightRightCharIndex 00ca19a4 l ; uint32 -s_historyIndex 00adbac8 l ; int32 -s_hRect 00adbad4 l ; RECTF -s_inputString 00ca171c l ; CGxString* -s_layerBackground 00ca1724 l ; HLAYER -s_layerText 00ca1870 l ; HLAYER -s_partial 00ca1878 l ; char[100] -s_rect 00adbab4 l ; RECTF -s_repeatCount 00ca186c l ; uint32 -s_repeatBuffer 00ca1728 l ; char[64] -carettime 00ca19f0 l ; float -s_NumLines 00ca197c l ; int32 -s_textFont 00ca198c l ; HTEXTFONT \ No newline at end of file +s_active 00CA1978 l type="int32_t" ; int32 as boolean +s_rect 00ADBAB4 l type="RECTF" ; RECTF +s_consoleHotKey 00ADBAC4 l type="KEY" ; KEY +s_historyIndex 00ADBAC8 l type="int32_t" ; int32 +s_fontHeight 00ADBACC l type="float" ; float +s_hRect 00ADBAD4 l type="RECTF" ; RECTF +s_baseTextFlags 00ADBAE4 l type="uint32_t" ; uint32 +s_linelist 00ADBBB0 l type="TSList_CONSOLELINE" +s_caretpixheight 00CA1690 l type="float" +s_caret 00CA1694 l type="int32_t" ; int32 +s_copyText 00CA1698 l +s_caretpixwidth 00CA1718 l type="float" +s_inputString 00CA171C l type="CGxString*" +s_currlineptr 00CA1720 l type="CONSOLELINE*" +s_layerBackground 00CA1724 l type="HLAYER" +s_repeatBuffer 00CA1728 l type="char[64]" +s_fontName 00CA1768 l type="char[260]" +s_repeatCount 00CA186C l type="uint32_t" +s_layerText 00CA1870 l type="HLAYER" +s_batch 00CA1874 l type="CGxStringBatch*" +s_partial 00CA1878 l type="char[256]" +s_NumLines 00CA197C l type="int32_t" +s_completionMode 00CA1980 l type="int32_t" +s_completedCmd 00CA1984 l type="char*" +s_textFont 00CA198C l type="HTEXTFONT" ; HTEXTFONT +s_consoleResizeState 00CA1990 l type="CONSOLERESIZESTATE" ; CONSOLERESIZESTATE +s_highlightState 00CA1994 l type="HIGHLIGHTSTATE" ; HIGHLIGHTSTATE +s_highlightHStart 00CA1998 l type="float" +s_highlightHEnd 00CA199C l type="float" +s_highlightLeftCharIndex 00CA19A0 l type="uint32_t" +s_highlightRightCharIndex 00CA19A4 l type="uint32_t" +s_charSpacing 00CA19A8 l type="float" +s_consoleHeight 00CA19B0 l type="float" +s_critsect 00CA19B4 l type="SCritSect" +carettime 00CA19F0 l type="float" +s_fileName 00CA19F4 l type="char*" +CVar__m_initialized 00CA19F9 l type="bool" +s_registeredCVars 00CA19FC l type="TSHashTable_CVar_HASHKEY_STRI" +g_commandHistory 00CA3A28 l type="char[32][1024]" +g_commandHistoryIndex 00CABA28 l type="uint32_t" +g_defaultCommand 00CABA2C l type="COMMANDHANDLER" ; command function pointer +g_consoleCommandHash 00CABA30 l type="TSHashTable_CONSOLECOMMAND_HASHKEY_STRI" ; TSHashTable +s_hwDetect 00CABCBE l type="bool" +s_consoleAccessEnabled 00CABCC4 l type="int32_t" ; int32 as boolean +s_requestedFormat 00CABCD8 l type="CGxFormat" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/cvar/func.sym b/profile/3.3.5a-windows-386/symbol/cvar/func.sym new file mode 100644 index 0000000..440550b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/cvar/func.sym @@ -0,0 +1,20 @@ +CVGxColorBitsCallback 00769240 f end=007692CF type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxDepthBitsCallback 007692D0 f end=0076935F type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxTripleBufferCallback 00769360 f end=007693AB type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxApiCallback 007693B0 f end=00769513 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxVSyncCallback 00769520 f end=00769544 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxWindowCallback 00769550 f end=0076957A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxAspectCallback 00769580 f end=007695AA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaximizeCallback 007695B0 f end=007695DA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxCursorCallback 007695E0 f end=0076960A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMultisampleCallback 00769610 f end=0076964A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMultisampleQualityCallback 00769650 f end=00769693 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxFixLagCallback 007696A0 f end=007696CA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxOverrideCallback 00769810 f end=00769823 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaxFPSCallback 00769830 f end=00769856 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaxFPSBkCallback 00769860 f end=00769886 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxWindowResizeLockCallback 00769890 f end=007698A9 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxStereoEnabledCallback 00769C00 f end=00769C2B type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxResolutionCallback 0076A220 f end=0076A57F type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxRefreshCallback 0076A580 f end=0076A62D type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxVideoOptionsVersionCallback 008A1420 f end=008A1423 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/cvar/label.sym b/profile/3.3.5a-windows-386/symbol/cvar/label.sym new file mode 100644 index 0000000..1c303b1 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/cvar/label.sym @@ -0,0 +1,23 @@ +s_cvGxStereoEnabled 00CABA98 l type="CVar*" +s_cvGxRefresh 00CABA9C l type="CVar*" +s_cvGxMaximize 00CABAA0 l type="CVar*" +s_cvGxMultisample 00CABAA4 l type="CVar*" +s_cvGxCursor 00CABAA8 l type="CVar*" +s_cvGxMultisampleQuality 00CABAB0 l type="CVar*" +s_cvGxResolution 00CABAB4 l type="CVar*" +s_cvHwDetect 00CABAB8 l type="CVar*" +s_cvGxOverride 00CABABC l type="CVar*" +s_cvGxFixLag 00CABAC0 l type="CVar*" +s_cvMaxFPS 00CABAC4 l type="CVar*" +s_cvGxVSync 00CABAEC l type="CVar*" +s_cvVideoOptionsVersion 00CABB30 l type="CVar*" +s_cvMaxFPSBk 00CABB6C l type="CVar*" +s_cvGxTripleBuffer 00CABB70 l type="CVar*" +s_cvGxDepthBits 00CABB74 l type="CVar*" +s_cvGxColorBits 00CABB78 l type="CVar*" +s_cvGxApi 00CABBA0 l type="CVar*" +s_cvGxAspect 00CABBA4 l type="CVar*" +s_cvFixedFunction 00CABBA8 l type="CVar*" +s_cvWidescreen 00CABBAC l type="CVar*" +s_cvGxWindow 00CABBB0 l type="CVar*" +s_cvWindowResizeLock 00CABBB4 l type="CVar*" diff --git a/profile/3.3.5a-windows-386/symbol/datastore/func.sym b/profile/3.3.5a-windows-386/symbol/datastore/func.sym index 1ab2290..c1fb735 100644 --- a/profile/3.3.5a-windows-386/symbol/datastore/func.sym +++ b/profile/3.3.5a-windows-386/symbol/datastore/func.sym @@ -1,6 +1,6 @@ CDataStore__FetchWrite 00401070 f ; protected: int __thiscall CDataStore::FetchWrite(unsigned int,unsigned int,char const *,int) CDataStore__IsRead 004010D0 f ; CDataStore::IsRead() const -CDataStore__Reset 004010E0 f ; CDataStore::Reset() +CDataStore__Reset 004010E0 f ; CDataStore::Reset() CDataStore__Finalize 00401130 f ; CDataStore::Finalize() CDataStore__destructor 004038A0 f ; CDataStore::~CDataStore() CDataStore__GetBufferParams 0047ADE0 f ; CDataStore::GetBufferParams(void const**, unsigned int*, unsigned int*) diff --git a/profile/3.3.5a-windows-386/symbol/db/func.sym b/profile/3.3.5a-windows-386/symbol/db/func.sym new file mode 100644 index 0000000..b64a2e8 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/db/func.sym @@ -0,0 +1,12 @@ +StaticDBLoadAll 006337D0 f end=0063478E ; 00005400 +ClientDBShutdown 00634C60 f end=00634CBB ; 00005400 +ClientDBInitialize 00634E00 f end=00634E62 ; ClientDBInitialize() +WowClientDB_AchievementRec__Load 00636E50 f end=006370A2 ; WowClientDB::Load(char const, int) +WowClientDB_Cfg_CategoriesRec__Load 006393A0 f end=006395ED ; WowClientDB::Load(char const, int) +WowClientDB_Cfg_ConfigsRec__Load 006395F0 f end=0063983D ; WowClientDB::Load(char const, int) +WowClientDB_CharBaseInfoRec__Load 00639840 f end=00639A8D ; WowClientDB::Load(char const, int) +WowClientDB_AchievementRec__LoadRecords 00658D90 f end=00658E85 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB_Cfg_CategoriesRec__LoadRecords 00659910 f end=00659A03 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB_CharBaseInfoRec__LoadRecords 00659B80 f end=00659C82 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB__GetRecord 0065C290 f end=0065C2B4 ; 00005410 +WowClientDB_AchievementRec__GetRecordByIndex 0065F520 f end=0065F55B ; WowClientDB::GetRecordByIndex(int, void*) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/db/label.sym b/profile/3.3.5a-windows-386/symbol/db/label.sym new file mode 100644 index 0000000..d5d10a8 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/db/label.sym @@ -0,0 +1,237 @@ +g_achievementDB 00AD305C l type="WowClientDB_AchievementRec" ; 0xEB +g_achievement_CriteriaDB 00AD3080 l type="WowClientDB_Achievement_CriteriaRec" ; 0xEC +g_achievement_CategoryDB 00AD30A4 l type="WowClientDB_Achievement_CategoryRec" ; 0xED +g_animationDataDB 00AD30C8 l type="WowClientDB_AnimationDataRec" ; 0xEE +g_areaGroupDB 00AD30EC l type="WowClientDB_AreaGroupRec" ; 0xEF +g_areaPOIDB 00AD3110 l type="WowClientDB_AreaPOIRec" ; 0xF0 +g_areaTableDB 00AD3134 l type="WowClientDB_AreaTableRec" ; 0xF1 +g_areaTriggerDB 00AD3158 l type="WowClientDB_AreaTriggerRec" ; 0xF2 +g_attackAnimKitsDB 00AD317C l type="WowClientDB_AttackAnimKitsRec" ; 0xF3 +g_attackAnimTypesDB 00AD31A0 l type="WowClientDB_AttackAnimTypesRec" ; 0xF4 +g_auctionHouseDB 00AD31C4 l type="WowClientDB_AuctionHouseRec" ; 0xF5 +g_bankBagSlotPricesDB 00AD31E8 l type="WowClientDB_BankBagSlotPricesRec" ; 0xF6 +g_bannedAddOnsDB 00AD320C l type="WowClientDB_BannedAddOnsRec" ; 0xF7 +g_barberShopStyleDB 00AD3230 l type="WowClientDB_BarberShopStyleRec" ; 0xF8 +g_battlemasterListDB 00AD3254 l type="WowClientDB_BattlemasterListRec" ; 0xF9 +g_cameraShakesDB 00AD3278 l type="WowClientDB_CameraShakesRec" ; 0xFA +g_cfg_CategoriesDB 00AD329C l type="WowClientDB_Cfg_CategoriesRec" ; 0xFB +g_cfg_ConfigsDB 00AD32C0 l type="WowClientDB_Cfg_ConfigsRec" ; 0xFC +g_charBaseInfoDB 00AD32E4 l type="WowClientDB_CharBaseInfoRec" ; 0xFD +g_charHairGeosetsDB 00AD3308 l type="WowClientDB_CharHairGeosetsRec" ; 0xFE +g_charSectionsDB 00AD332C l type="WowClientDB_CharSectionsRec" ; 0xFF +g_charStartOutfitDB 00AD3350 l type="WowClientDB_CharStartOutfitRec" ; 0x100 +g_charTitlesDB 00AD3374 l type="WowClientDB_CharTitlesRec" ; 0x101 +g_characterFacialHairStylesDB 00AD3398 l type="WowClientDB_CharacterFacialHairStylesRec" ; 0x102 +g_chatChannelsDB 00AD33BC l type="WowClientDB_ChatChannelsRec" ; 0x103 +g_chatProfanityDB 00AD33E0 l type="WowClientDB_ChatProfanityRec" ; 0x104 +g_chrClassesDB 00AD3404 l type="WowClientDB_ChrClassesRec" ; 0x105 +g_chrRacesDB 00AD3428 l type="WowClientDB_ChrRacesRec" ; 0x106 +g_cinematicCameraDB 00AD344C l type="WowClientDB_CinematicCameraRec" ; 0x107 +g_cinematicSequencesDB 00AD3470 l type="WowClientDB_CinematicSequencesRec" ; 0x108 +g_creatureDisplayInfoDB 00AD34B8 l type="WowClientDB_CreatureDisplayInfoRec" ; 0x109 +g_creatureDisplayInfoExtraDB 00AD3494 l type="WowClientDB_CreatureDisplayInfoExtraRec" ; 0x10A +g_creatureFamilyDB 00AD34DC l type="WowClientDB_CreatureFamilyRec" ; 0x10B +g_creatureModelDataDB 00AD3500 l type="WowClientDB_CreatureModelDataRec" ; 0x10C +g_creatureMovementInfoDB 00AD3524 l type="WowClientDB_CreatureMovementInfoRec" ; 0x10D +g_creatureSoundDataDB 00AD3548 l type="WowClientDB_CreatureSoundDataRec" ; 0x10E +g_creatureSpellDataDB 00AD356C l type="WowClientDB_CreatureSpellDataRec" ; 0x10F +g_creatureTypeDB 00AD3590 l type="WowClientDB_CreatureTypeRec" ; 0x110 +g_currencyTypesDB 00AD35B4 l type="WowClientDB_CurrencyTypesRec" ; 0x111 +g_currencyCategoryDB 00AD35D8 l type="WowClientDB_CurrencyCategoryRec" ; 0x112 +g_danceMovesDB 00AD35FC l type="WowClientDB_DanceMovesRec" ; 0x113 +g_deathThudLookupsDB 00AD3620 l type="WowClientDB_DeathThudLookupsRec" ; 0x114 +g_destructibleModelDataDB 00AD368C l type="WowClientDB_DestructibleModelDataRec" ; 0x115 +g_dungeonEncounterDB 00AD36B0 l type="WowClientDB_DungeonEncounterRec" ; 0x116 +g_dungeonMapDB 00AD36D4 l type="WowClientDB_DungeonMapRec" ; 0x117 +g_dungeonMapChunkDB 00AD36F8 l type="WowClientDB_DungeonMapChunkRec" ; 0x118 +g_durabilityCostsDB 00AD371C l type="WowClientDB_DurabilityCostsRec" ; 0x119 +g_durabilityQualityDB 00AD3740 l type="WowClientDB_DurabilityQualityRec" ; 0x11A +g_emotesDB 00AD3764 l type="WowClientDB_EmotesRec" ; 0x11B +g_emotesTextDB 00AD37D0 l type="WowClientDB_EmotesTextRec" ; 0x11C +g_emotesTextDataDB 00AD3788 l type="WowClientDB_EmotesTextDataRec" ; 0x11D +g_emotesTextSoundDB 00AD37AC l type="WowClientDB_EmotesTextSoundRec" ; 0x11E +g_environmentalDamageDB 00AD37F4 l type="WowClientDB_EnvironmentalDamageRec" ; 0x11F +g_exhaustionDB 00AD3818 l type="WowClientDB_ExhaustionRec" ; 0x120 +g_factionDB 00AD3860 l type="WowClientDB_FactionRec" ; 0x121 +g_factionGroupDB 00AD383C l type="WowClientDB_FactionGroupRec" ; 0x122 +g_factionTemplateDB 00AD3884 l type="WowClientDB_FactionTemplateRec" ; 0x123 +g_fileDataDB 00AD38A8 l type="WowClientDB_FileDataRec" ; 0x124 +g_footprintTexturesDB 00AD38CC l type="WowClientDB_FootprintTexturesRec" ; 0x125 +g_footstepTerrainLookupDB 00AD38F0 l type="WowClientDB_FootstepTerrainLookupRec" ; 0x126 +g_gameObjectArtKitDB 00AD3914 l type="WowClientDB_GameObjectArtKitRec" ; 0x127 +g_gameObjectDisplayInfoDB 00AD3938 l type="WowClientDB_GameObjectDisplayInfoRec" ; 0x128 +g_gameTablesDB 00AD395C l type="WowClientDB_GameTablesRec" ; 0x129 +g_gameTipsDB 00AD3980 l type="WowClientDB_GameTipsRec" ; 0x12A +g_gemPropertiesDB 00AD39A4 l type="WowClientDB_GemPropertiesRec" ; 0x12B +g_glyphPropertiesDB 00AD39C8 l type="WowClientDB_GlyphPropertiesRec" ; 0x12C +g_glyphSlotDB 00AD39EC l type="WowClientDB_GlyphSlotRec" ; 0x12D +g_gMSurveyAnswersDB 00AD3A10 l type="WowClientDB_GMSurveyAnswersRec" ; 0x12E +g_gMSurveyCurrentSurveyDB 00AD3A34 l type="WowClientDB_GMSurveyCurrentSurveyRec" ; 0x12F +g_gMSurveyQuestionsDB 00AD3A58 l type="WowClientDB_GMSurveyQuestionsRec" ; 0x130 +g_gMSurveySurveysDB 00AD3A7C l type="WowClientDB_GMSurveySurveysRec" ; 0x131 +g_gMTicketCategoryDB 00AD3AA0 l type="WowClientDB_GMTicketCategoryRec" ; 0x132 +g_groundEffectDoodadDB 00AD3AC4 l type="WowClientDB_GroundEffectDoodadRec" ; 0x133 +g_groundEffectTextureDB 00AD3AE8 l type="WowClientDB_GroundEffectTextureRec" ; 0x134 +g_gtBarberShopCostBaseDB 00AD3B0C l type="WowClientDB_gtBarberShopCostBaseRec" ; 0x135 +g_gtCombatRatingsDB 00AD3B30 l type="WowClientDB_gtCombatRatingsRec" ; 0x136 +g_gtChanceToMeleeCritDB 00AD3B54 l type="WowClientDB_gtChanceToMeleeCritRec" ; 0x137 +g_gtChanceToMeleeCritBaseDB 00AD3B78 l type="WowClientDB_gtChanceToMeleeCritBaseRec" ; 0x138 +g_gtChanceToSpellCritDB 00AD3B9C l type="WowClientDB_gtChanceToSpellCritRec" ; 0x139 +g_gtChanceToSpellCritBaseDB 00AD3BC0 l type="WowClientDB_gtChanceToSpellCritBaseRec" ; 0x13A +g_gtNPCManaCostScalerDB 00AD3BE4 l type="WowClientDB_gtNPCManaCostScalerRec" ; 0x13B +g_gtOCTClassCombatRatingScalarDB 00AD3C08 l type="WowClientDB_gtOCTClassCombatRatingScalarRec" ; 0x13C +g_gtOCTRegenHPDB 00AD3C2C l type="WowClientDB_gtOCTRegenHPRec" ; 0x13D +g_gtOCTRegenMPDB 00AD3C50 l type="WowClientDB_gtOCTRegenMPRec" ; 0x13E +g_gtRegenHPPerSptDB 00AD3C74 l type="WowClientDB_gtRegenHPPerSptRec" ; 0x13F +g_gtRegenMPPerSptDB 00AD3C98 l type="WowClientDB_gtRegenMPPerSptRec" ; 0x140 +g_helmetGeosetVisDataDB 00AD3CBC l type="WowClientDB_HelmetGeosetVisDataRec" ; 0x141 +g_holidayDescriptionsDB 00AD3CE0 l type="WowClientDB_HolidayDescriptionsRec" ; 0x142 +g_holidayNamesDB 00AD3D04 l type="WowClientDB_HolidayNamesRec" ; 0x143 +g_holidaysDB 00AD3D28 l type="WowClientDB_HolidaysRec" ; 0x144 +g_itemDB 00AD3D4C l type="WowClientDB_ItemRec" ; 0x145 +g_itemBagFamilyDB 00AD3D70 l type="WowClientDB_ItemBagFamilyRec" ; 0x146 +g_itemClassDB 00AD3D94 l type="WowClientDB_ItemClassRec" ; 0x147 +g_itemCondExtCostsDB 00AD3DB8 l type="WowClientDB_ItemCondExtCostsRec" ; 0x148 +g_itemDisplayInfoDB 00AD3DDC l type="WowClientDB_ItemDisplayInfoRec" ; 0x149 +g_itemExtendedCostDB 00AD3E00 l type="WowClientDB_ItemExtendedCostRec" ; 0x14A +g_itemGroupSoundsDB 00AD3E24 l type="WowClientDB_ItemGroupSoundsRec" ; 0x14B +g_itemLimitCategoryDB 00AD3E48 l type="WowClientDB_ItemLimitCategoryRec" ; 0x14C +g_itemPetFoodDB 00AD3E6C l type="WowClientDB_ItemPetFoodRec" ; 0x14D +g_itemPurchaseGroupDB 00AD3E90 l type="WowClientDB_ItemPurchaseGroupRec" ; 0x14E +g_itemRandomPropertiesDB 00AD3EB4 l type="WowClientDB_ItemRandomPropertiesRec" ; 0x14F +g_itemRandomSuffixDB 00AD3ED8 l type="WowClientDB_ItemRandomSuffixRec" ; 0x150 +g_itemSetDB 00AD3EFC l type="WowClientDB_ItemSetRec" ; 0x151 +g_itemSubClassDB 00AD3F44 l type="WowClientDB_ItemSubClassRec" ; 0x152 +g_itemSubClassMaskDB 00AD3F20 l type="WowClientDB_ItemSubClassMaskRec" ; 0x153 +g_itemVisualEffectsDB 00AD3F68 l type="WowClientDB_ItemVisualEffectsRec" ; 0x154 +g_itemVisualsDB 00AD3F8C l type="WowClientDB_ItemVisualsRec" ; 0x155 +g_languageWordsDB 00AD3FB0 l type="WowClientDB_LanguageWordsRec" ; 0x156 +g_languagesDB 00AD3FD4 l type="WowClientDB_LanguagesRec" ; 0x157 +g_lfgDungeonExpansionDB 00AD3FF8 l type="WowClientDB_LfgDungeonExpansionRec" ; 0x158 +g_lfgDungeonGroupDB 00AD401C l type="WowClientDB_LfgDungeonGroupRec" ; 0x159 +g_lfgDungeonsDB 00AD4040 l type="WowClientDB_LfgDungeonsRec" ; 0x15A +g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B +g_lightFloatBandDB 00AF49E0 l type="WowClientDB_LightFloatBandRec" ; 0x15C +g_lightIntBandDB 00AF49BC l type="WowClientDB_LightIntBandRec" ; 0x15D +g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E +g_lightSkyboxDB 00AF4998 l type="WowClientDB_LightSkyboxRec" ; 0x15F +g_liquidTypeDB 00AD4064 l type="WowClientDB_LiquidTypeRec" ; 0x160 +g_liquidMaterialDB 00AD4088 l type="WowClientDB_LiquidMaterialRec" ; 0x161 +g_loadingScreensDB 00AD40AC l type="WowClientDB_LoadingScreensRec" ; 0x162 +g_loadingScreenTaxiSplinesDB 00AD40D0 l type="WowClientDB_LoadingScreenTaxiSplinesRec" ; 0x163 +g_lockDB 00AD40F4 l type="WowClientDB_LockRec" ; 0x164 +g_lockTypeDB 00AD4118 l type="WowClientDB_LockTypeRec" ; 0x165 +g_mailTemplateDB 00AD413C l type="WowClientDB_MailTemplateRec" ; 0x166 +g_mapDB 00AD4160 l type="WowClientDB_MapRec" ; 0x167 +g_mapDifficultyDB 00AD4184 l type="WowClientDB_MapDifficultyRec" ; 0x168 +g_materialDB 00AD41A8 l type="WowClientDB_MaterialRec" ; 0x169 +g_movieDB 00AD41CC l type="WowClientDB_MovieRec" ; 0x16A +g_movieFileDataDB 00AD41F0 l type="WowClientDB_MovieFileDataRec" ; 0x16B +g_movieVariationDB 00AD4214 l type="WowClientDB_MovieVariationRec" ; 0x16C +g_nameGenDB 00AD4238 l type="WowClientDB_NameGenRec" ; 0x16D +g_nPCSoundsDB 00AD425C l type="WowClientDB_NPCSoundsRec" ; 0x16E +g_namesProfanityDB 00AD4280 l type="WowClientDB_NamesProfanityRec" ; 0x16F +g_namesReservedDB 00AD42A4 l type="WowClientDB_NamesReservedRec" ; 0x170 +g_overrideSpellDataDB 00AD42C8 l type="WowClientDB_OverrideSpellDataRec" ; 0x171 +g_packageDB 00AD42EC l type="WowClientDB_PackageRec" ; 0x172 +g_pageTextMaterialDB 00AD4310 l type="WowClientDB_PageTextMaterialRec" ; 0x173 +g_paperDollItemFrameDB 00AD4334 l type="WowClientDB_PaperDollItemFrameRec" ; 0x174 +g_particleColorDB 00AD4358 l type="WowClientDB_ParticleColorRec" ; 0x175 +g_petPersonalityDB 00AD437C l type="WowClientDB_PetPersonalityRec" ; 0x176 +g_powerDisplayDB 00AD43A0 l type="WowClientDB_PowerDisplayRec" ; 0x177 +g_pvpDifficultyDB 00AD43C4 l type="WowClientDB_PvpDifficultyRec" ; 0x178 +g_questFactionRewardDB 00AD43E8 l type="WowClientDB_QuestFactionRewardRec" ; 0x179 +g_questInfoDB 00AD440C l type="WowClientDB_QuestInfoRec" ; 0x17A +g_questSortDB 00AD4430 l type="WowClientDB_QuestSortRec" ; 0x17B +g_questXPDB 00AD4454 l type="WowClientDB_QuestXPRec" ; 0x17C +g_resistancesDB 00AD4478 l type="WowClientDB_ResistancesRec" ; 0x17D +g_randPropPointsDB 00AD449C l type="WowClientDB_RandPropPointsRec" ; 0x17E +g_scalingStatDistributionDB 00AD44C0 l type="WowClientDB_ScalingStatDistributionRec" ; 0x17F +g_scalingStatValuesDB 00AD44E4 l type="WowClientDB_ScalingStatValuesRec" ; 0x180 +g_screenEffectDB 00AD4508 l type="WowClientDB_ScreenEffectRec" ; 0x181 +g_serverMessagesDB 00AD452C l type="WowClientDB_ServerMessagesRec" ; 0x182 +g_sheatheSoundLookupsDB 00AD4550 l type="WowClientDB_SheatheSoundLookupsRec" ; 0x183 +g_skillCostsDataDB 00AD4574 l type="WowClientDB_SkillCostsDataRec" ; 0x184 +g_skillLineAbilityDB 00AD4598 l type="WowClientDB_SkillLineAbilityRec" ; 0x185 +g_skillLineCategoryDB 00AD45BC l type="WowClientDB_SkillLineCategoryRec" ; 0x186 +g_skillLineDB 00AD45E0 l type="WowClientDB_SkillLineRec" ; 0x187 +g_skillRaceClassInfoDB 00AD4604 l type="WowClientDB_SkillRaceClassInfoRec" ; 0x188 +g_skillTiersDB 00AD4628 l type="WowClientDB_SkillTiersRec" ; 0x189 +g_soundAmbienceDB 00AD464C l type="WowClientDB_SoundAmbienceRec" ; 0x18A +g_soundEmittersDB 00AD4694 l type="WowClientDB_SoundEmittersRec" ; 0x18B +g_soundEntriesDB 00AD4670 l type="WowClientDB_SoundEntriesRec" ; 0x18C +g_soundProviderPreferencesDB 00AD46B8 l type="WowClientDB_SoundProviderPreferencesRec" ; 0x18D +g_soundSamplePreferencesDB 00AD46DC l type="WowClientDB_SoundSamplePreferencesRec" ; 0x18E +g_soundWaterTypeDB 00AD4700 l type="WowClientDB_SoundWaterTypeRec" ; 0x18F +g_spamMessagesDB 00AD4724 l type="WowClientDB_SpamMessagesRec" ; 0x190 +g_spellCastTimesDB 00AD4748 l type="WowClientDB_SpellCastTimesRec" ; 0x191 +g_spellCategoryDB 00AD476C l type="WowClientDB_SpellCategoryRec" ; 0x192 +g_spellChainEffectsDB 00AD4790 l type="WowClientDB_SpellChainEffectsRec" ; 0x193 +g_spellDB 00AD49D0 l type="WowClientDB_SpellRec" ; 0x194 +g_spellDescriptionVariablesDB 00AD47B4 l type="WowClientDB_SpellDescriptionVariablesRec" ; 0x195 +g_spellDifficultyDB 00AD47D8 l type="WowClientDB_SpellDifficultyRec" ; 0x196 +g_spellDispelTypeDB 00AD47FC l type="WowClientDB_SpellDispelTypeRec" ; 0x197 +g_spellDurationDB 00AD4820 l type="WowClientDB_SpellDurationRec" ; 0x198 +g_spellEffectCameraShakesDB 00AD4844 l type="WowClientDB_SpellEffectCameraShakesRec" ; 0x199 +g_spellFocusObjectDB 00AD4868 l type="WowClientDB_SpellFocusObjectRec" ; 0x19A +g_spellIconDB 00AD488C l type="WowClientDB_SpellIconRec" ; 0x19B +g_spellItemEnchantmentDB 00AD48B0 l type="WowClientDB_SpellItemEnchantmentRec" ; 0x19C +g_spellItemEnchantmentConditionDB 00AD48D4 l type="WowClientDB_SpellItemEnchantmentConditionRec" ; 0x19D +g_spellMechanicDB 00AD48F8 l type="WowClientDB_SpellMechanicRec" ; 0x19E +g_spellMissileDB 00AD491C l type="WowClientDB_SpellMissileRec" ; 0x19F +g_spellMissileMotionDB 00AD4940 l type="WowClientDB_SpellMissileMotionRec" ; 0x1A0 +g_spellRadiusDB 00AD4964 l type="WowClientDB_SpellRadiusRec" ; 0x1A1 +g_spellRangeDB 00AD4988 l type="WowClientDB_SpellRangeRec" ; 0x1A2 +g_spellRuneCostDB 00AD49AC l type="WowClientDB_SpellRuneCostRec" ; 0x1A3 +g_spellShapeshiftFormDB 00AD49F4 l type="WowClientDB_SpellShapeshiftFormRec" ; 0x1A4 +g_spellVisualDB 00AD4AA8 l type="WowClientDB_SpellVisualRec" ; 0x1A5 +g_spellVisualEffectNameDB 00AD4A18 l type="WowClientDB_SpellVisualEffectNameRec" ; 0x1A6 +g_spellVisualKitDB 00AD4A3C l type="WowClientDB_SpellVisualKitRec" ; 0x1A7 +g_spellVisualKitAreaModelDB 00AD4A60 l type="WowClientDB_SpellVisualKitAreaModelRec" ; 0x1A8 +g_spellVisualKitModelAttachDB 00AD4A84 l type="WowClientDB_SpellVisualKitModelAttachRec" ; 0x1A9 +g_stableSlotPricesDB 00AD4ACC l type="WowClientDB_StableSlotPricesRec" ; 0x1AA +g_stationeryDB 00AD4AF0 l type="WowClientDB_StationeryRec" ; 0x1AB +g_stringLookupsDB 00AD4B14 l type="WowClientDB_StringLookupsRec" ; 0x1AC +g_summonPropertiesDB 00AD4B38 l type="WowClientDB_SummonPropertiesRec" ; 0x1AD +g_talentDB 00AD4B5C l type="WowClientDB_TalentRec" ; 0x1AE +g_talentTabDB 00AD4B80 l type="WowClientDB_TalentTabRec" ; 0x1AF +g_taxiNodesDB 00AD4BA4 l type="WowClientDB_TaxiNodesRec" ; 0x1B0 +g_taxiPathDB 00AD4BEC l type="WowClientDB_TaxiPathRec" ; 0x1B1 +g_taxiPathNodeDB 00AD4BC8 l type="WowClientDB_TaxiPathNodeRec" ; 0x1B2 +g_teamContributionPointsDB 00AD4C10 l type="WowClientDB_TeamContributionPointsRec" ; 0x1B3 +g_terrainTypeDB 00AD4C34 l type="WowClientDB_TerrainTypeRec" ; 0x1B4 +g_terrainTypeSoundsDB 00AD4C58 l type="WowClientDB_TerrainTypeSoundsRec" ; 0x1B5 +g_totemCategoryDB 00AD4C7C l type="WowClientDB_TotemCategoryRec" ; 0x1B6 +g_transportAnimationDB 00AD4CA0 l type="WowClientDB_TransportAnimationRec" ; 0x1B7 +g_transportPhysicsDB 00AD4CC4 l type="WowClientDB_TransportPhysicsRec" ; 0x1B8 +g_transportRotationDB 00AD4CE8 l type="WowClientDB_TransportRotationRec" ; 0x1B9 +g_uISoundLookupsDB 00AD4D0C l type="WowClientDB_UISoundLookupsRec" ; 0x1BA +g_unitBloodDB 00AD4D54 l type="WowClientDB_UnitBloodRec" ; 0x1BB +g_unitBloodLevelsDB 00AD4D30 l type="WowClientDB_UnitBloodLevelsRec" ; 0x1BC +g_vehicleDB 00AD4D78 l type="WowClientDB_VehicleRec" ; 0x1BD +g_vehicleSeatDB 00AD4D9C l type="WowClientDB_VehicleSeatRec" ; 0x1BE +g_vehicleUIIndicatorDB 00AD4DC0 l type="WowClientDB_VehicleUIIndicatorRec" ; 0x1BF +g_vehicleUIIndSeatDB 00AD4DE4 l type="WowClientDB_VehicleUIIndSeatRec" ; 0x1C0 +g_vocalUISoundsDB 00AD4E08 l type="WowClientDB_VocalUISoundsRec" ; 0x1C1 +g_wMOAreaTableDB 00AD4E2C l type="WowClientDB_WMOAreaTableRec" ; 0x1C2 +g_weaponImpactSoundsDB 00AD4E50 l type="WowClientDB_WeaponImpactSoundsRec" ; 0x1C3 +g_weaponSwingSounds2DB 00AD4E74 l type="WowClientDB_WeaponSwingSounds2Rec" ; 0x1C4 +g_weatherDB 00AD4E98 l type="WowClientDB_WeatherRec" ; 0x1C5 +g_worldMapAreaDB 00AD4EBC l type="WowClientDB_WorldMapAreaRec" ; 0x1C6 +g_worldMapTransformsDB 00AD4F28 l type="WowClientDB_WorldMapTransformsRec" ; 0x1C7 +g_worldMapContinentDB 00AD4EE0 l type="WowClientDB_WorldMapContinentRec" ; 0x1C8 +g_worldMapOverlayDB 00AD4F04 l type="WowClientDB_WorldMapOverlayRec" ; 0x1C9 +g_worldSafeLocsDB 00AD4F4C l type="WowClientDB_WorldSafeLocsRec" ; 0x1CA +g_worldStateUIDB 00AD4F70 l type="WowClientDB_WorldStateUIRec" ; 0x1CB +g_zoneIntroMusicTableDB 00AD4F94 l type="WowClientDB_ZoneIntroMusicTableRec" ; 0x1CC +g_zoneMusicDB 00AD4FB8 l type="WowClientDB_ZoneMusicRec" ; 0x1CD +g_worldStateZoneSoundsDB 00AD4FDC l type="WowClientDB_WorldStateZoneSoundsRec" ; 0x1CE +g_worldChunkSoundsDB 00AD5000 l type="WowClientDB_WorldChunkSoundsRec" ; 0x1CF +g_soundEntriesAdvancedDB 00AD5024 l type="WowClientDB_SoundEntriesAdvancedRec" ; 0x1D0 +g_objectEffectDB 00AD5048 l type="WowClientDB_ObjectEffectRec" ; 0x1D1 +g_objectEffectGroupDB 00AD506C l type="WowClientDB_ObjectEffectGroupRec" ; 0x1D2 +g_objectEffectModifierDB 00AD5090 l type="WowClientDB_ObjectEffectModifierRec" ; 0x1D3 +g_objectEffectPackageDB 00AD50B4 l type="WowClientDB_ObjectEffectPackageRec" ; 0x1D4 +g_objectEffectPackageElemDB 00AD50D8 l type="WowClientDB_ObjectEffectPackageElemRec" ; 0x1D5 +g_soundFilterDB 00AD50FC l type="WowClientDB_SoundFilterRec" ; 0x1D6 +g_soundFilterElemDB 00AD5120 l type="WowClientDB_SoundFilterElemRec" ; 0x1D7 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/framescript/func.sym b/profile/3.3.5a-windows-386/symbol/framescript/func.sym index 78f527c..d6049f9 100644 --- a/profile/3.3.5a-windows-386/symbol/framescript/func.sym +++ b/profile/3.3.5a-windows-386/symbol/framescript/func.sym @@ -1,2 +1,13 @@ FrameScript_Execute 00819EA0 f end=0081A2B5 type="void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)" -FrameScript_SignalEvent 0081B530 f end=0081B549 \ No newline at end of file +FrameScript_SignalEvent 0081B530 f end=0081B549 ; FrameScript_SignalEvent(unsigned int, char const*, ...) +FrameScript_Sprintf 00818070 f end=0081839F type="void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)" ; startIndex is the index of starting argument on stack +FrameScript_Object__CreateScriptMetaTable 00816790 f end=008167D3 ; FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*)) +FrameScript_Object__FillScriptMethodTable 008167E0 f end=00816822 ; FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int) +FrameScript_Object__FrameScript_Object 00819830 f end=0081984B type="void __thiscall func(FrameScript_Object* this)" ; FrameScript_Object::FrameScript_Object() +FrameScript_Object__destructor 00819850 f end=00819872 ; FrameScript_Object::~FrameScript_Object() +FrameScript_Object__UnregisterScriptObject 008199C0 f end=00819A58 ; FrameScript_Object::UnregisterScriptObject(char const*) +FrameScript_Object__RunScript 0081A2C0 f end=0081A2E7 ; FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*) +FrameScript_SignalEvent 0081AA00 f end=0081AB59 ; FrameScript_SignalEvent(unsigned int, lua_State*, int) +vFrameScript_SignalEvent 0081AC90 f end=0081AE4F ; vFrameScript_SignalEvent(unsigned int, char const*, char*) +FrameScript_CreateEvents 0081B5F0 f end=0081B714 ; FrameScript_CreateEvents(char const**, unsigned int) +FrameScript_GetObjectThis 004A81B0 f end=004A8235 ; FrameScript_GetObjectThis(lua_State*, int) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gx/func.sym b/profile/3.3.5a-windows-386/symbol/gx/func.sym index da79ece..0987f63 100644 --- a/profile/3.3.5a-windows-386/symbol/gx/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gx/func.sym @@ -21,3 +21,4 @@ GxBufStream 00482A20 f end=00482A3C GxScenePresent 00682A00 f end=00682A33 GxSceneClear 006813B0 f end=006813CD GxQueryCreate 00681630 f end=0068165B type="void __stdcall func(CGxQuery** query, EGxQueryType type)" +GxLogOpen 006817C0 f end=006817C5 type="void __stdcall func()" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym index fe373dd..f0e36be 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym @@ -50,8 +50,8 @@ CGxDevice__IShaderLoad 00684970 f end=00684AC8 type="int32_t __thiscall func(CGx CGxDevice__ICursorCreate 00684AD0 f end=00684B4A type="void __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__CursorUnlock 00684B50 f end=00684B99 type="void __thiscall func(CGxDevice* this, uint32_t x, uint32_t y)" CGxDevice__Log 00684C20 f end=00684C3E type="void __stdcall func(char* format, ...)" -CGxDevice__Log_CGxCaps 00684C40 f end=00684D07 type="void __stdcall func(CGxCaps* caps)" ; CGxDevice::Log(CGxCaps const&) const -CGxDevice__Log_CGxFormat 00684D10 f end=00684D6C type="void __stdcall func(CGxFormat* format)" +CGxDevice__Log 00684C40 f end=00684D07 type="void __stdcall func(CGxCaps* caps)" ; CGxDevice::Log(CGxCaps const&) const +CGxDevice__Log 00684D10 f end=00684D6C type="void __stdcall func(CGxFormat* format)" CGxDevice__DeviceOverride 00684FE0 f end=00685036 type="void __thiscall func(CGxDevice* this, EGxOverride override, uint32_t value)" CGxDevice__AddDeviceRestoredCallback 006853B0 f end=006853C6 type="void __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" CGxDevice__RemoveDeviceRestoredCallback 006853D0 f end=0068545C type="int32_t __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" @@ -87,3 +87,4 @@ CGxDevice__NewD3d 00689EF0 f end=00689F14 type="CGxDevice* __stdcall func()" CGxDevice__NewOpenGl 0068BF20 f end=0068BF44 type="CGxDevice* __stdcall func()" CGxDevice__NewD3d9Ex 0068C220 f end=0068C244 type="CGxDevice* __stdcall func()" CGxDevice__ITexWHDStartEnd 006A5EF0 f end=006A5FDF type="void __thiscall func(CGxDevice* this, CGxTex* texId, uint32_t* width, uint32_t* height, uint32_t* baseMip, uint32_t* mipCount)" +CGxDevice__LogOpen 00683670 f end=006836A4 type="void __stdcall func()" ; static void CGxDevice::LogOpen(void) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym index 6fa5e29..2943aa8 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym @@ -2,4 +2,5 @@ g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" CGxDevice__s_shadowConstants 00C5DFE0 l CGxDevice__s_uiVertexShader 00C5DFDC l -CGxDevice__s_uiPixelShader 00C5FFFC l \ No newline at end of file +CGxDevice__s_uiPixelShader 00C5FFFC l +CGxDevice__m_log 00C5FFF8 l type="HSLOG" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxu/func.sym b/profile/3.3.5a-windows-386/symbol/gxu/func.sym index a5bf001..20bacbb 100644 --- a/profile/3.3.5a-windows-386/symbol/gxu/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxu/func.sym @@ -20,4 +20,5 @@ GxuUpdateSingleColorTexture 006BFDA0 f end=006BFDFE GxuXformCreateProjection_SG 006BFE00 f end=006BFE5C GxuXformCreateLookAtSgCompat 006BFE60 f end=006C004D GxuXformCreateOrtho 006BF4C0 f end=006BF5A4 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ, C44Matrix* dst)" +GxuXformCreateOrthoDepth 006BF5B0 f end=006BF6CD IGxuFontGlyphRenderGlyph 006C8CC0 f end=006C8E6B \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index 6b4fb2d..3052ed5 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -1,8 +1,8 @@ -operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" +operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" operator_delete_array 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) CDataStore__FetchWrite 00401070 f ; protected: int __thiscall CDataStore::FetchWrite(unsigned int,unsigned int,char const *,int) CDataStore__IsRead 004010D0 f ; CDataStore::IsRead() const -CDataStore__Reset 004010E0 f ; CDataStore::Reset() +CDataStore__Reset 004010E0 f ; CDataStore::Reset() CDataStore__Finalize 00401130 f ; CDataStore::Finalize() SetPaths 00402B20 f end=00402B8B ClientKillTimer 004033B0 f end=004033B9 @@ -36,9 +36,18 @@ SFile__FileExistsEx 00424B10 f end=00424B41 SFile__OpenEx 00424B50 f end=00424E44 SFile__Load 00424E80 f end=00424F46 SFile__Open 00424F80 f end=00424F98 +Blizzard__File__Close 004270F0 f end=0042712f +Blizzard__File__Delete 00427130 f end=0042716F ; Blizzard::File::Delete(char const*) +Blizzard__File__MakeAbsolutePath 00427500 f end=00427551 ; Blizzard::File::MakeAbsolutePath(char const*, char*, int, bool) +Blizzard__File__Move 00427560 f end=004275A8 ; Blizzard::File::Move(char const*, char const*) +Blizzard__File__Open 00427600 f end=0042765E +Blizzard__File__Read 004276C0 f end=0042771F +Blizzard__File__Write 004279B0 f end=00427A12 +System_File__Stacked__file_init 0042D440 f end=0042D4F4 type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" OsCloseFile 00461B00 f end=00461B09 OsReadFile 00461B50 f end=00461B88 OsGetFileSize 00461BD0 f end=00461BF4 +OsCreateDirectory 00461D10 f end=00461D3F OsSetCurrentDirectory 00461DB0 f end=00461DD7 OsCreateFile 00461FA0 f end=00461FFA nullsub_2 0047ADD0 f @@ -67,6 +76,7 @@ CmdLineGetBool 0047B6F0 f end=0047B6FE type="int32_t __stdcall func(CMDOPT)" CmdLineGetString 0047B700 f end=0047B71D type="char* __stdcall func(CMDOPT)" CmdLineProcess 0047B720 f end=0047B736 type="int32_t __stdcall func()" j_nullsub_3 0047B760 f +ConvertUTF16toUTF8 0047B9E0 f end=0047BB9C type="int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)" HandleClose 0047BF30 f end=0047BF46 HandleCreate 0047BF50 f end=0047BF6B HandleDuplicate 0047BF70 f end=0047BF82 @@ -138,10 +148,30 @@ GxBufLock 004829D0 f end=004829E9 GxBufUnlock 004829F0 f end=00482A13 GxBufStream 00482A20 f end=00482A3C GxDraw 00482A40 f end=00482A5D +CSimpleRegion__Hide 00482C20 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleFontString__SetText 00483910 f end=00483A3D type="void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)" +CSimpleRegion__SetVertexColor 00487A10 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" +CSimpleRegion__GetVertexColor 00487AB0 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" +CSimpleRegion__HideThis 00487BF0 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__ShowThis 00487C40 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__OnRegionChanged 00487CA0 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__OnColorChanged 00487D70 f type="void __thiscall func(CSimpleRegion* this, bool a2)" +CSimpleRegion__CSimpleRegion 004880E0 f type="void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)" +CSimpleRegion__destructor 004881D0 f type="void __thiscall func(CSimpleRegion* this)" +CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" +CSimpleFontString_SetFormattedText 0048D800 f end=0048D88B type="int32_t __stdcall func(lua_State* L)" +CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" GxCapsWindowSizeInScreenCoords 00493BF0 f end=00493C09 CFrameStrata__BuildBatches 00494EE0 f end=00494F2E type="int32_t __thiscall func(CFrameStrata* this, int32_t a2)" CFrameStrata__RenderBatch 00494F30 f end=00494F89 type="void __thiscall func(CFrameStrata* this)" CSimpleTop__OnLayerRender 00495410 f end=0049546A +CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" +CBackdropGenerator__SetBorderVertexColor 004A2630 f end=004A26C1 type="void __thiscall func(CBackdropGenerator* this, CImVector* borderColor)" +CBackdropGenerator__LoadXML 004A2780 f end=004A29CB ; _CBackdropGenerator::LoadXML(linkObject*, CStatus*) +CBackdropGenerator__Generate 004A29D0 f end=004A2D34 type="void __thiscall func(CBackdropGenerator* this, CRect*)" +CBackdropGenerator__CBackdropGenerator 004A2D40 f end=004A2DF9 type="void __thiscall func(CBackdropGenerator* this)" +CBackdropGenerator__SetOutput 004A2E00 f end=004A36EE type="void __thiscall func(CBackdropGenerator* this, CSimpleFrame* a1)" +FrameScript_GetObjectThis 004A81B0 f end=004A8235 ; FrameScript_GetObjectThis(lua_State*, int) ScrnLayerSetRect 004A8500 f end=004A8522 OnPaint 004A8720 f end=004A8B58 ScrnLayerCreate 004A8BB0 f end=004A8C83 @@ -154,11 +184,11 @@ TextureFreeMippedImg 004B7300 f end=004B73D9 type="void func(MipBits* image)" LoadTgaMips 004B78A0 f end=004B7AA0 type="int32_t __usercall func@(char* ext@, char* filename, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, PIXEL_FORMAT* texFormat, int32_t* isOpaque@, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" LoadBlpMips 004B8070 f end=004B81CE type="int32_t __usercall func@(char* ext@, char* filename@, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, uint32_t* isOpaque, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" TextureLoadImage 004B81D0 f end=004B8385 type="MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)" -TextBlockGetFontPtr 004BD9D0 f end=004BD9EA -TextBlockCreate 004BDAA0 f end=004BDBE4 -TextBlockSetStringPos 004BDBF0 f end=004BDC4C -TextBlockGetWrappedTextHeight 004BDD80 f -TextBlockGenerateFont 004BE9C0 f end=004BEB8C +TextBlockGetFontPtr 004BD9D0 f end=004BD9EA type="CGxFont* __stdcall func(HTEXTFONT font)" +TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" +TextBlockSetStringPos 004BDBF0 f end=004BDC4C type="void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)" +TextBlockGetWrappedTextHeight 004BDD80 f end=004BDE39 type="float __stdcall func(HTEXTFONT fontHandle, char* text, float a3, float a4, C2Vector* a5, float a6, float a7, uint32_t flags)" +TextBlockGenerateFont 004BE9C0 f end=004BEB8C type="HTEXTFONT __stdcall func(char* fontName, uint32_t fontFlags, float fontHeight)" GxXformProjection 004BEC70 f end=004BEC88 CCamera__SetupWorldProjection 004BECF0 f end=004BEE5E CameraSetupScreenProjection 004BEE60 f end=004BF0B9 @@ -2092,11 +2122,24 @@ CursorSetMode 00616800 f end=0061682E type="void __stdcall func(CURSORMODE mode) GxXformPush_EGxXform_C44Matrix 00616AD0 f end=00616AE8 TSGrowableArray_CImVector__SetCount 00616CA0 f end=00616D07 type="void __thiscall func(TSGrowableArray_CImVector* this, uint32_t count)" nullsub_4 00632050 f +StaticDBLoadAll 006337D0 f end=0063478E ; 00005400 +ClientDBShutdown 00634C60 f end=00634CBB ; 00005400 +ClientDBInitialize 00634E00 f end=00634E62 ; ClientDBInitialize() +WowClientDB_AchievementRec__Load 00636E50 f end=006370A2 ; WowClientDB::Load(char const, int) +WowClientDB_Cfg_CategoriesRec__Load 006393A0 f end=006395ED ; WowClientDB::Load(char const, int) +WowClientDB_Cfg_ConfigsRec__Load 006395F0 f end=0063983D ; WowClientDB::Load(char const, int) +WowClientDB_CharBaseInfoRec__Load 00639840 f end=00639A8D ; WowClientDB::Load(char const, int) nullsub_5 00653A10 f +WowClientDB_AchievementRec__LoadRecords 00658D90 f end=00658E85 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB_Cfg_CategoriesRec__LoadRecords 00659910 f end=00659A03 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB_CharBaseInfoRec__LoadRecords 00659B80 f end=00659C82 ; WowClientDB::LoadRecords(SFile*, char const*, int) +WowClientDB__GetRecord 0065C290 f end=0065C2B4 ; 00005410 +WowClientDB_AchievementRec__GetRecordByIndex 0065F520 f end=0065F55B ; WowClientDB::GetRecordByIndex(int, void*) GxDevCreate 00681290 f end=00681301 GxSceneClear 006813B0 f end=006813CD GxTexUpdate 006813D0 f end=006813EC GxQueryCreate 00681630 f end=0068165B type="void __stdcall func(CGxQuery** query, EGxQueryType type)" +GxLogOpen 006817C0 f end=006817C5 type="void __stdcall func()" GxLog 006817E0 f end=006817F5 GxDrawLockedElements 00681A60 f end=00681AAB type="void __stdcall func()" GxPrimIndexPtr 00681AB0 f end=00681AFB type="void __stdcall func(uint32_t indexCount, uint16_t* indices)" @@ -2139,6 +2182,7 @@ CGxDevice__ICursorUpdate 00683610 f end=00683632 type="void __stdcall func(EGxTe CGxDevice__CursorSetVisible 00683640 f end=00683650 type="void __thiscall func(CGxDevice* this, int32_t visible)" CGxDevice__CursorLock 00683650 f end=00683657 type="uint32_t* __thiscall func(CGxDevice* this)" CGxDevice__CursorSetDepth 00683660 f end=00683670 type="void __thiscall func(CGxDevice* this, float depth)" +CGxDevice__LogOpen 00683670 f end=006836A4 type="void __stdcall func()" ; static void CGxDevice::LogOpen(void) CGxDevice__DeviceSetFormat 006840F0 f end=0068416C type="int32_t __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__DeviceSetGamma 00684170 f end=00684189 type="void __thiscall func(CGxDevice* this, float gamma)" CGxDevice__DeviceSetGamma 00684190 f end=006841AF type="int32_t __thiscall func(CGxDevice* this, CGxGammaRamp* ramp)" @@ -2159,8 +2203,8 @@ CGxDevice__IShaderLoad 00684970 f end=00684AC8 type="int32_t __thiscall func(CGx CGxDevice__ICursorCreate 00684AD0 f end=00684B4A type="void __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__CursorUnlock 00684B50 f end=00684B99 type="void __thiscall func(CGxDevice* this, uint32_t x, uint32_t y)" CGxDevice__Log 00684C20 f end=00684C3E type="void __stdcall func(char* format, ...)" -CGxDevice__Log_CGxCaps 00684C40 f end=00684D07 type="void __stdcall func(CGxCaps* caps)" ; CGxDevice::Log(CGxCaps const&) const -CGxDevice__Log_CGxFormat 00684D10 f end=00684D6C type="void __stdcall func(CGxFormat* format)" +CGxDevice__Log 00684C40 f end=00684D07 type="void __stdcall func(CGxCaps* caps)" ; CGxDevice::Log(CGxCaps const&) const +CGxDevice__Log 00684D10 f end=00684D6C type="void __stdcall func(CGxFormat* format)" CGxDevice__DeviceOverride 00684FE0 f end=00685036 type="void __thiscall func(CGxDevice* this, EGxOverride override, uint32_t value)" CGxDevice__AddDeviceRestoredCallback 006853B0 f end=006853C6 type="void __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" CGxDevice__RemoveDeviceRestoredCallback 006853D0 f end=0068545C type="int32_t __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" @@ -2380,6 +2424,7 @@ GxuFontUpdate 006BE3E0 f end=006BEE87 GxuFontCreateBatch 006BF160 f end=006BF202 GxuXformCreateProjection_Exact 006BF370 f end=006BF4B2 GxuXformCreateOrtho 006BF4C0 f end=006BF5A4 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ, C44Matrix* dst)" +GxuXformCreateOrthoDepth 006BF5B0 f end=006BF6CD GxuXformCalcFrustumCorners 006BF6D0 f end=006BFB60 GxuUpdateSingleColorTexture 006BFDA0 f end=006BFDFE GxuXformCreateProjection_SG 006BFE00 f end=006BFE5C @@ -2398,48 +2443,79 @@ Script_CombatLogSetCurrentEntry 0074FAE0 f end=0074FC20 Script_CombatLogAdvanceEntry 0074FC20 f end=0074FD36 Script_CombatLogAddFilter 0074FF70 f end=00750206 Script_CombatLogClearEntries 00751120 f end=0075114B -SetInputString 00763730 f end=007637CD ; UC -ReserveInputSpace 007637D0 f end=0076382B -ResetHighlight 00763830 f end=00763855 -UpdateHighlight 00763860 f end=00763996 -OnMouseUp 007639A0 f end=007639CF -OnMouseMove 007639D0 f end=00763A54 -MakeCommandCurrent 00763A60 f end=00763AAA -ConsoleCommandHistoryPrev 00763B40 f end=00763B83 ; UC -ConsoleCommandHistoryNext 00763B90 f end=00763BD6 ; UC -OnKeyUp 00763BE0 f end=00763C0A -ConsolePostClose 00763C50 f end=00763C5D -EventCloseCallback 00763D60 f end=00763D71 -DrawBackground 00763DF0 f end=00764039 -DrawHighLight 00764040 f end=00764196 -DrawCaret 007641A0 f end=007643EA -PaintBackground 007643F0 f end=00764413 -GetInputLine 00764520 f end=007645D3 -PaintText 007645E0 f end=00764788 -PasteInInputLine 00764800 f end=00764985 -OnChar 00764990 f end=00764A03 -s_active 007649af l ; int32 as boolean -OnMouseDown 00764A10 f end=00764B88 -OnKeyDownRepeat 00764B90 f end=00764E4F -ConsoleWrite 00765270 f end=00765359 -ConsoleWriteA 007653B0 f end=00765400 -ConsoleCommandExecute 007658A0 f end=007659BF -OnIdle 007659C0 f end=00765AE5 -OnKeyDown 00765AF0 f end=00765FB2 -RegisterHandlers 00765FF0 f end=007660C2 -ConsoleScreenInitialize 00766140 f end=00766295 -CVarLoadFile 00766530 f end=007665C2 -CVar__Set 007668C0 f end=00766936 -CVarSaveFile 00767100 f end=0076719C -CVar__Destroy 007673F0 f end=00767434 -CVar__Register 00767FC0 f end=007681E9 -CVar__Initialize 00768340 f end=00768402 -ConsoleCommand_Quit 00768410 f end=0076841B -ConsoleCommandHistory 00768440 f end=0076845B -ConsoleCommandUnregister 007689E0 f end=00768A19 -ConsoleCommandRegister 00769100 f end=007691B3 -ConsoleAccessGetEnabled 00769230 f end=00769236 -ConsoleDeviceInitialize 0076AB80 f end=0076B287 +GenerateNodeString 00763680 f end=0076372C type="void __stdcall func(CONSOLELINE* node)" +SetInputString 00763730 f end=007637CD type="void __stdcall func(char* text)" ; UC +ReserveInputSpace 007637D0 f end=0076382B type="void __fastcall func(CONSOLELINE* lineptr, uint32_t chars)" +ResetHighlight 00763830 f end=00763855 type="void __stdcall func()" +UpdateHighlight 00763860 f end=00763996 type="void __stdcall func()" +OnMouseUp 007639A0 f end=007639CF type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +OnMouseMove 007639D0 f end=00763A54 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +MakeCommandCurrent 00763A60 f end=00763AAA type="void __stdcall func(CONSOLELINE* lineptr@, char* command)" +CONSOLELINE__Backspace 00763AB0 f end=00763B08 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Backspace() +CONSOLELINE__Delete 00763B10 f end=00763B40 type="void __thiscall func(CONSOLELINE* this)" ; void CONSOLELINE::Delete() +CONSOLELINE__Up 00763B40 f end=00763B83 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Up() +CONSOLELINE__Down 00763B90 f end=00763BD6 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Down() +OnKeyUp 00763BE0 f end=00763C0A type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +ConsolePostClose 00763C50 f end=00763C5D type="void __stdcall func()" +EventCloseCallback 00763D60 f end=00763D71 type="int32_t __stdcall func(void* param)" +DrawBackground 00763DF0 f end=00764039 type="void __stdcall func()" +DrawHighLight 00764040 f end=00764196 type="void __stdcall func()" +DrawCaret 007641A0 f end=007643EA type="void ___stdcall func(C3Vector* caretpos)" +PaintBackground 007643F0 f end=00764413 type="void __stdcall func()" +EnforceMaxLines 007644B0 f end=0076451C +GetInputLine 00764520 f end=007645D3 type="CONSOLELINE* __stdcall func()" +PaintText 007645E0 f end=00764788 type="void __stdcall func(void* param, RECTF* rect, RECTF* visible, float elapsedSec)" +GetLineAtMousePosition 00764790 f end=007647F5 type="CONSOLELINE* __stdcall func(float y)" +PasteInInputLine 00764800 f end=00764985 type="void __stdcall func(char* characters)" +OnChar 00764990 f end=00764A03 type="int32_t __stdcall func(EVENT_DATA_CHAR* data, void* param)" +OnMouseDown 00764A10 f end=00764B88 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" +OnKeyDownRepeat 00764B90 f end=00764E4F type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +ConsoleWrite 00765270 f end=00765359 type="void __stdcall func(char* str, COLOR_T color)" +ConsoleWriteA 007653B0 f end=00765400 type="void __stdcall func(char* str, COLOR_T color, ...)" +ConsoleCommandExecute 007658A0 f end=007659BF type="void __stdcall func(char* commandLine, int32_t addToHistory)" +OnIdle 007659C0 f end=00765AE5 type="int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)" +OnKeyDown 00765AF0 f end=00765FB2 type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +RegisterHandlers 00765FF0 f end=007660C2 type="void __stdcall func()" +ConsoleScreenInitialize 00766140 f end=00766295 type="void __stdcall func()" +CVar__Load 00766400 f end=0076652C type="int32_t __stdcall func(HOSFILE file)" +CVar__Load 00766530 f end=007665C2 type="int32_t __stdcall func(char* filename)" +CVar__SaveCvar 00766640 f end=007666A1 type="bool __stdcall func(char* name, char* value, void* param)" +CVar__Set 007668C0 f end=00766936 type="bool __thiscall func(CVar* this, char* value, bool setValue, bool setReset, bool setDefault, bool a6)" +CVar__IterateForArchive 00767030 f end=007670DA type="int32_t __stdcall func(uint32_t a1, uint32_t a2, void* callback, void* param)" +CVarSaveFile 00767100 f end=0076719C type="void __stdcall func()" +CVar__Destroy 007673F0 f end=00767434 type="void __stdcall func()" +CVar__Register 00767FC0 f end=007681E9 type="CVar* __stdcall func(char* name, char* help, uint32_t flags, const char* value, void* fcn, uint32_t category, bool a7, void* arg, bool a9)" +CVar__Initialize 00768340 f end=00768402 type="void __stdcall func(char* filename)" +ConsoleCommand_Quit 00768410 f end=0076841B type="int32_t __stdcall func(char* command, char* arguments)" +ConsoleCommandHistory 00768440 f end=0076845B type="char* __stdcall func(uint32_t index)" +ConsoleCommandUnregister 007689E0 f end=00768A19 type="void __stdcall func(char* command)" +ConsoleCommandComplete 00768A20 f end=00768AD6 type="int32_t __stdcall func(char* partial, char** previous, int32_t direction)" +ConsoleCommandRegister 00769100 f end=007691B3 type="int32_t __stdcall func(char* command, COMMANDHANDLER handler, CATEGORY category, char* helpText)" +ConsoleAccessGetEnabled 00769230 f end=00769236 type="int32_t __stdcall func()" +CVGxColorBitsCallback 00769240 f end=007692CF type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxDepthBitsCallback 007692D0 f end=0076935F type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxTripleBufferCallback 00769360 f end=007693AB type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxApiCallback 007693B0 f end=00769513 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxVSyncCallback 00769520 f end=00769544 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxWindowCallback 00769550 f end=0076957A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxAspectCallback 00769580 f end=007695AA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaximizeCallback 007695B0 f end=007695DA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxCursorCallback 007695E0 f end=0076960A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMultisampleCallback 00769610 f end=0076964A type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMultisampleQualityCallback 00769650 f end=00769693 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxFixLagCallback 007696A0 f end=007696CA type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxOverrideCallback 00769810 f end=00769823 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaxFPSCallback 00769830 f end=00769856 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxMaxFPSBkCallback 00769860 f end=00769886 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxWindowResizeLockCallback 00769890 f end=007698A9 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +SetGxCVars 00769950 f end=00769BF5 +CVGxStereoEnabledCallback 00769C00 f end=00769C2B type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxResolutionCallback 0076A220 f end=0076A57F type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +CVGxRefreshCallback 0076A580 f end=0076A62D type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" +RegisterGxCVars 0076A630 f end=0076AAA8 +ConsoleDeviceInitialize 0076AB80 f end=0076B287 type="int32_t __stdcall func(char* title, int32_t multithreaded)" +ConsoleDetectSaveHardware 0076B620 f end=0076B7DB +ConsoleDetectDetectHardware 0076BA30 f end=0076BBE9 SMemSetDebugFlags 0076E4A0 f end=0076E4D2 type="void __stdcall func(uint32_t flags, uint8_t changeMask)" SMemAlloc 0076E540 f end=0076E59A type="void* __stdcall func(uint32_t bytes, char* filename, int32_t linenumber, uint32_t flags)" SMemFree 0076E5A0 f end=0076E5C4 type="int32_t __stdcall func(void* ptr, char* filename, int32_t linenumber, uint32_t flags)" @@ -2448,13 +2524,25 @@ SStrChr 0076E6E0 f end=0076E712 SStrChrR 0076E720 f end=0076E756 SStrCmp 0076E760 f end=0076E77B SStrCmpI 0076E780 f end=0076E79B +SStrCmpUTF8I 0076EA40 f end=0076EAA3 SStrCopy 0076ED20 f end=0076ED98 -SStrLen 0076EE30 f end=0076EE5E +SStrLen 0076EE30 f end=0076EE5E type="int32_t __stdcall func(char* str)" SStrPack 0076EF70 f end=0076F001 +ISStrVPrintf 0076F010 f end=0076F063 SStrPrintf 0076F070 f end=0076F09E type="int32_t __stdcall func(char* dest, size_t maxchars, char* format, ...)" SStrVPrintf 0076F0A0 f end=0076F0CE +SStrToInt 0076F0D0 f end=0076F136 +SStrToUnsigned 0076F140 f end=0076F189 SStrTokenize 0076F1E0 f end=0076F331 +SStrHash 0076F340 f end=0076F418 SStrHashHT 0076F640 f end=0076F6B9 +SStrUpper 0076F6C0 f end=0076F6D3 +SStrLower 0076F6E0 f end=0076F6F3 +SStrStr 0076F700 f end=0076F762 +SStrCmp 0076F770 f end=0076F7D2 +SStrStrUTF8I 0076F7E0 f end=0076F852 +SStrDupA 0076F9E0 f end=0076FA35 +SStrToFloat 0076FB80 f end=0076FDA9 SRegLoadValue 00770840 f end=007708E9 SRegSaveValue 007709A0 f end=007709E8 SErrSetLastError 00771870 f end=00771886 @@ -2475,17 +2563,18 @@ CSRWLock__Leave 00774660 f end=00774675 SSyncObject__Wait 00774690 f end=007746A4 SEvent__Set 00774720 f end=0077472A SEvent__Reset 00774730 f end=0077473A +SLogCreate 007757E0 f end=007758D6 type="int32_t __stdcall func(char* filename, uint32_t flags, HSLOG* log)" SRgnCombineRectf 00777420 f end=00777588 type="void __stdcall func(HSRGN handle, RECTF* rect, void* param, int32_t combinemode)" SRgnGetBoundingRectf 00777590 f end=00777897 type="void __stdcall func(HSRGN handle, RECTF* rect)" SRgnDelete 00777940 f end=00777971 type="void __stdcall func(HSRGN handle)" SRgnCreate 00777980 f end=00777A78 type="void __stdcall func(HSRGN* handlePtr, uint32_t reserved)" TSFixedArray_uint32_t_Set 0077AC80 f end=0077ACE4 type="void __thiscall func(TSFixedArray_uint32_t* this, uint32_t count, uint32_t* data)" -BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const +BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const Compare 0077AD10 f end=0077ADC5 type="int32_t __fastcall func(BigBuffer* a, BigBuffer* b)" HighBitPos 0077ADD0 f end=0077AE5A type="uint32_t __stdcall func(BigBuffer* a)" SBigCompare 0077AE60 f end=0077AE77 type="int32_t __stdcall func(BigData* b, BigData* c)" BigStack__destructor 0077AE80 f end=0077AEB1 type="void __thiscall func(BigStack* this)" ; public: __thiscall BigStack::~BigStack(void) -BigBuffer__operator_index 0077AEC0 f end=0077AF2D type="uint32_t* __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const +BigBuffer__operator_index 0077AEC0 f end=0077AF2D type="uint32_t* __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const BigBuffer__SetCount 0077AF30 f end=0077AF7C type="void __thiscall func(BigBuffer* this, uint32_t count)" BigBuffer__Trim 0077AF80 f end=0077AFE3 type="void __thiscall func(BigBuffer* this)" ; public: void __thiscall BigBuffer::Trim(void)const BigStack__BigStack 0077AFF0 f end=0077B01F type="void __thiscall func(BigBuffer* this)" @@ -2499,7 +2588,7 @@ Shr 0077B700 f end=0077B7E8 type="void __stdcall func(BigBuffer* a, BigBuffer* b FromBinary 0077B7F0 f end=0077B8AD type="void __stdcall func(BigBuffer* buffer@, void* data, uint32_t bytes)" ; void FromBinary(class BigBuffer &,void const *,unsigned int) FromUnsigned 0077B8B0 f end=0077B90B type="void __stdcall func(BigBuffer* buffer@, uint32_t value)" ; void FromUnsigned(class BigBuffer &,unsigned int) ToBinaryAppend 0077B910 f end=0077B9DC type="void __stdcall func(TSGrowableArray_uint8_t* output, BigBuffer* buffer)" ; _ToBinaryAppend(TSGrowableArray&, BigBuffer const&) -SBigAdd 0077B9E0 f end=0077B9FC type="void __stdcall func(BigData* a, BigData* b, BigData* c)" +SBigAdd 0077B9E0 f end=0077B9FC type="void __stdcall func(BigData* a, BigData* b, BigData* c)" SBigBitLen 0077BA00 f end=0077BA52 type="void __stdcall func(BigData* a, uint32_t* bits)" SBigFromBinary 0077BA60 f end=0077BA7C type="void __stdcall func(BigData* num, void* data, uint32_t bytes)" SBigFromUnsigned 0077BA80 f end=0077BA98 type="void __stdcall func(BigData* num, uint32_t val)" @@ -2540,8 +2629,18 @@ Script_CancelUnitBuff 00804220 f end=00804420 Script_SpellStopTargeting 00809E30 f end=00809E96 Script_SpellStopCasting 00809EA0 f end=00809F7E Script_SpellTargetUnit 0080DC00 f end=0080DCE3 +FrameScript_Object__CreateScriptMetaTable 00816790 f end=008167D3 ; FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*)) +FrameScript_Object__FillScriptMethodTable 008167E0 f end=00816822 ; FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int) +FrameScript_Sprintf 00818070 f end=0081839F type="void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)" ; startIndex is the index of starting argument on stack +FrameScript_Object__FrameScript_Object 00819830 f end=0081984B type="void __thiscall func(FrameScript_Object* this)" ; FrameScript_Object::FrameScript_Object() +FrameScript_Object__destructor 00819850 f end=00819872 ; FrameScript_Object::~FrameScript_Object() +FrameScript_Object__UnregisterScriptObject 008199C0 f end=00819A58 ; FrameScript_Object::UnregisterScriptObject(char const*) FrameScript_Execute 00819EA0 f end=0081A2B5 type="void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)" -FrameScript_SignalEvent 0081B530 f end=0081B549 +FrameScript_Object__RunScript 0081A2C0 f end=0081A2E7 ; FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*) +FrameScript_SignalEvent 0081AA00 f end=0081AB59 ; FrameScript_SignalEvent(unsigned int, lua_State*, int) +vFrameScript_SignalEvent 0081AC90 f end=0081AE4F ; vFrameScript_SignalEvent(unsigned int, char const*, char*) +FrameScript_SignalEvent 0081B530 f end=0081B549 ; FrameScript_SignalEvent(unsigned int, char const*, ...) +FrameScript_CreateEvents 0081B5F0 f end=0081B714 ; FrameScript_CreateEvents(char const**, unsigned int) Script_GetText 0081B720 f end=0081B7AF Script_CreateFont 0081B7B0 f end=0081B81E Script_GetCurrentKeyBoardFocus 0081B820 f end=0081B86C @@ -2572,7 +2671,7 @@ _luaD_precall 00856370 f luaD_call 00856760 f _luaV_execute 00857CA0 f RestoreMouse 008695B0 f end=008695FB -OsInputInitialize 00869720 f end=00869757 ; actually called by IEvtInputInitialize, but this is optimized out +OsInputInitialize 00869720 f end=00869757 OsInputDestroy 00869760 f end=008697D3 OsInputSetEventPollProc 00869D90 f end=00869D9D CenterMouse 00869DB0 f end=00869DF6 @@ -2583,7 +2682,7 @@ OsInputSetMousePosition 0086A130 f end=0086A194 OsGetDefaultWindowRect 0086A1A0 f end=0086A20C OsGetAsyncTimeMs 0086AE20 f end=0086AE2B OsSystemEnableCpuLog 0086B0C0 f end=0086B0CB -OsGetProcessorCount 0086B240 f end=0086B27D +OsGetProcessorCount 0086B240 f end=0086B27D OsGetExeName 0086BBD0 f end=0086BC2F OsPathGetRootChars 0086BC30 f end=0086BC9E OsPathStripFilename 0086BE50 f end=0086BE9B @@ -2595,9 +2694,14 @@ TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall OsCallSetContext 0086F5A0 f end=0086F5EA OsCallInitialize 0086F760 f end=0086F875 OsCallInitializeContext 0086F880 f end=0086F902 +OsClipboardGetString 00872280 f end=00872297 OsClipboardPutString 008722A0 f end=008722BF +InternalClipboardGetString 008726F0 f end=008727BB +InternalClipboardPutString 008727E0 f end=008728B8 +CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 +CVGxVideoOptionsVersionCallback 008A1420 f end=008A1423 type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" return_zero4_sub 008E5250 f end=008E5253 ; Script_ToggleTris -ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 +ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 type="int32_t __stdcall func()" CDataRecycler__Clear 0095CEC0 f end=0095CF39 CDataRecycler__GetData 0095CF40 f end=0095CFAE CDataRecycler__PutData 0095CFB0 f end=0095D077 @@ -2816,21 +2920,261 @@ nullsub_147 009DE1A0 f nullsub_148 009DE1B0 f nullsub_149 009DE1C0 f nullsub_150 009DE1D0 f +firstByteMark 009e9ec8 l type="uint32_t[7]" s_pixelFormatToMipBitsCache 009F1074 l CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" CGxDeviceOpenGl__vtable 00A2E198 l CGxDeviceD3d__vtable 00a2e718 l CGxDeviceD3d9Ex__vtable 00a2f500 l +System_File__Stacked__s_manager 00AB90AC l type="Blizzard__File__Filesystem*" s_zorderlist 00AC1B9C f type="TSExplicitList_CILayer" s_cursorNames 00AD2808 l type="char*[53]" +g_achievementDB 00AD305C l type="WowClientDB_AchievementRec" ; 0xEB +g_achievement_CriteriaDB 00AD3080 l type="WowClientDB_Achievement_CriteriaRec" ; 0xEC +g_achievement_CategoryDB 00AD30A4 l type="WowClientDB_Achievement_CategoryRec" ; 0xED +g_animationDataDB 00AD30C8 l type="WowClientDB_AnimationDataRec" ; 0xEE +g_areaGroupDB 00AD30EC l type="WowClientDB_AreaGroupRec" ; 0xEF +g_areaPOIDB 00AD3110 l type="WowClientDB_AreaPOIRec" ; 0xF0 +g_areaTableDB 00AD3134 l type="WowClientDB_AreaTableRec" ; 0xF1 +g_areaTriggerDB 00AD3158 l type="WowClientDB_AreaTriggerRec" ; 0xF2 +g_attackAnimKitsDB 00AD317C l type="WowClientDB_AttackAnimKitsRec" ; 0xF3 +g_attackAnimTypesDB 00AD31A0 l type="WowClientDB_AttackAnimTypesRec" ; 0xF4 +g_auctionHouseDB 00AD31C4 l type="WowClientDB_AuctionHouseRec" ; 0xF5 +g_bankBagSlotPricesDB 00AD31E8 l type="WowClientDB_BankBagSlotPricesRec" ; 0xF6 +g_bannedAddOnsDB 00AD320C l type="WowClientDB_BannedAddOnsRec" ; 0xF7 +g_barberShopStyleDB 00AD3230 l type="WowClientDB_BarberShopStyleRec" ; 0xF8 +g_battlemasterListDB 00AD3254 l type="WowClientDB_BattlemasterListRec" ; 0xF9 +g_cameraShakesDB 00AD3278 l type="WowClientDB_CameraShakesRec" ; 0xFA +g_cfg_CategoriesDB 00AD329C l type="WowClientDB_Cfg_CategoriesRec" ; 0xFB +g_cfg_ConfigsDB 00AD32C0 l type="WowClientDB_Cfg_ConfigsRec" ; 0xFC +g_charBaseInfoDB 00AD32E4 l type="WowClientDB_CharBaseInfoRec" ; 0xFD +g_charHairGeosetsDB 00AD3308 l type="WowClientDB_CharHairGeosetsRec" ; 0xFE +g_charSectionsDB 00AD332C l type="WowClientDB_CharSectionsRec" ; 0xFF +g_charStartOutfitDB 00AD3350 l type="WowClientDB_CharStartOutfitRec" ; 0x100 +g_charTitlesDB 00AD3374 l type="WowClientDB_CharTitlesRec" ; 0x101 +g_characterFacialHairStylesDB 00AD3398 l type="WowClientDB_CharacterFacialHairStylesRec" ; 0x102 +g_chatChannelsDB 00AD33BC l type="WowClientDB_ChatChannelsRec" ; 0x103 +g_chatProfanityDB 00AD33E0 l type="WowClientDB_ChatProfanityRec" ; 0x104 +g_chrClassesDB 00AD3404 l type="WowClientDB_ChrClassesRec" ; 0x105 +g_chrRacesDB 00AD3428 l type="WowClientDB_ChrRacesRec" ; 0x106 +g_cinematicCameraDB 00AD344C l type="WowClientDB_CinematicCameraRec" ; 0x107 +g_cinematicSequencesDB 00AD3470 l type="WowClientDB_CinematicSequencesRec" ; 0x108 +g_creatureDisplayInfoExtraDB 00AD3494 l type="WowClientDB_CreatureDisplayInfoExtraRec" ; 0x10A +g_creatureDisplayInfoDB 00AD34B8 l type="WowClientDB_CreatureDisplayInfoRec" ; 0x109 +g_creatureFamilyDB 00AD34DC l type="WowClientDB_CreatureFamilyRec" ; 0x10B +g_creatureModelDataDB 00AD3500 l type="WowClientDB_CreatureModelDataRec" ; 0x10C +g_creatureMovementInfoDB 00AD3524 l type="WowClientDB_CreatureMovementInfoRec" ; 0x10D +g_creatureSoundDataDB 00AD3548 l type="WowClientDB_CreatureSoundDataRec" ; 0x10E +g_creatureSpellDataDB 00AD356C l type="WowClientDB_CreatureSpellDataRec" ; 0x10F +g_creatureTypeDB 00AD3590 l type="WowClientDB_CreatureTypeRec" ; 0x110 +g_currencyTypesDB 00AD35B4 l type="WowClientDB_CurrencyTypesRec" ; 0x111 +g_currencyCategoryDB 00AD35D8 l type="WowClientDB_CurrencyCategoryRec" ; 0x112 +g_danceMovesDB 00AD35FC l type="WowClientDB_DanceMovesRec" ; 0x113 +g_deathThudLookupsDB 00AD3620 l type="WowClientDB_DeathThudLookupsRec" ; 0x114 +g_destructibleModelDataDB 00AD368C l type="WowClientDB_DestructibleModelDataRec" ; 0x115 +g_dungeonEncounterDB 00AD36B0 l type="WowClientDB_DungeonEncounterRec" ; 0x116 +g_dungeonMapDB 00AD36D4 l type="WowClientDB_DungeonMapRec" ; 0x117 +g_dungeonMapChunkDB 00AD36F8 l type="WowClientDB_DungeonMapChunkRec" ; 0x118 +g_durabilityCostsDB 00AD371C l type="WowClientDB_DurabilityCostsRec" ; 0x119 +g_durabilityQualityDB 00AD3740 l type="WowClientDB_DurabilityQualityRec" ; 0x11A +g_emotesDB 00AD3764 l type="WowClientDB_EmotesRec" ; 0x11B +g_emotesTextDataDB 00AD3788 l type="WowClientDB_EmotesTextDataRec" ; 0x11D +g_emotesTextSoundDB 00AD37AC l type="WowClientDB_EmotesTextSoundRec" ; 0x11E +g_emotesTextDB 00AD37D0 l type="WowClientDB_EmotesTextRec" ; 0x11C +g_environmentalDamageDB 00AD37F4 l type="WowClientDB_EnvironmentalDamageRec" ; 0x11F +g_exhaustionDB 00AD3818 l type="WowClientDB_ExhaustionRec" ; 0x120 +g_factionGroupDB 00AD383C l type="WowClientDB_FactionGroupRec" ; 0x122 +g_factionDB 00AD3860 l type="WowClientDB_FactionRec" ; 0x121 +g_factionTemplateDB 00AD3884 l type="WowClientDB_FactionTemplateRec" ; 0x123 +g_fileDataDB 00AD38A8 l type="WowClientDB_FileDataRec" ; 0x124 +g_footprintTexturesDB 00AD38CC l type="WowClientDB_FootprintTexturesRec" ; 0x125 +g_footstepTerrainLookupDB 00AD38F0 l type="WowClientDB_FootstepTerrainLookupRec" ; 0x126 +g_gameObjectArtKitDB 00AD3914 l type="WowClientDB_GameObjectArtKitRec" ; 0x127 +g_gameObjectDisplayInfoDB 00AD3938 l type="WowClientDB_GameObjectDisplayInfoRec" ; 0x128 +g_gameTablesDB 00AD395C l type="WowClientDB_GameTablesRec" ; 0x129 +g_gameTipsDB 00AD3980 l type="WowClientDB_GameTipsRec" ; 0x12A +g_gemPropertiesDB 00AD39A4 l type="WowClientDB_GemPropertiesRec" ; 0x12B +g_glyphPropertiesDB 00AD39C8 l type="WowClientDB_GlyphPropertiesRec" ; 0x12C +g_glyphSlotDB 00AD39EC l type="WowClientDB_GlyphSlotRec" ; 0x12D +g_gMSurveyAnswersDB 00AD3A10 l type="WowClientDB_GMSurveyAnswersRec" ; 0x12E +g_gMSurveyCurrentSurveyDB 00AD3A34 l type="WowClientDB_GMSurveyCurrentSurveyRec" ; 0x12F +g_gMSurveyQuestionsDB 00AD3A58 l type="WowClientDB_GMSurveyQuestionsRec" ; 0x130 +g_gMSurveySurveysDB 00AD3A7C l type="WowClientDB_GMSurveySurveysRec" ; 0x131 +g_gMTicketCategoryDB 00AD3AA0 l type="WowClientDB_GMTicketCategoryRec" ; 0x132 +g_groundEffectDoodadDB 00AD3AC4 l type="WowClientDB_GroundEffectDoodadRec" ; 0x133 +g_groundEffectTextureDB 00AD3AE8 l type="WowClientDB_GroundEffectTextureRec" ; 0x134 +g_gtBarberShopCostBaseDB 00AD3B0C l type="WowClientDB_gtBarberShopCostBaseRec" ; 0x135 +g_gtCombatRatingsDB 00AD3B30 l type="WowClientDB_gtCombatRatingsRec" ; 0x136 +g_gtChanceToMeleeCritDB 00AD3B54 l type="WowClientDB_gtChanceToMeleeCritRec" ; 0x137 +g_gtChanceToMeleeCritBaseDB 00AD3B78 l type="WowClientDB_gtChanceToMeleeCritBaseRec" ; 0x138 +g_gtChanceToSpellCritDB 00AD3B9C l type="WowClientDB_gtChanceToSpellCritRec" ; 0x139 +g_gtChanceToSpellCritBaseDB 00AD3BC0 l type="WowClientDB_gtChanceToSpellCritBaseRec" ; 0x13A +g_gtNPCManaCostScalerDB 00AD3BE4 l type="WowClientDB_gtNPCManaCostScalerRec" ; 0x13B +g_gtOCTClassCombatRatingScalarDB 00AD3C08 l type="WowClientDB_gtOCTClassCombatRatingScalarRec" ; 0x13C +g_gtOCTRegenHPDB 00AD3C2C l type="WowClientDB_gtOCTRegenHPRec" ; 0x13D +g_gtOCTRegenMPDB 00AD3C50 l type="WowClientDB_gtOCTRegenMPRec" ; 0x13E +g_gtRegenHPPerSptDB 00AD3C74 l type="WowClientDB_gtRegenHPPerSptRec" ; 0x13F +g_gtRegenMPPerSptDB 00AD3C98 l type="WowClientDB_gtRegenMPPerSptRec" ; 0x140 +g_helmetGeosetVisDataDB 00AD3CBC l type="WowClientDB_HelmetGeosetVisDataRec" ; 0x141 +g_holidayDescriptionsDB 00AD3CE0 l type="WowClientDB_HolidayDescriptionsRec" ; 0x142 +g_holidayNamesDB 00AD3D04 l type="WowClientDB_HolidayNamesRec" ; 0x143 +g_holidaysDB 00AD3D28 l type="WowClientDB_HolidaysRec" ; 0x144 +g_itemDB 00AD3D4C l type="WowClientDB_ItemRec" ; 0x145 +g_itemBagFamilyDB 00AD3D70 l type="WowClientDB_ItemBagFamilyRec" ; 0x146 +g_itemClassDB 00AD3D94 l type="WowClientDB_ItemClassRec" ; 0x147 +g_itemCondExtCostsDB 00AD3DB8 l type="WowClientDB_ItemCondExtCostsRec" ; 0x148 +g_itemDisplayInfoDB 00AD3DDC l type="WowClientDB_ItemDisplayInfoRec" ; 0x149 +g_itemExtendedCostDB 00AD3E00 l type="WowClientDB_ItemExtendedCostRec" ; 0x14A +g_itemGroupSoundsDB 00AD3E24 l type="WowClientDB_ItemGroupSoundsRec" ; 0x14B +g_itemLimitCategoryDB 00AD3E48 l type="WowClientDB_ItemLimitCategoryRec" ; 0x14C +g_itemPetFoodDB 00AD3E6C l type="WowClientDB_ItemPetFoodRec" ; 0x14D +g_itemPurchaseGroupDB 00AD3E90 l type="WowClientDB_ItemPurchaseGroupRec" ; 0x14E +g_itemRandomPropertiesDB 00AD3EB4 l type="WowClientDB_ItemRandomPropertiesRec" ; 0x14F +g_itemRandomSuffixDB 00AD3ED8 l type="WowClientDB_ItemRandomSuffixRec" ; 0x150 +g_itemSetDB 00AD3EFC l type="WowClientDB_ItemSetRec" ; 0x151 +g_itemSubClassMaskDB 00AD3F20 l type="WowClientDB_ItemSubClassMaskRec" ; 0x153 +g_itemSubClassDB 00AD3F44 l type="WowClientDB_ItemSubClassRec" ; 0x152 +g_itemVisualEffectsDB 00AD3F68 l type="WowClientDB_ItemVisualEffectsRec" ; 0x154 +g_itemVisualsDB 00AD3F8C l type="WowClientDB_ItemVisualsRec" ; 0x155 +g_languageWordsDB 00AD3FB0 l type="WowClientDB_LanguageWordsRec" ; 0x156 +g_languagesDB 00AD3FD4 l type="WowClientDB_LanguagesRec" ; 0x157 +g_lfgDungeonExpansionDB 00AD3FF8 l type="WowClientDB_LfgDungeonExpansionRec" ; 0x158 +g_lfgDungeonGroupDB 00AD401C l type="WowClientDB_LfgDungeonGroupRec" ; 0x159 +g_lfgDungeonsDB 00AD4040 l type="WowClientDB_LfgDungeonsRec" ; 0x15A +g_liquidTypeDB 00AD4064 l type="WowClientDB_LiquidTypeRec" ; 0x160 +g_liquidMaterialDB 00AD4088 l type="WowClientDB_LiquidMaterialRec" ; 0x161 +g_loadingScreensDB 00AD40AC l type="WowClientDB_LoadingScreensRec" ; 0x162 +g_loadingScreenTaxiSplinesDB 00AD40D0 l type="WowClientDB_LoadingScreenTaxiSplinesRec" ; 0x163 +g_lockDB 00AD40F4 l type="WowClientDB_LockRec" ; 0x164 +g_lockTypeDB 00AD4118 l type="WowClientDB_LockTypeRec" ; 0x165 +g_mailTemplateDB 00AD413C l type="WowClientDB_MailTemplateRec" ; 0x166 +g_mapDB 00AD4160 l type="WowClientDB_MapRec" ; 0x167 +g_mapDifficultyDB 00AD4184 l type="WowClientDB_MapDifficultyRec" ; 0x168 +g_materialDB 00AD41A8 l type="WowClientDB_MaterialRec" ; 0x169 +g_movieDB 00AD41CC l type="WowClientDB_MovieRec" ; 0x16A +g_movieFileDataDB 00AD41F0 l type="WowClientDB_MovieFileDataRec" ; 0x16B +g_movieVariationDB 00AD4214 l type="WowClientDB_MovieVariationRec" ; 0x16C +g_nameGenDB 00AD4238 l type="WowClientDB_NameGenRec" ; 0x16D +g_nPCSoundsDB 00AD425C l type="WowClientDB_NPCSoundsRec" ; 0x16E +g_namesProfanityDB 00AD4280 l type="WowClientDB_NamesProfanityRec" ; 0x16F +g_namesReservedDB 00AD42A4 l type="WowClientDB_NamesReservedRec" ; 0x170 +g_overrideSpellDataDB 00AD42C8 l type="WowClientDB_OverrideSpellDataRec" ; 0x171 +g_packageDB 00AD42EC l type="WowClientDB_PackageRec" ; 0x172 +g_pageTextMaterialDB 00AD4310 l type="WowClientDB_PageTextMaterialRec" ; 0x173 +g_paperDollItemFrameDB 00AD4334 l type="WowClientDB_PaperDollItemFrameRec" ; 0x174 +g_particleColorDB 00AD4358 l type="WowClientDB_ParticleColorRec" ; 0x175 +g_petPersonalityDB 00AD437C l type="WowClientDB_PetPersonalityRec" ; 0x176 +g_powerDisplayDB 00AD43A0 l type="WowClientDB_PowerDisplayRec" ; 0x177 +g_pvpDifficultyDB 00AD43C4 l type="WowClientDB_PvpDifficultyRec" ; 0x178 +g_questFactionRewardDB 00AD43E8 l type="WowClientDB_QuestFactionRewardRec" ; 0x179 +g_questInfoDB 00AD440C l type="WowClientDB_QuestInfoRec" ; 0x17A +g_questSortDB 00AD4430 l type="WowClientDB_QuestSortRec" ; 0x17B +g_questXPDB 00AD4454 l type="WowClientDB_QuestXPRec" ; 0x17C +g_resistancesDB 00AD4478 l type="WowClientDB_ResistancesRec" ; 0x17D +g_randPropPointsDB 00AD449C l type="WowClientDB_RandPropPointsRec" ; 0x17E +g_scalingStatDistributionDB 00AD44C0 l type="WowClientDB_ScalingStatDistributionRec" ; 0x17F +g_scalingStatValuesDB 00AD44E4 l type="WowClientDB_ScalingStatValuesRec" ; 0x180 +g_screenEffectDB 00AD4508 l type="WowClientDB_ScreenEffectRec" ; 0x181 +g_serverMessagesDB 00AD452C l type="WowClientDB_ServerMessagesRec" ; 0x182 +g_sheatheSoundLookupsDB 00AD4550 l type="WowClientDB_SheatheSoundLookupsRec" ; 0x183 +g_skillCostsDataDB 00AD4574 l type="WowClientDB_SkillCostsDataRec" ; 0x184 +g_skillLineAbilityDB 00AD4598 l type="WowClientDB_SkillLineAbilityRec" ; 0x185 +g_skillLineCategoryDB 00AD45BC l type="WowClientDB_SkillLineCategoryRec" ; 0x186 +g_skillLineDB 00AD45E0 l type="WowClientDB_SkillLineRec" ; 0x187 +g_skillRaceClassInfoDB 00AD4604 l type="WowClientDB_SkillRaceClassInfoRec" ; 0x188 +g_skillTiersDB 00AD4628 l type="WowClientDB_SkillTiersRec" ; 0x189 +g_soundAmbienceDB 00AD464C l type="WowClientDB_SoundAmbienceRec" ; 0x18A +g_soundEntriesDB 00AD4670 l type="WowClientDB_SoundEntriesRec" ; 0x18C +g_soundEmittersDB 00AD4694 l type="WowClientDB_SoundEmittersRec" ; 0x18B +g_soundProviderPreferencesDB 00AD46B8 l type="WowClientDB_SoundProviderPreferencesRec" ; 0x18D +g_soundSamplePreferencesDB 00AD46DC l type="WowClientDB_SoundSamplePreferencesRec" ; 0x18E +g_soundWaterTypeDB 00AD4700 l type="WowClientDB_SoundWaterTypeRec" ; 0x18F +g_spamMessagesDB 00AD4724 l type="WowClientDB_SpamMessagesRec" ; 0x190 +g_spellCastTimesDB 00AD4748 l type="WowClientDB_SpellCastTimesRec" ; 0x191 +g_spellCategoryDB 00AD476C l type="WowClientDB_SpellCategoryRec" ; 0x192 +g_spellChainEffectsDB 00AD4790 l type="WowClientDB_SpellChainEffectsRec" ; 0x193 +g_spellDescriptionVariablesDB 00AD47B4 l type="WowClientDB_SpellDescriptionVariablesRec" ; 0x195 +g_spellDifficultyDB 00AD47D8 l type="WowClientDB_SpellDifficultyRec" ; 0x196 +g_spellDispelTypeDB 00AD47FC l type="WowClientDB_SpellDispelTypeRec" ; 0x197 +g_spellDurationDB 00AD4820 l type="WowClientDB_SpellDurationRec" ; 0x198 +g_spellEffectCameraShakesDB 00AD4844 l type="WowClientDB_SpellEffectCameraShakesRec" ; 0x199 +g_spellFocusObjectDB 00AD4868 l type="WowClientDB_SpellFocusObjectRec" ; 0x19A +g_spellIconDB 00AD488C l type="WowClientDB_SpellIconRec" ; 0x19B +g_spellItemEnchantmentDB 00AD48B0 l type="WowClientDB_SpellItemEnchantmentRec" ; 0x19C +g_spellItemEnchantmentConditionDB 00AD48D4 l type="WowClientDB_SpellItemEnchantmentConditionRec" ; 0x19D +g_spellMechanicDB 00AD48F8 l type="WowClientDB_SpellMechanicRec" ; 0x19E +g_spellMissileDB 00AD491C l type="WowClientDB_SpellMissileRec" ; 0x19F +g_spellMissileMotionDB 00AD4940 l type="WowClientDB_SpellMissileMotionRec" ; 0x1A0 +g_spellRadiusDB 00AD4964 l type="WowClientDB_SpellRadiusRec" ; 0x1A1 +g_spellRangeDB 00AD4988 l type="WowClientDB_SpellRangeRec" ; 0x1A2 +g_spellRuneCostDB 00AD49AC l type="WowClientDB_SpellRuneCostRec" ; 0x1A3 +g_spellDB 00AD49D0 l type="WowClientDB_SpellRec" ; 0x194 +g_spellShapeshiftFormDB 00AD49F4 l type="WowClientDB_SpellShapeshiftFormRec" ; 0x1A4 +g_spellVisualEffectNameDB 00AD4A18 l type="WowClientDB_SpellVisualEffectNameRec" ; 0x1A6 +g_spellVisualKitDB 00AD4A3C l type="WowClientDB_SpellVisualKitRec" ; 0x1A7 +g_spellVisualKitAreaModelDB 00AD4A60 l type="WowClientDB_SpellVisualKitAreaModelRec" ; 0x1A8 +g_spellVisualKitModelAttachDB 00AD4A84 l type="WowClientDB_SpellVisualKitModelAttachRec" ; 0x1A9 +g_spellVisualDB 00AD4AA8 l type="WowClientDB_SpellVisualRec" ; 0x1A5 +g_stableSlotPricesDB 00AD4ACC l type="WowClientDB_StableSlotPricesRec" ; 0x1AA +g_stationeryDB 00AD4AF0 l type="WowClientDB_StationeryRec" ; 0x1AB +g_stringLookupsDB 00AD4B14 l type="WowClientDB_StringLookupsRec" ; 0x1AC +g_summonPropertiesDB 00AD4B38 l type="WowClientDB_SummonPropertiesRec" ; 0x1AD +g_talentDB 00AD4B5C l type="WowClientDB_TalentRec" ; 0x1AE +g_talentTabDB 00AD4B80 l type="WowClientDB_TalentTabRec" ; 0x1AF +g_taxiNodesDB 00AD4BA4 l type="WowClientDB_TaxiNodesRec" ; 0x1B0 +g_taxiPathNodeDB 00AD4BC8 l type="WowClientDB_TaxiPathNodeRec" ; 0x1B2 +g_taxiPathDB 00AD4BEC l type="WowClientDB_TaxiPathRec" ; 0x1B1 +g_teamContributionPointsDB 00AD4C10 l type="WowClientDB_TeamContributionPointsRec" ; 0x1B3 +g_terrainTypeDB 00AD4C34 l type="WowClientDB_TerrainTypeRec" ; 0x1B4 +g_terrainTypeSoundsDB 00AD4C58 l type="WowClientDB_TerrainTypeSoundsRec" ; 0x1B5 +g_totemCategoryDB 00AD4C7C l type="WowClientDB_TotemCategoryRec" ; 0x1B6 +g_transportAnimationDB 00AD4CA0 l type="WowClientDB_TransportAnimationRec" ; 0x1B7 +g_transportPhysicsDB 00AD4CC4 l type="WowClientDB_TransportPhysicsRec" ; 0x1B8 +g_transportRotationDB 00AD4CE8 l type="WowClientDB_TransportRotationRec" ; 0x1B9 +g_uISoundLookupsDB 00AD4D0C l type="WowClientDB_UISoundLookupsRec" ; 0x1BA +g_unitBloodLevelsDB 00AD4D30 l type="WowClientDB_UnitBloodLevelsRec" ; 0x1BC +g_unitBloodDB 00AD4D54 l type="WowClientDB_UnitBloodRec" ; 0x1BB +g_vehicleDB 00AD4D78 l type="WowClientDB_VehicleRec" ; 0x1BD +g_vehicleSeatDB 00AD4D9C l type="WowClientDB_VehicleSeatRec" ; 0x1BE +g_vehicleUIIndicatorDB 00AD4DC0 l type="WowClientDB_VehicleUIIndicatorRec" ; 0x1BF +g_vehicleUIIndSeatDB 00AD4DE4 l type="WowClientDB_VehicleUIIndSeatRec" ; 0x1C0 +g_vocalUISoundsDB 00AD4E08 l type="WowClientDB_VocalUISoundsRec" ; 0x1C1 +g_wMOAreaTableDB 00AD4E2C l type="WowClientDB_WMOAreaTableRec" ; 0x1C2 +g_weaponImpactSoundsDB 00AD4E50 l type="WowClientDB_WeaponImpactSoundsRec" ; 0x1C3 +g_weaponSwingSounds2DB 00AD4E74 l type="WowClientDB_WeaponSwingSounds2Rec" ; 0x1C4 +g_weatherDB 00AD4E98 l type="WowClientDB_WeatherRec" ; 0x1C5 +g_worldMapAreaDB 00AD4EBC l type="WowClientDB_WorldMapAreaRec" ; 0x1C6 +g_worldMapContinentDB 00AD4EE0 l type="WowClientDB_WorldMapContinentRec" ; 0x1C8 +g_worldMapOverlayDB 00AD4F04 l type="WowClientDB_WorldMapOverlayRec" ; 0x1C9 +g_worldMapTransformsDB 00AD4F28 l type="WowClientDB_WorldMapTransformsRec" ; 0x1C7 +g_worldSafeLocsDB 00AD4F4C l type="WowClientDB_WorldSafeLocsRec" ; 0x1CA +g_worldStateUIDB 00AD4F70 l type="WowClientDB_WorldStateUIRec" ; 0x1CB +g_zoneIntroMusicTableDB 00AD4F94 l type="WowClientDB_ZoneIntroMusicTableRec" ; 0x1CC +g_zoneMusicDB 00AD4FB8 l type="WowClientDB_ZoneMusicRec" ; 0x1CD +g_worldStateZoneSoundsDB 00AD4FDC l type="WowClientDB_WorldStateZoneSoundsRec" ; 0x1CE +g_worldChunkSoundsDB 00AD5000 l type="WowClientDB_WorldChunkSoundsRec" ; 0x1CF +g_soundEntriesAdvancedDB 00AD5024 l type="WowClientDB_SoundEntriesAdvancedRec" ; 0x1D0 +g_objectEffectDB 00AD5048 l type="WowClientDB_ObjectEffectRec" ; 0x1D1 +g_objectEffectGroupDB 00AD506C l type="WowClientDB_ObjectEffectGroupRec" ; 0x1D2 +g_objectEffectModifierDB 00AD5090 l type="WowClientDB_ObjectEffectModifierRec" ; 0x1D3 +g_objectEffectPackageDB 00AD50B4 l type="WowClientDB_ObjectEffectPackageRec" ; 0x1D4 +g_objectEffectPackageElemDB 00AD50D8 l type="WowClientDB_ObjectEffectPackageElemRec" ; 0x1D5 +g_soundFilterDB 00AD50FC l type="WowClientDB_SoundFilterRec" ; 0x1D6 +g_soundFilterElemDB 00AD5120 l type="WowClientDB_SoundFilterElemRec" ; 0x1D7 CBLPFile__s_eightBitAlphaLookup 00AD90B0 l type="uint8_t[16]" CBLPFile__s_oneBitAlphaLookup 00AD90C0 l type="uint8_t[2]" -s_rect 00adbab4 l ; RECTF -s_consoleHotKey 00adbac4 l ; KEY -s_historyIndex 00adbac8 l ; int32 -s_fontHeight 00adbacc l ; float -s_hRect 00adbad4 l ; RECTF -s_baseTextFlags 00adbae4 l ; uint32 +s_rect 00ADBAB4 l type="RECTF" ; RECTF +s_consoleHotKey 00ADBAC4 l type="KEY" ; KEY +s_historyIndex 00ADBAC8 l type="int32_t" ; int32 +s_fontHeight 00ADBACC l type="float" ; float +s_hRect 00ADBAD4 l type="RECTF" ; RECTF +s_baseTextFlags 00ADBAE4 l type="uint32_t" ; uint32 +s_linelist 00ADBBB0 l type="TSList_CONSOLELINE" +g_lightSkyboxDB 00AF4998 l type="WowClientDB_LightSkyboxRec" ; 0x15F +g_lightIntBandDB 00AF49BC l type="WowClientDB_LightIntBandRec" ; 0x15D +g_lightFloatBandDB 00AF49E0 l type="WowClientDB_LightFloatBandRec" ; 0x15C +g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E +g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B s_mainThread 00b417c8 l type="uint32_t" s_interactiveCount 00B417D0 l type="int32_t" s_messageRecycler 00B41850 l type="CDataRecycler" @@ -2847,33 +3191,68 @@ s_cursorImages 00C26DF0 l type="uint32_t[53][1024]" g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" CGxDevice__s_uiVertexShader 00C5DFDC l CGxDevice__s_shadowConstants 00C5DFE0 l +CGxDevice__m_log 00C5FFF8 l type="HSLOG" CGxDevice__s_uiPixelShader 00C5FFFC l isIdent 00C60760 l -s_caretpixheight 00ca1690 l -s_caret 00ca1694 l ; int32 -s_caretpixwidth 00ca1718 l -s_inputString 00ca171c l ; CGxString* -s_currlineptr 00ca1720 l ; CONSOLELINE* -s_layerBackground 00ca1724 l ; HLAYER -s_repeatBuffer 00ca1728 l ; char[64] -s_fontName 00ca1768 l ; char[260] -s_repeatCount 00ca186c l ; uint32 -s_layerText 00ca1870 l ; HLAYER -s_batch 00ca1874 l ; CGxStringBatch* -s_partial 00ca1878 l ; char[100] -s_NumLines 00ca197c l ; int32 -s_completionMode 00ca1980 l -s_completedCmd 00ca1984 l ; int32 -s_textFont 00ca198c l ; HTEXTFONT -s_consoleResizeState 00ca1990 l ; CONSOLERESIZESTATE -s_highlightState 00ca1994 l ; HIGHLIGHTSTATE -s_highlightLeftCharIndex 00ca19a0 l ; uint32 -s_highlightRightCharIndex 00ca19a4 l ; uint32 -s_charSpacing 00ca19a8 l ; float -s_consoleHeight 00ca19b0 l ; float -carettime 00ca19f0 l ; float -g_commandHistory 00ca3a28 l ; char[10394] -g_commandHistoryIndex 00caba28 l ; uint32 -g_defaultCommand 00caba2c l ; command function pointer -g_consoleCommandHash 00caba30 l ; TSHashTable -s_consoleAccessEnabled 00cabcc4 l ; int32 as boolean +s_caretpixheight 00CA1690 l type="float" +s_caret 00CA1694 l type="int32_t" ; int32 +s_copyText 00CA1698 l +s_caretpixwidth 00CA1718 l type="float" +s_inputString 00CA171C l type="CGxString*" +s_currlineptr 00CA1720 l type="CONSOLELINE*" +s_layerBackground 00CA1724 l type="HLAYER" +s_repeatBuffer 00CA1728 l type="char[64]" +s_fontName 00CA1768 l type="char[260]" +s_repeatCount 00CA186C l type="uint32_t" +s_layerText 00CA1870 l type="HLAYER" +s_batch 00CA1874 l type="CGxStringBatch*" +s_partial 00CA1878 l type="char[256]" +s_active 00CA1978 l type="int32_t" ; int32 as boolean +s_NumLines 00CA197C l type="int32_t" +s_completionMode 00CA1980 l type="int32_t" +s_completedCmd 00CA1984 l type="char*" +s_textFont 00CA198C l type="HTEXTFONT" ; HTEXTFONT +s_consoleResizeState 00CA1990 l type="CONSOLERESIZESTATE" ; CONSOLERESIZESTATE +s_highlightState 00CA1994 l type="HIGHLIGHTSTATE" ; HIGHLIGHTSTATE +s_highlightHStart 00CA1998 l type="float" +s_highlightHEnd 00CA199C l type="float" +s_highlightLeftCharIndex 00CA19A0 l type="uint32_t" +s_highlightRightCharIndex 00CA19A4 l type="uint32_t" +s_charSpacing 00CA19A8 l type="float" +s_consoleHeight 00CA19B0 l type="float" +s_critsect 00CA19B4 l type="SCritSect" +carettime 00CA19F0 l type="float" +s_fileName 00CA19F4 l type="char*" +CVar__m_initialized 00CA19F9 l type="bool" +s_registeredCVars 00CA19FC l type="TSHashTable_CVar_HASHKEY_STRI" +g_commandHistory 00CA3A28 l type="char[32][1024]" +g_commandHistoryIndex 00CABA28 l type="uint32_t" +g_defaultCommand 00CABA2C l type="COMMANDHANDLER" ; command function pointer +g_consoleCommandHash 00CABA30 l type="TSHashTable_CONSOLECOMMAND_HASHKEY_STRI" ; TSHashTable +s_cvGxStereoEnabled 00CABA98 l type="CVar*" +s_cvGxRefresh 00CABA9C l type="CVar*" +s_cvGxMaximize 00CABAA0 l type="CVar*" +s_cvGxMultisample 00CABAA4 l type="CVar*" +s_cvGxCursor 00CABAA8 l type="CVar*" +s_cvGxMultisampleQuality 00CABAB0 l type="CVar*" +s_cvGxResolution 00CABAB4 l type="CVar*" +s_cvHwDetect 00CABAB8 l type="CVar*" +s_cvGxOverride 00CABABC l type="CVar*" +s_cvGxFixLag 00CABAC0 l type="CVar*" +s_cvMaxFPS 00CABAC4 l type="CVar*" +s_cvGxVSync 00CABAEC l type="CVar*" +s_cvVideoOptionsVersion 00CABB30 l type="CVar*" +s_cvMaxFPSBk 00CABB6C l type="CVar*" +s_cvGxTripleBuffer 00CABB70 l type="CVar*" +s_cvGxDepthBits 00CABB74 l type="CVar*" +s_cvGxColorBits 00CABB78 l type="CVar*" +s_cvGxApi 00CABBA0 l type="CVar*" +s_cvGxAspect 00CABBA4 l type="CVar*" +s_cvFixedFunction 00CABBA8 l type="CVar*" +s_cvWidescreen 00CABBAC l type="CVar*" +s_cvGxWindow 00CABBB0 l type="CVar*" +s_cvWindowResizeLock 00CABBB4 l type="CVar*" +s_hwDetect 00CABCBE l type="bool" +s_consoleAccessEnabled 00CABCC4 l type="int32_t" ; int32 as boolean +s_requestedFormat 00CABCD8 l type="CGxFormat" +CShaderEffect__s_enableShaders 00D43020 l type="int32_t" diff --git a/profile/3.3.5a-windows-386/symbol/os/func.sym b/profile/3.3.5a-windows-386/symbol/os/func.sym index 952238b..221fcf1 100644 --- a/profile/3.3.5a-windows-386/symbol/os/func.sym +++ b/profile/3.3.5a-windows-386/symbol/os/func.sym @@ -1,10 +1,5 @@ -OsCloseFile 00461B00 f end=00461B09 -OsReadFile 00461B50 f end=00461B88 -OsGetFileSize 00461BD0 f end=00461BF4 -OsSetCurrentDirectory 00461DB0 f end=00461DD7 -OsCreateFile 00461FA0 f end=00461FFA OsInputDestroy 00869760 f end=008697D3 -OsInputInitialize 00869720 f end=00869757 ; actually called by IEvtInputInitialize, but this is optimized out +OsInputInitialize 00869720 f end=00869757 OsInputGet 00869E00 f end=0086A01A OsInputGetMousePosition 0086A0D0 f end=0086A130 OsInputSetMousePosition 0086A130 f end=0086A194 @@ -14,7 +9,7 @@ CenterMouse 00869DB0 f end=00869DF6 RestoreMouse 008695B0 f end=008695FB OsGetAsyncTimeMs 0086AE20 f end=0086AE2B OsSystemEnableCpuLog 0086B0C0 f end=0086B0CB -OsGetProcessorCount 0086B240 f end=0086B27D +OsGetProcessorCount 0086B240 f end=0086B27D OsGetExeName 0086BBD0 f end=0086BC2F OsPathGetRootChars 0086BC30 f end=0086BC9E OsPathStripFilename 0086BE50 f end=0086BE9B @@ -23,7 +18,10 @@ OsGuiGetWindow 0086C6A0 f end=0086C6CE OsGetDefaultWindowRect 0086A1A0 f end=0086A20C OsIMEInitialize 0086D0A0 f end=0086D0B8 OsIMEDestroy 0086D0C0 f end=0086D0Df +InternalClipboardPutString 008727E0 f end=008728B8 +InternalClipboardGetString 008726F0 f end=008727BB OsClipboardPutString 008722A0 f end=008722BF +OsClipboardGetString 00872280 f end=00872297 OsCallSetContext 0086F5A0 f end=0086F5EA OsCallInitializeContext 0086F880 f end=0086F902 OsCallInitialize 0086F760 f end=0086F875 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym b/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym new file mode 100644 index 0000000..787de44 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym @@ -0,0 +1 @@ +CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym new file mode 100644 index 0000000..d49ed92 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym @@ -0,0 +1 @@ +CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym b/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym new file mode 100644 index 0000000..a790527 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym @@ -0,0 +1 @@ +CShaderEffect__s_enableShaders 00D43020 l type="int32_t" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym b/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym new file mode 100644 index 0000000..8d23dd9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym @@ -0,0 +1,2 @@ +CSimpleFontString_SetFormattedText 0048D800 f end=0048D88B type="int32_t __stdcall func(lua_State* L)" +CSimpleFontString__SetText 00483910 f end=00483A3D type="void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym new file mode 100644 index 0000000..79ced37 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym @@ -0,0 +1,2 @@ +CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" +CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym b/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym new file mode 100644 index 0000000..31a0796 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym @@ -0,0 +1,9 @@ +CSimpleRegion__SetVertexColor 00487A10 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" +CSimpleRegion__GetVertexColor 00487AB0 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" +CSimpleRegion__HideThis 00487BF0 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__ShowThis 00487C40 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__OnRegionChanged 00487CA0 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__OnColorChanged 00487D70 f type="void __thiscall func(CSimpleRegion* this, bool a2)" +CSimpleRegion__CSimpleRegion 004880E0 f type="void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)" +CSimpleRegion__destructor 004881D0 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleRegion__Hide 00482C20 f type="void __thiscall func(CSimpleRegion* this)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/storm/func.sym b/profile/3.3.5a-windows-386/symbol/storm/func.sym index cd2b55a..96b638b 100644 --- a/profile/3.3.5a-windows-386/symbol/storm/func.sym +++ b/profile/3.3.5a-windows-386/symbol/storm/func.sym @@ -7,13 +7,25 @@ SStrChr 0076E6E0 f end=0076E712 SStrChrR 0076E720 f end=0076E756 SStrCmp 0076E760 f end=0076E77B SStrCmpI 0076E780 f end=0076E79B +SStrCmpUTF8I 0076EA40 f end=0076EAA3 SStrCopy 0076ED20 f end=0076ED98 -SStrLen 0076EE30 f end=0076EE5E +SStrLen 0076EE30 f end=0076EE5E type="int32_t __stdcall func(char* str)" SStrPack 0076EF70 f end=0076F001 +ISStrVPrintf 0076F010 f end=0076F063 SStrPrintf 0076F070 f end=0076F09E type="int32_t __stdcall func(char* dest, size_t maxchars, char* format, ...)" SStrVPrintf 0076F0A0 f end=0076F0CE +SStrToInt 0076F0D0 f end=0076F136 +SStrToUnsigned 0076F140 f end=0076F189 SStrTokenize 0076F1E0 f end=0076F331 +SStrHash 0076F340 f end=0076F418 SStrHashHT 0076F640 f end=0076F6B9 +SStrUpper 0076F6C0 f end=0076F6D3 +SStrLower 0076F6E0 f end=0076F6F3 +SStrStr 0076F700 f end=0076F762 +SStrCmp 0076F770 f end=0076F7D2 +SStrStrUTF8I 0076F7E0 f end=0076F852 +SStrDupA 0076F9E0 f end=0076FA35 +SStrToFloat 0076FB80 f end=0076FDA9 SRegLoadValue 00770840 f end=007708E9 SRegSaveValue 007709A0 f end=007709E8 SErrSetLastError 00771870 f end=00771886 @@ -33,17 +45,18 @@ SCritSect__Leave 00774650 f end=00774658 type="void __thiscall func(SCritSect *t SSyncObject__Wait 00774690 f end=007746A4 SEvent__Set 00774720 f end=0077472A SEvent__Reset 00774730 f end=0077473A +SLogCreate 007757E0 f end=007758D6 type="int32_t __stdcall func(char* filename, uint32_t flags, HSLOG* log)" SRgnCombineRectf 00777420 f end=00777588 type="void __stdcall func(HSRGN handle, RECTF* rect, void* param, int32_t combinemode)" SRgnGetBoundingRectf 00777590 f end=00777897 type="void __stdcall func(HSRGN handle, RECTF* rect)" SRgnDelete 00777940 f end=00777971 type="void __stdcall func(HSRGN handle)" SRgnCreate 00777980 f end=00777A78 type="void __stdcall func(HSRGN* handlePtr, uint32_t reserved)" TSFixedArray_uint32_t_Set 0077AC80 f end=0077ACE4 type="void __thiscall func(TSFixedArray_uint32_t* this, uint32_t count, uint32_t* data)" -BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const +BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const Compare 0077AD10 f end=0077ADC5 type="int32_t __fastcall func(BigBuffer* a, BigBuffer* b)" HighBitPos 0077ADD0 f end=0077AE5A type="uint32_t __stdcall func(BigBuffer* a)" SBigCompare 0077AE60 f end=0077AE77 type="int32_t __stdcall func(BigData* b, BigData* c)" BigStack__destructor 0077AE80 f end=0077AEB1 type="void __thiscall func(BigStack* this)" ; public: __thiscall BigStack::~BigStack(void) -BigBuffer__operator_index 0077AEC0 f end=0077AF2D type="uint32_t* __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const +BigBuffer__operator_index 0077AEC0 f end=0077AF2D type="uint32_t* __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const BigBuffer__SetCount 0077AF30 f end=0077AF7C type="void __thiscall func(BigBuffer* this, uint32_t count)" BigBuffer__Trim 0077AF80 f end=0077AFE3 type="void __thiscall func(BigBuffer* this)" ; public: void __thiscall BigBuffer::Trim(void)const BigStack__BigStack 0077AFF0 f end=0077B01F type="void __thiscall func(BigBuffer* this)" @@ -57,7 +70,7 @@ Shr 0077B700 f end=0077B7E8 type="void __stdcall func(BigBuffer* a, BigBuffer* b FromBinary 0077B7F0 f end=0077B8AD type="void __stdcall func(BigBuffer* buffer@, void* data, uint32_t bytes)" ; void FromBinary(class BigBuffer &,void const *,unsigned int) FromUnsigned 0077B8B0 f end=0077B90B type="void __stdcall func(BigBuffer* buffer@, uint32_t value)" ; void FromUnsigned(class BigBuffer &,unsigned int) ToBinaryAppend 0077B910 f end=0077B9DC type="void __stdcall func(TSGrowableArray_uint8_t* output, BigBuffer* buffer)" ; _ToBinaryAppend(TSGrowableArray&, BigBuffer const&) -SBigAdd 0077B9E0 f end=0077B9FC type="void __stdcall func(BigData* a, BigData* b, BigData* c)" +SBigAdd 0077B9E0 f end=0077B9FC type="void __stdcall func(BigData* a, BigData* b, BigData* c)" SBigBitLen 0077BA00 f end=0077BA52 type="void __stdcall func(BigData* a, uint32_t* bits)" SBigFromBinary 0077BA60 f end=0077BA7C type="void __stdcall func(BigData* num, void* data, uint32_t bytes)" SBigFromUnsigned 0077BA80 f end=0077BA98 type="void __stdcall func(BigData* num, uint32_t val)" @@ -71,4 +84,4 @@ Square 0077C330 f end=0077C69F type="void __stdcall func(BigBuffer* a, BigBuffer SBigDel 0077C6A0 f end=0077C6F6 type="void __stdcall func(BigData* num)" SBigMul 0077C700 f end=0077C71F type="void __stdcall func(BigData* a, BigData* b, BigData* c)" PowMod 0077C720 f end=0077C97B type="void __stdcall func(BigBuffer* a, BigBuffer* b, BigBuffer* c, BigBuffer* d, BigStack* stack)" -SBigPowMod 0077C980 f end=0077C9A4 type="void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)" \ No newline at end of file +SBigPowMod 0077C980 f end=0077C9A4 type="void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)" diff --git a/profile/3.3.5a-windows-386/symbol/textblock/func.sym b/profile/3.3.5a-windows-386/symbol/textblock/func.sym index 8481086..e15ff95 100644 --- a/profile/3.3.5a-windows-386/symbol/textblock/func.sym +++ b/profile/3.3.5a-windows-386/symbol/textblock/func.sym @@ -1,5 +1,5 @@ -TextBlockCreate 004BDAA0 f end=004BDBE4 -TextBlockGenerateFont 004BE9C0 f end=004BEB8C -TextBlockGetFontPtr 004BD9D0 f end=004BD9EA -TextBlockSetStringPos 004BDBF0 f end=004BDC4C -TextBlockGetWrappedTextHeight 004BDD80 f +TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" +TextBlockGenerateFont 004BE9C0 f end=004BEB8C type="HTEXTFONT __stdcall func(char* fontName, uint32_t fontFlags, float fontHeight)" +TextBlockGetFontPtr 004BD9D0 f end=004BD9EA type="CGxFont* __stdcall func(HTEXTFONT font)" +TextBlockSetStringPos 004BDBF0 f end=004BDC4C type="void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)" +TextBlockGetWrappedTextHeight 004BDD80 f end=004BDE39 type="float __stdcall func(HTEXTFONT fontHandle, char* text, float a3, float a4, C2Vector* a5, float a6, float a7, uint32_t flags)" diff --git a/profile/3.3.5a-windows-386/symbol/utf/func.sym b/profile/3.3.5a-windows-386/symbol/utf/func.sym new file mode 100644 index 0000000..00810bd --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/utf/func.sym @@ -0,0 +1 @@ +ConvertUTF16toUTF8 0047B9E0 f end=0047BB9C type="int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/utf/label.sym b/profile/3.3.5a-windows-386/symbol/utf/label.sym new file mode 100644 index 0000000..a8225ea --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/utf/label.sym @@ -0,0 +1 @@ +firstByteMark 009e9ec8 l type="uint32_t[7]" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index 68941d0a7233d8c87cd7244bbb9bbc452a018650..9115b258aa1ccc233ca832d0f640e2831087f13b 100644 GIT binary patch delta 43206 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 bQN*-4=UXx}zj#fRy$oN@&A)Kjg_i#Z<9@t6 delta 34231 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