diff --git a/Diablo.dsp b/Diablo.dsp new file mode 100644 index 0000000..4772edc --- /dev/null +++ b/Diablo.dsp @@ -0,0 +1,397 @@ +# Microsoft Developer Studio Project File - Name="Diablo" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=Diablo - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Diablo.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Diablo.mak" CFG="Diablo - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Diablo - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "Diablo - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Diablo - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Source/WinRel" +# PROP BASE Intermediate_Dir "Source/WinRel" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Source/WinRel" +# PROP Intermediate_Dir "Source/WinRel" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 DiabloUI/WinRel/diabloui.lib 3rdParty/Storm/Source/WinRel/storm.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib version.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "Diablo - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Source/WinDebug" +# PROP BASE Intermediate_Dir "Source/WinDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Source/WinDebug" +# PROP Intermediate_Dir "Source/WinDebug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 DiabloUI/WinDebug/diabloui.lib 3rdParty/Storm/Source/WinDebug/storm.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib version.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "Diablo - Win32 Release" +# Name "Diablo - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\Source\appfat.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\automap.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\capture.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\codec.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\control.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\cursor.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\dead.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\debug.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\diablo.cpp +# End Source File +# Begin Source File + +SOURCE=.\Diablo.rc +# End Source File +# Begin Source File + +SOURCE=.\Source\doom.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\drlg_l1.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\drlg_l2.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\drlg_l3.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\drlg_l4.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\dthread.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\dx.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\effects.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\encrypt.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\engine.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\error.cpp +# End Source File +# Begin Source File + +SOURCE=.\3rdParty\PKWare\explode.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\fault.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\gamemenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\gendung.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\gmenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\help.cpp +# End Source File +# Begin Source File + +SOURCE=.\3rdParty\PKWare\implode.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\init.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\interfac.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\inv.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\items.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\lighting.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\loadsave.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\logging.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\mainmenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\minitext.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\missiles.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\monster.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\movie.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\mpqapi.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\msg.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\msgcmd.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\multi.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\nthread.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\objects.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\pack.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\palette.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\path.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\pfile.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\player.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\plrmsg.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\portal.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\quests.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\restrict.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\scrollrt.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\setmaps.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\sha.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\sound.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\spells.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\stores.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\sync.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\textdat.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\themes.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\tmsg.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\town.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\towners.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\track.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\trigs.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\wave.cpp +# End Source File +# Begin Source File + +SOURCE=.\Source\world.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\Diablo.ico +# End Source File +# End Group +# End Target +# End Project diff --git a/Diablo.dsw b/Diablo.dsw new file mode 100644 index 0000000..df0c1f4 --- /dev/null +++ b/Diablo.dsw @@ -0,0 +1,59 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Diablo"=.\Diablo.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name DiabloUI + End Project Dependency + Begin Project Dependency + Project_Dep_Name storm + End Project Dependency +}}} + +############################################################################### + +Project: "DiabloUI"=.\DiabloUI\DiabloUI.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "storm"=.\3rdParty\Storm\Source\storm.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Diablo.ico b/Diablo.ico new file mode 100644 index 0000000..81c3a4a Binary files /dev/null and b/Diablo.ico differ diff --git a/Diablo.rc b/Diablo.rc new file mode 100644 index 0000000..376b116 --- /dev/null +++ b/Diablo.rc @@ -0,0 +1,297 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +101 ICON DISCARDABLE "Diablo.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +104 DIALOG DISCARDABLE 0, 0, 250, 241 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Direct Draw Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,220,50,14 + LTEXT "Diablo was unable to properly initialize your video card using DirectX. Please try the following solutions to correct the problem:", + -1,7,7,236,18 + LTEXT "Use the Diablo setup program ""SETUP.EXE"" provided on the Diablo CD-ROM to install DirectX 3.0.", + -1,19,26,210,18 + LTEXT "Install the most recent DirectX video drivers provided by the manufacturer of your video card. A list of video card manufactuers can be found at: http://www.blizzard.com/support/vendors.htm", + -1,19,48,210,27 + LTEXT "The error encountered while trying to initialize the video card was:", + -1,7,175,236,9 + LTEXT "unknown error",1000,19,186,210,27 + LTEXT "If you continue to have problems, we have also included Microsoft DirectX 2.0 drivers on the Diablo CD-ROM. This older version of DirectX may work in cases where DirectX 3.0 does not.", + -1,7,79,236,27 + LTEXT "USA telephone: 1-800-426-9400\nInternational telephone: 206-882-8080\nhttp://www.microsoft.com", + -1,19,137,210,27 + LTEXT "If you continue to have problems with DirectX, please contact Microsoft's Technical Support at:", + -1,7,116,236,18 +END + +105 DIALOG DISCARDABLE 0, 0, 250, 213 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Out of Memory Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,192,50,14 + LTEXT "Diablo has exhausted all the memory on your system. This problem can likely be corrected by changing the virtual memory settings for Windows. Ensure that your system has at least 10 megabytes of free disk space, then check your virtual memory settings:", + -1,7,7,236,36 + LTEXT "Select ""Settings - Control Panel"" from the ""Start"" menu\nRun the ""System"" control panel applet\nSelect the ""Performance"" tab, and press ""Virtual Memory""\nUse the ""Let Windows manage my virtual memory..."" option", + -1,23,54,197,36 + LTEXT "The error encountered was:",-1,7,146,236,11 + LTEXT "unknown location",1000,20,157,210,27 + LTEXT "For Windows 95:",-1,7,45,236,9 + LTEXT "Select ""Settings - Control Panel"" from the ""Start"" menu\nRun the ""System"" control panel applet\nSelect the ""Performance"" tab\nPress ""Change"" in ""Virtual Memory"" settings\nEnsure that the virtual memory file is at least 32 megabytes", + -1,17,98,197,45 + LTEXT "For Windows NT:",-1,7,89,236,9 +END + +106 DIALOG DISCARDABLE 0, 0, 265, 114 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Data File Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,208,93,50,14 + LTEXT "Diablo was unable to open a required file. Please ensure that the Diablo disc is in the CDROM drive. If this problem persists, try uninstalling and reinstalling Diablo using the program ""SETUP.EXE"" on the Diablo CD-ROM.", + -1,7,7,251,36 + LTEXT "The problem occurred while trying to load a file",-1,7, + 48,232,9 + LTEXT "unknown file",1000,20,59,210,27 +END + +107 DIALOG DISCARDABLE 0, 0, 250, 161 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Direct Draw Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,140,50,14 + LTEXT "Diablo was unable to find the file ""ddraw.dll"", which is a component of Microsoft DirectX. Please run the program ""SETUP.EXE"" on the Diablo CD-ROM and install Microsoft DirectX.", + -1,7,7,236,27 + LTEXT "The error encountered while trying to initialize DirectX was:", + -1,7,95,236,9 + LTEXT "unknown error",1000,19,106,210,29 + LTEXT "USA telephone: 1-800-426-9400\nInternational telephone: 206-882-8080\nhttp://www.microsoft.com", + -1,19,60,210,27 + LTEXT "If you continue to have problems with DirectX, please contact Microsoft's Technical Support at:", + -1,7,39,236,18 +END + +108 DIALOG DISCARDABLE 0, 0, 250, 161 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Direct Sound Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,140,50,14 + LTEXT "Diablo was unable to find the file ""dsound.dll"", which is a component of Microsoft DirectX. Please run the program ""SETUP.EXE"" on the Diablo CD-ROM and install Microsoft DirectX.", + -1,7,7,236,27 + LTEXT "The error encountered while trying to initialize DirectX was:", + -1,7,95,236,9 + LTEXT "unknown error",1000,19,106,210,27 + LTEXT "USA telephone: 1-800-426-9400\nInternational telephone: 206-882-8080\nhttp://www.microsoft.com", + -1,19,60,210,27 + LTEXT "If you continue to have problems with DirectX, please contact Microsoft's Technical Support at:", + -1,7,39,236,18 +END +/* +109 DIALOG DISCARDABLE 0, 0, 250, 92 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "System warning" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "&OK",1,130,71,50,14 + LTEXT "Diablo requires an Intel Pentium-class processor to run properly. Your system does not appear to have a Pentium-class processor installed.", + -1,7,7,236,18 + LTEXT "You may still be able to play Diablo if your processor has the performance characteristics of a Pentium.", + -1,7,30,236,18 + LTEXT "Press ""OK"" to proceed, otherwise press ""Cancel"" to exit this program.", + -1,7,53,236,9 + PUSHBUTTON "&Cancel",2,193,71,50,14 +END +*/ +110 DIALOG DISCARDABLE 0, 0, 250, 100 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Out of Disk Space" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,79,50,14 + LTEXT "Diablo requires at least 10 megabytes of free disk space to run properly. The disk:", + -1,7,7,236,18 + LTEXT "",-1,7,43,232,9 + LTEXT "unknown drive",1000,7,33,210,9 + LTEXT "has less than 10 megabytes of free space left. Please free some space on your drive and run Diablo again.", + -1,7,52,236,18 +END + +111 DIALOG DISCARDABLE 0, 0, 250, 161 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Direct Draw Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,193,140,50,14 + LTEXT "Diablo was unable to switch video modes. This is a common problem for computers with more than one video card. To correct this problem, please set your video resolution to 640 x 480 and try running Diablo again.", + -1,7,7,236,27 + LTEXT "The error encountered while trying to switch video modes was:", + -1,7,95,236,9 + LTEXT "unknown error",1000,19,106,210,27 + LTEXT "Select ""Settings - Control Panel"" from the ""Start"" menu\nRun the ""Display"" control panel applet\nSelect the ""Settings"" tab\nSet the ""Desktop Area"" to ""640 x 480 pixels""", + -1,23,50,197,36 + LTEXT "For Windows 95 and Windows NT",-1,7,41,236,9 +END + +112 DIALOG DISCARDABLE 0, 0, 250, 92 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Data File Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,136,71,50,14 + LTEXT "Diablo cannot read a required data file. Your Diablo CD may not be in the CDROM drive. Please ensure that the Diablo disc is in the CDROM drive and press OK. To leave the program, press Exit.", + -1,7,7,236,27 + LTEXT "unknown file",1000,20,37,210,27 + PUSHBUTTON "Exit",2,193,71,50,14 +END + +113 DIALOG DISCARDABLE 0, 0, 223, 116 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Windows 2000 Restricted User Advisory" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,166,95,50,14 + LTEXT "In order to install, play or patch Diablo using the Windows 2000 operating system, you will need to log in as either an Administrator or as a Power User.", + -1,7,7,209,28 + LTEXT "Users, also known as Restricted Users, do not have sufficient access to install or play the game properly.", + -1,7,39,209,20 + LTEXT "If you have further questions regarding User Rights in Windows 2000, please refer to your Windows 2000 documentation or contact your system administrator.", + -1,7,63,209,28 +END + +114 DIALOG DISCARDABLE 0, 0, 220, 121 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Read-Only Directory Error" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",1,163,100,50,14 + LTEXT "Diablo is being run from:",-1,7,7,206,10 + LTEXT "unknown directory",1000,17,20,186,20 + LTEXT "Diablo or the current user does not seem to have write privilages in this directory. Contact your system administrator.\n\nNote that Windows 2000 Restricted Users can not write to the Windows or Program Files directory hierarchies.", + -1,7,44,206,50 +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""resource.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2001,5,18,1 + PRODUCTVERSION 1,0,9,2 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Blizzard Entertainment\0" + VALUE "FileDescription", "Diablo\0" + VALUE "FileVersion", "2001, 5, 18, 1\0" + VALUE "InternalName", "Diablo\0" + VALUE "LegalCopyright", "Copyright © 1996-2001\0" + VALUE "OriginalFilename", "Diablo.exe\0" + VALUE "ProductName", "Blizzard Entertainment Diablo\0" + VALUE "ProductVersion", "1, 0, 9, 2\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/TODO b/TODO new file mode 100644 index 0000000..7689567 --- /dev/null +++ b/TODO @@ -0,0 +1,36 @@ +[COMMENTS IN CODE] + BUG_FIX known bugs in original code (to be kept that way, but with fix in comments) + /* block comments are things to be fixed/checked + FIX_ME bad data + +[PROBLEMS IN DECOMPILED CODE] + 1xxx Serious bugs (crash/fault) + 2xxx Minor bugs (noticeable but can be avoided) + 3xxx Code issues (incorrect code that still compiles/works) + +1000 - The Cathedral doesn't generate correctly, sometimes crashing +1001 - Sometimes dungeon will crash on loading if previous levels loaded (DrawClippedObject) +1002 - Golem usually crashes, or appears invisible if summoned +1003 - Stone cursed monsters frequently crash when killed +1004 - Some CEL functions were written in ASM and have been disabled (engine.cpp) +1005 - After being in the dungeon for awhile, the 'Control Panel' will sometimes + corrupt and be filled with glitched colors (likely a buffer overflow) +1006 - Timed messages are broken and have been disabled (tmsg.cpp) +1007 - Server commands are broken and have been disabled (msgcmd.cpp) + +2000 - Rooms/halls don't generate correctly in the Catacombs +2001 - The last seal in Lazarus' Lair doesn't trigger the video/teleport +2002 - White pixels on monsters/cathedral/catacombs (palette entry 256?) +2003 - Swapping items in inventory sometimes deletes the item +2004 - Some spells don't use any mana or charges when they should +2005 - Some tiles are drawn fully lit when they should be transparent (world.cpp) +2006 - Objects should darken with radius instead of being fully lit +2007 - Automap sometimes draws incorrectly, check 'engine_draw_automap_pixels' + *Bad args ECX/EDX for 'engine_draw_pixel' (engine.cpp) + +3000 - Critical sections should be constructors using CCritSect +3001 - Function 'DRLG_L4TransFix', decompile and check (Test: seed 2349839 level 13) +3002 - Some code uses macros such as __PAIR__ or __ROL4__, or __int64 +3003 - Some functions/structures have incorrect signing (signed/unsigned BYTE) +3004 - Function 'GetLevelMTypes', decompile and check (monster.cpp) +3005 - Function 'SetAutomapView', decompile and check (automap.cpp) \ No newline at end of file diff --git a/defs.h b/defs.h new file mode 100644 index 0000000..de3bfba --- /dev/null +++ b/defs.h @@ -0,0 +1,180 @@ +// Diablo uses a 256 color palette +// Entry 0-127 (0x00-0x7F) are level specific +// Entry 128-255 (0x80-0xFF) are global + +// standard palette for all levels +// 8 or 16 shades per color +// example (dark blue): PAL16_BLUE+14, PAL8_BLUE+7 +// example (light red): PAL16_RED+2, PAL8_RED +// example (orange): PAL16_ORANGE+8, PAL8_ORANGE+4 +#define PAL8_BLUE 128 +#define PAL8_RED 136 +#define PAL8_YELLOW 144 +#define PAL8_ORANGE 152 +#define PAL16_BEIGE 160 +#define PAL16_BLUE 176 +#define PAL16_YELLOW 192 +#define PAL16_ORANGE 208 +#define PAL16_RED 224 +#define PAL16_GRAY 240 + + + + + +///////////////////////////////////////////////////////////////////////// +/* temporary stuff from the decompiler */ +/* remove all the garbage below in the future */ +///////////////////////////////////////////////////////////////////////// +#ifndef IDA_GARBAGE +#define IDA_GARBAGE +typedef __int64 ll; +typedef unsigned __int64 ull; + +typedef unsigned int uint; +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned long ulong; + +typedef char int8; +typedef signed char sint8; +typedef unsigned char uint8; +typedef short int16; +typedef signed short sint16; +typedef unsigned short uint16; +typedef int int32; +typedef signed int sint32; +typedef unsigned int uint32; +typedef ll int64; +typedef ll sint64; +typedef ull uint64; + +// Partially defined types. They are used when the decompiler does not know +// anything about the type except its size. +#define _BYTE uint8 +#define _WORD uint16 +#define _DWORD uint32 +#define _QWORD uint64 + +// Some convenience macros to make partial accesses nicer +#define LAST_IND(x,part_type) (sizeof(x)/sizeof(part_type) - 1) +#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN +# define LOW_IND(x,part_type) LAST_IND(x,part_type) +# define HIGH_IND(x,part_type) 0 +#else +# define HIGH_IND(x,part_type) LAST_IND(x,part_type) +# define LOW_IND(x,part_type) 0 +#endif +// first unsigned macros: +#define BYTEn(x, n) (*((_BYTE*)&(x)+n)) +#define WORDn(x, n) (*((_WORD*)&(x)+n)) +#define DWORDn(x, n) (*((_DWORD*)&(x)+n)) + +#define _LOBYTE(x) BYTEn(x,LOW_IND(x,_BYTE)) +#define _LOWORD(x) WORDn(x,LOW_IND(x,_WORD)) +#define LODWORD(x) DWORDn(x,LOW_IND(x,_DWORD)) +#define _HIBYTE(x) BYTEn(x,HIGH_IND(x,_BYTE)) +#define _HIWORD(x) WORDn(x,HIGH_IND(x,_WORD)) +#define HIDWORD(x) DWORDn(x,HIGH_IND(x,_DWORD)) +#define BYTE1(x) BYTEn(x, 1) // byte 1 (counting from 0) +#define BYTE2(x) BYTEn(x, 2) + + +// now signed macros (the same but with sign extension) +#define SBYTEn(x, n) (*((int8*)&(x)+n)) +#define SWORDn(x, n) (*((int16*)&(x)+n)) + +#define SLOBYTE(x) SBYTEn(x,LOW_IND(x,int8)) +#define SHIWORD(x) SWORDn(x,HIGH_IND(x,int16)) + + + +// Helper functions to represent some assembly instructions. + +#ifdef __cplusplus + + +// memcpy() with determined behavoir: it always copies +// from the start to the end of the buffer +// note: it copies byte by byte, so it is not equivalent to, for example, rep movsd +#define qmemcpy memcpy +/* +inline void *qmemcpy(void *dst, const void *src, size_t cnt) +{ + char *out = (char *)dst; + const char *in = (const char *)src; + while ( cnt > 0 ) + { + *out++ = *in++; + --cnt; + } + return dst; +} */ + +// Generate a reference to pair of operands +template int16 __PAIR__( int8 high, T low) { return ((( int16)high) << sizeof(high)*8) | uint8(low); } +template int32 __PAIR__( int16 high, T low) { return ((( int32)high) << sizeof(high)*8) | uint16(low); } +template int64 __PAIR__( int32 high, T low) { return ((( int64)high) << sizeof(high)*8) | uint32(low); } +template uint16 __PAIR__(uint8 high, T low) { return (((uint16)high) << sizeof(high)*8) | uint8(low); } +template uint32 __PAIR__(uint16 high, T low) { return (((uint32)high) << sizeof(high)*8) | uint16(low); } +template uint64 __PAIR__(uint32 high, T low) { return (((uint64)high) << sizeof(high)*8) | uint32(low); } + +// rotate left +template T __ROL__(T value, int count) +{ + const uint nbits = sizeof(T) * 8; + + if ( count > 0 ) + { + count %= nbits; + T high = value >> (nbits - count); + if ( T(-1) < 0 ) // signed value + high &= ~((T(-1) << count)); + value <<= count; + value |= high; + } + else + { + count = -count % nbits; + T low = value << (nbits - count); + value >>= count; + value |= low; + } + return value; +} + +inline uint16 __ROR2__(uint16 value, int count) { return __ROL__((uint16)value, -count); } +inline uint32 __ROR4__(uint32 value, int count) { return __ROL__((uint32)value, -count); } + +// sign flag +template int8 __SETS__(T x) +{ + if ( sizeof(T) == 1 ) + return int8(x) < 0; + if ( sizeof(T) == 2 ) + return int16(x) < 0; + if ( sizeof(T) == 4 ) + return int32(x) < 0; + return int64(x) < 0; +} + +// overflow flag of subtraction (x-y) +template int8 __OFSUB__(T x, U y) +{ + if ( sizeof(T) < sizeof(U) ) + { + U x2 = x; + int8 sx = __SETS__(x2); + return (sx ^ __SETS__(y)) & (sx ^ __SETS__(x2-y)); + } + else + { + T y2 = y; + int8 sx = __SETS__(x); + return (sx ^ __SETS__(y2)) & (sx ^ __SETS__(x-y2)); + } +} + +#endif + +#endif /* IDA_GARBAGE */ diff --git a/enums.h b/enums.h new file mode 100644 index 0000000..dbf78eb --- /dev/null +++ b/enums.h @@ -0,0 +1,2479 @@ +enum unique_base_item +{ + UITYPE_NONE = 0x0, + UITYPE_SHORTBOW = 0x1, + UITYPE_LONGBOW = 0x2, + UITYPE_HUNTBOW = 0x3, + UITYPE_COMPBOW = 0x4, + UITYPE_WARBOW = 0x5, + UITYPE_BATTLEBOW = 0x6, + UITYPE_DAGGER = 0x7, + UITYPE_FALCHION = 0x8, + UITYPE_CLAYMORE = 0x9, + UITYPE_BROADSWR = 0xA, + UITYPE_SABRE = 0xB, + UITYPE_SCIMITAR = 0xC, + UITYPE_LONGSWR = 0xD, + UITYPE_BASTARDSWR = 0xE, + UITYPE_TWOHANDSWR = 0xF, + UITYPE_GREATSWR = 0x10, + UITYPE_CLEAVER = 0x11, + UITYPE_LARGEAXE = 0x12, + UITYPE_BROADAXE = 0x13, + UITYPE_SMALLAXE = 0x14, + UITYPE_BATTLEAXE = 0x15, + UITYPE_GREATAXE = 0x16, + UITYPE_MACE = 0x17, + UITYPE_MORNSTAR = 0x18, + UITYPE_SPIKCLUB = 0x19, + UITYPE_MAUL = 0x1A, + UITYPE_WARHAMMER = 0x1B, + UITYPE_FLAIL = 0x1C, + UITYPE_LONGSTAFF = 0x1D, + UITYPE_SHORTSTAFF = 0x1E, + UITYPE_COMPSTAFF = 0x1F, + UITYPE_QUARSTAFF = 0x20, + UITYPE_WARSTAFF = 0x21, + UITYPE_SKULLCAP = 0x22, + UITYPE_HELM = 0x23, + UITYPE_GREATHELM = 0x24, + UITYPE_CROWN = 0x25, + UITYPE_38 = 0x26, + UITYPE_RAGS = 0x27, + UITYPE_STUDARMOR = 0x28, + UITYPE_CLOAK = 0x29, + UITYPE_ROBE = 0x2A, + UITYPE_CHAINMAIL = 0x2B, + UITYPE_LEATHARMOR = 0x2C, + UITYPE_BREASTPLATE = 0x2D, + UITYPE_CAPE = 0x2E, + UITYPE_PLATEMAIL = 0x2F, + UITYPE_FULLPLATE = 0x30, + UITYPE_BUCKLER = 0x31, + UITYPE_SMALLSHIELD = 0x32, + UITYPE_LARGESHIELD = 0x33, + UITYPE_KITESHIELD = 0x34, + UITYPE_GOTHSHIELD = 0x35, + UITYPE_RING = 0x36, + UITYPE_55 = 0x37, + UITYPE_AMULET = 0x38, + UITYPE_SKCROWN = 0x39, + UITYPE_INFRARING = 0x3A, + UITYPE_OPTAMULET = 0x3B, + UITYPE_TRING = 0x3C, + UITYPE_HARCREST = 0x3D, + UITYPE_MAPOFDOOM = 0x3E, + UITYPE_ELIXIR = 0x3F, + UITYPE_ARMOFVAL = 0x40, + UITYPE_STEELVEIL = 0x41, + UITYPE_GRISWOLD = 0x42, + UITYPE_LGTFORGE = 0x43, + UITYPE_LAZSTAFF = 0x44, + UITYPE_INVALID = 0xFF, +}; + +enum item_effect_type +{ + IPL_TOHIT = 0x0, + IPL_TOHIT_CURSE = 0x1, + IPL_DAMP = 0x2, + IPL_DAMP_CURSE = 0x3, + IPL_TOHIT_DAMP = 0x4, + IPL_TOHIT_DAMP_CURSE = 0x5, + IPL_ACP = 0x6, + IPL_ACP_CURSE = 0x7, + IPL_FIRERES = 0x8, + IPL_LIGHTRES = 0x9, + IPL_MAGICRES = 0xA, + IPL_ALLRES = 0xB, + IPL_SPLLVLADD = 0xE, + IPL_CHARGES = 0xF, + IPL_FIREDAM = 0x10, + IPL_LIGHTDAM = 0x11, + IPL_STR = 0x13, + IPL_STR_CURSE = 0x14, + IPL_MAG = 0x15, + IPL_MAG_CURSE = 0x16, + IPL_DEX = 0x17, + IPL_DEX_CURSE = 0x18, + IPL_VIT = 0x19, + IPL_VIT_CURSE = 0x1A, + IPL_ATTRIBS = 0x1B, + IPL_ATTRIBS_CURSE = 0x1C, + IPL_GETHIT = 0x1D, + IPL_GETHIT_CURSE = 0x1E, + IPL_LIFE = 0x1F, + IPL_LIFE_CURSE = 0x20, + IPL_MANA = 0x21, + IPL_MANA_CURSE = 0x22, + IPL_DUR = 0x23, + IPL_DUR_CURSE = 0x24, + IPL_INDESTRUCTIBLE = 0x25, + IPL_LIGHT = 0x26, + IPL_LIGHT_CURSE = 0x27, + IPL_MULT_ARROWS = 0x29, /* only used in hellfire */ + IPL_FIRE_ARROWS = 0x2A, + IPL_LIGHT_ARROWS = 0x2B, + IPL_INVCURS = 0x2C, + IPL_THORNS = 0x2D, + IPL_NOMANA = 0x2E, + IPL_NOHEALPLR = 0x2F, + IPL_ABSHALFTRAP = 0x34, + IPL_KNOCKBACK = 0x35, + IPL_NOHEALMON = 0x36, + IPL_STEALMANA = 0x37, + IPL_STEALLIFE = 0x38, + IPL_TARGAC = 0x39, + IPL_FASTATTACK = 0x3A, + IPL_FASTRECOVER = 0x3B, + IPL_FASTBLOCK = 0x3C, + IPL_DAMMOD = 0x3D, + IPL_RNDARROWVEL = 0x3E, + IPL_SETDAM = 0x3F, + IPL_SETDUR = 0x40, + IPL_NOMINSTR = 0x41, + IPL_SPELL = 0x42, + IPL_FASTSWING = 0x43, + IPL_ONEHAND = 0x44, + IPL_3XDAMVDEM = 0x45, + IPL_ALLRESZERO = 0x46, + IPL_DRAINLIFE = 0x48, + IPL_RNDSTEALLIFE = 0x49, + IPL_INFRAVISION = 0x4A, + IPL_SETAC = 0x4B, + IPL_ADDACLIFE = 0x4C, + IPL_ADDMANAAC = 0x4D, + IPL_FIRERESCLVL = 0x4E, + IPL_AC_CURSE = 0x4F, + IPL_INVALID = 0xFF, +}; + +enum affix_item_type +{ + PLT_MISC = 0x1, + PLT_BOW = 0x10, + PLT_STAFF = 0x100, + PLT_WEAP = 0x1000, + PLT_SHLD = 0x10000, + PLT_ARMO = 0x100000, +}; + +enum _sfx_id +{ + PS_WALK1 = 0x0, + PS_WALK2 = 0x1, + PS_WALK3 = 0x2, + PS_WALK4 = 0x3, + PS_BFIRE = 0x4, + PS_FMAG = 0x5, + PS_TMAG = 0x6, + PS_LGHIT = 0x7, + PS_LGHIT1 = 0x8, + PS_SWING = 0x9, + PS_SWING2 = 0xA, + PS_DEAD = 0xB, + IS_QUESTDN = 0xC, + IS_ARMRFKD = 0xD, + IS_BARLFIRE = 0xE, + IS_BARREL = 0xF, + IS_BHIT = 0x10, + IS_BHIT1 = 0x11, + IS_CHEST = 0x12, + IS_DOORCLOS = 0x13, + IS_DOOROPEN = 0x14, + IS_FANVL = 0x15, + IS_FAXE = 0x16, + IS_FBLST = 0x17, + IS_FBODY = 0x18, + IS_FBOOK = 0x19, + IS_FBOW = 0x1A, + IS_FCAP = 0x1B, + IS_FHARM = 0x1C, + IS_FLARM = 0x1D, + IS_FMAG = 0x1E, + IS_FMAG1 = 0x1F, + IS_FMUSH = 0x20, + IS_FPOT = 0x21, + IS_FRING = 0x22, + IS_FROCK = 0x23, + IS_FSCRL = 0x24, + IS_FSHLD = 0x25, + IS_FSIGN = 0x26, + IS_FSTAF = 0x27, + IS_FSWOR = 0x28, + IS_GOLD = 0x29, + IS_HLMTFKD = 0x2A, + IS_IANVL = 0x2B, + IS_IAXE = 0x2C, + IS_IBLST = 0x2D, + IS_IBODY = 0x2E, + IS_IBOOK = 0x2F, + IS_IBOW = 0x30, + IS_ICAP = 0x31, + IS_IGRAB = 0x32, + IS_IHARM = 0x33, + IS_ILARM = 0x34, + IS_IMUSH = 0x35, + IS_IPOT = 0x36, + IS_IRING = 0x37, + IS_IROCK = 0x38, + IS_ISCROL = 0x39, + IS_ISHIEL = 0x3A, + IS_ISIGN = 0x3B, + IS_ISTAF = 0x3C, + IS_ISWORD = 0x3D, + IS_LEVER = 0x3E, + IS_MAGIC = 0x3F, + IS_MAGIC1 = 0x40, + IS_RBOOK = 0x41, + IS_SARC = 0x42, + IS_SHLDFKD = 0x43, + IS_SWRDFKD = 0x44, + IS_TITLEMOV = 0x45, + IS_TITLSLCT = 0x46, + SFX_SILENCE = 0x47, + IS_TRAP = 0x48, + IS_CAST1 = 0x49, + IS_CAST10 = 0x4A, + IS_CAST12 = 0x4B, + IS_CAST2 = 0x4C, + IS_CAST3 = 0x4D, + IS_CAST4 = 0x4E, + IS_CAST5 = 0x4F, + IS_CAST6 = 0x50, + IS_CAST7 = 0x51, + IS_CAST8 = 0x52, + IS_CAST9 = 0x53, + LS_HEALING = 0x54, + IS_REPAIR = 0x55, + LS_ACID = 0x56, + LS_ACIDS = 0x57, + LS_APOC = 0x58, + LS_ARROWALL = 0x59, + LS_BLODBOIL = 0x5A, + LS_BLODSTAR = 0x5B, + LS_BLSIMPT = 0x5C, + LS_BONESP = 0x5D, + LS_BSIMPCT = 0x5E, + LS_CALDRON = 0x5F, + LS_CBOLT = 0x60, + LS_CHLTNING = 0x61, + LS_DSERP = 0x62, + LS_ELECIMP1 = 0x63, + LS_ELEMENTL = 0x64, + LS_ETHEREAL = 0x65, + LS_FBALL = 0x66, + LS_FBOLT1 = 0x67, + LS_FBOLT2 = 0x68, + LS_FIRIMP1 = 0x69, + LS_FIRIMP2 = 0x6A, + LS_FLAMWAVE = 0x6B, + LS_FLASH = 0x6C, + LS_FOUNTAIN = 0x6D, + LS_GOLUM = 0x6E, + LS_GOLUMDED = 0x6F, + LS_GSHRINE = 0x70, + LS_GUARD = 0x71, + LS_GUARDLAN = 0x72, + LS_HOLYBOLT = 0x73, + LS_HYPER = 0x74, + LS_INFRAVIS = 0x75, + LS_INVISIBL = 0x76, + LS_INVPOT = 0x77, + LS_LNING1 = 0x78, + LS_LTNING = 0x79, + LS_MSHIELD = 0x7A, + LS_NOVA = 0x7B, + LS_PORTAL = 0x7C, + LS_PUDDLE = 0x7D, + LS_RESUR = 0x7E, + LS_SCURSE = 0x7F, + LS_SCURIMP = 0x80, + LS_SENTINEL = 0x81, + LS_SHATTER = 0x82, + LS_SOULFIRE = 0x83, + LS_SPOUTLOP = 0x84, + LS_SPOUTSTR = 0x85, + LS_STORM = 0x86, + LS_TRAPDIS = 0x87, + LS_TELEPORT = 0x88, + LS_VTHEFT = 0x89, + LS_WALLLOOP = 0x8A, + LS_WALLSTRT = 0x8B, + TSFX_BMAID1 = 0x8C, + TSFX_BMAID2 = 0x8D, + TSFX_BMAID3 = 0x8E, + TSFX_BMAID4 = 0x8F, + TSFX_BMAID5 = 0x90, + TSFX_BMAID6 = 0x91, + TSFX_BMAID7 = 0x92, + TSFX_BMAID8 = 0x93, + TSFX_BMAID9 = 0x94, + TSFX_BMAID10 = 0x95, + TSFX_BMAID11 = 0x96, + TSFX_BMAID12 = 0x97, + TSFX_BMAID13 = 0x98, + TSFX_BMAID14 = 0x99, + TSFX_BMAID15 = 0x9A, + TSFX_BMAID16 = 0x9B, + TSFX_BMAID17 = 0x9C, + TSFX_BMAID18 = 0x9D, + TSFX_BMAID19 = 0x9E, + TSFX_BMAID20 = 0x9F, + TSFX_BMAID21 = 0xA0, + TSFX_BMAID22 = 0xA1, + TSFX_BMAID23 = 0xA2, + TSFX_BMAID24 = 0xA3, + TSFX_BMAID25 = 0xA4, + TSFX_BMAID26 = 0xA5, + TSFX_BMAID27 = 0xA6, + TSFX_BMAID28 = 0xA7, + TSFX_BMAID29 = 0xA8, + TSFX_BMAID30 = 0xA9, + TSFX_BMAID31 = 0xAA, + TSFX_BMAID32 = 0xAB, + TSFX_BMAID33 = 0xAC, + TSFX_BMAID34 = 0xAD, + TSFX_BMAID35 = 0xAE, + TSFX_BMAID36 = 0xAF, + TSFX_BMAID37 = 0xB0, + TSFX_BMAID38 = 0xB1, + TSFX_BMAID39 = 0xB2, + TSFX_BMAID40 = 0xB3, + TSFX_SMITH1 = 0xB4, + TSFX_SMITH2 = 0xB5, + TSFX_SMITH3 = 0xB6, + TSFX_SMITH4 = 0xB7, + TSFX_SMITH5 = 0xB8, + TSFX_SMITH6 = 0xB9, + TSFX_SMITH7 = 0xBA, + TSFX_SMITH8 = 0xBB, + TSFX_SMITH9 = 0xBC, + TSFX_SMITH10 = 0xBD, + TSFX_SMITH11 = 0xBE, + TSFX_SMITH12 = 0xBF, + TSFX_SMITH13 = 0xC0, + TSFX_SMITH14 = 0xC1, + TSFX_SMITH15 = 0xC2, + TSFX_SMITH16 = 0xC3, + TSFX_SMITH17 = 0xC4, + TSFX_SMITH18 = 0xC5, + TSFX_SMITH19 = 0xC6, + TSFX_SMITH20 = 0xC7, + TSFX_SMITH21 = 0xC8, + TSFX_SMITH22 = 0xC9, + TSFX_SMITH23 = 0xCA, + TSFX_SMITH24 = 0xCB, + TSFX_SMITH25 = 0xCC, + TSFX_SMITH26 = 0xCD, + TSFX_SMITH27 = 0xCE, + TSFX_SMITH28 = 0xCF, + TSFX_SMITH29 = 0xD0, + TSFX_SMITH30 = 0xD1, + TSFX_SMITH31 = 0xD2, + TSFX_SMITH32 = 0xD3, + TSFX_SMITH33 = 0xD4, + TSFX_SMITH34 = 0xD5, + TSFX_SMITH35 = 0xD6, + TSFX_SMITH36 = 0xD7, + TSFX_SMITH37 = 0xD8, + TSFX_SMITH38 = 0xD9, + TSFX_SMITH39 = 0xDA, + TSFX_SMITH40 = 0xDB, + TSFX_SMITH41 = 0xDC, + TSFX_SMITH42 = 0xDD, + TSFX_SMITH43 = 0xDE, + TSFX_SMITH44 = 0xDF, + TSFX_SMITH45 = 0xE0, + TSFX_SMITH46 = 0xE1, + TSFX_SMITH47 = 0xE2, + TSFX_SMITH48 = 0xE3, + TSFX_SMITH49 = 0xE4, + TSFX_SMITH50 = 0xE5, + TSFX_SMITH51 = 0xE6, + TSFX_SMITH52 = 0xE7, + TSFX_SMITH53 = 0xE8, + TSFX_SMITH54 = 0xE9, + TSFX_SMITH55 = 0xEA, + TSFX_SMITH56 = 0xEB, + TSFX_COW1 = 0xEC, + TSFX_COW2 = 0xED, + TSFX_DEADGUY = 0xEE, + TSFX_DRUNK1 = 0xEF, + TSFX_DRUNK2 = 0xF0, + TSFX_DRUNK3 = 0xF1, + TSFX_DRUNK4 = 0xF2, + TSFX_DRUNK5 = 0xF3, + TSFX_DRUNK6 = 0xF4, + TSFX_DRUNK7 = 0xF5, + TSFX_DRUNK8 = 0xF6, + TSFX_DRUNK9 = 0xF7, + TSFX_DRUNK10 = 0xF8, + TSFX_DRUNK11 = 0xF9, + TSFX_DRUNK12 = 0xFA, + TSFX_DRUNK13 = 0xFB, + TSFX_DRUNK14 = 0xFC, + TSFX_DRUNK15 = 0xFD, + TSFX_DRUNK16 = 0xFE, + TSFX_DRUNK17 = 0xFF, + TSFX_DRUNK18 = 0x100, + TSFX_DRUNK19 = 0x101, + TSFX_DRUNK20 = 0x102, + TSFX_DRUNK21 = 0x103, + TSFX_DRUNK22 = 0x104, + TSFX_DRUNK23 = 0x105, + TSFX_DRUNK24 = 0x106, + TSFX_DRUNK25 = 0x107, + TSFX_DRUNK26 = 0x108, + TSFX_DRUNK27 = 0x109, + TSFX_DRUNK28 = 0x10A, + TSFX_DRUNK29 = 0x10B, + TSFX_DRUNK30 = 0x10C, + TSFX_DRUNK31 = 0x10D, + TSFX_DRUNK32 = 0x10E, + TSFX_DRUNK33 = 0x10F, + TSFX_DRUNK34 = 0x110, + TSFX_DRUNK35 = 0x111, + TSFX_HEALER1 = 0x112, + TSFX_HEALER2 = 0x113, + TSFX_HEALER3 = 0x114, + TSFX_HEALER4 = 0x115, + TSFX_HEALER5 = 0x116, + TSFX_HEALER6 = 0x117, + TSFX_HEALER7 = 0x118, + TSFX_HEALER8 = 0x119, + TSFX_HEALER9 = 0x11A, + TSFX_HEALER10 = 0x11B, + TSFX_HEALER11 = 0x11C, + TSFX_HEALER12 = 0x11D, + TSFX_HEALER13 = 0x11E, + TSFX_HEALER14 = 0x11F, + TSFX_HEALER15 = 0x120, + TSFX_HEALER16 = 0x121, + TSFX_HEALER17 = 0x122, + TSFX_HEALER18 = 0x123, + TSFX_HEALER19 = 0x124, + TSFX_HEALER20 = 0x125, + TSFX_HEALER21 = 0x126, + TSFX_HEALER22 = 0x127, + TSFX_HEALER23 = 0x128, + TSFX_HEALER24 = 0x129, + TSFX_HEALER25 = 0x12A, + TSFX_HEALER26 = 0x12B, + TSFX_HEALER27 = 0x12C, + TSFX_HEALER28 = 0x12D, + TSFX_HEALER29 = 0x12E, + TSFX_HEALER30 = 0x12F, + TSFX_HEALER31 = 0x130, + TSFX_HEALER32 = 0x131, + TSFX_HEALER33 = 0x132, + TSFX_HEALER34 = 0x133, + TSFX_HEALER35 = 0x134, + TSFX_HEALER36 = 0x135, + TSFX_HEALER37 = 0x136, + TSFX_HEALER38 = 0x137, + TSFX_HEALER39 = 0x138, + TSFX_HEALER40 = 0x139, + TSFX_HEALER41 = 0x13A, + TSFX_HEALER42 = 0x13B, + TSFX_HEALER43 = 0x13C, + TSFX_HEALER44 = 0x13D, + TSFX_HEALER45 = 0x13E, + TSFX_HEALER46 = 0x13F, + TSFX_HEALER47 = 0x140, + TSFX_PEGBOY1 = 0x141, + TSFX_PEGBOY2 = 0x142, + TSFX_PEGBOY3 = 0x143, + TSFX_PEGBOY4 = 0x144, + TSFX_PEGBOY5 = 0x145, + TSFX_PEGBOY6 = 0x146, + TSFX_PEGBOY7 = 0x147, + TSFX_PEGBOY8 = 0x148, + TSFX_PEGBOY9 = 0x149, + TSFX_PEGBOY10 = 0x14A, + TSFX_PEGBOY11 = 0x14B, + TSFX_PEGBOY12 = 0x14C, + TSFX_PEGBOY13 = 0x14D, + TSFX_PEGBOY14 = 0x14E, + TSFX_PEGBOY15 = 0x14F, + TSFX_PEGBOY16 = 0x150, + TSFX_PEGBOY17 = 0x151, + TSFX_PEGBOY18 = 0x152, + TSFX_PEGBOY19 = 0x153, + TSFX_PEGBOY20 = 0x154, + TSFX_PEGBOY21 = 0x155, + TSFX_PEGBOY22 = 0x156, + TSFX_PEGBOY23 = 0x157, + TSFX_PEGBOY24 = 0x158, + TSFX_PEGBOY25 = 0x159, + TSFX_PEGBOY26 = 0x15A, + TSFX_PEGBOY27 = 0x15B, + TSFX_PEGBOY28 = 0x15C, + TSFX_PEGBOY29 = 0x15D, + TSFX_PEGBOY30 = 0x15E, + TSFX_PEGBOY31 = 0x15F, + TSFX_PEGBOY32 = 0x160, + TSFX_PEGBOY33 = 0x161, + TSFX_PEGBOY34 = 0x162, + TSFX_PEGBOY35 = 0x163, + TSFX_PEGBOY36 = 0x164, + TSFX_PEGBOY37 = 0x165, + TSFX_PEGBOY38 = 0x166, + TSFX_PEGBOY39 = 0x167, + TSFX_PEGBOY40 = 0x168, + TSFX_PEGBOY41 = 0x169, + TSFX_PEGBOY42 = 0x16A, + TSFX_PEGBOY43 = 0x16B, + TSFX_PRIEST0 = 0x16C, + TSFX_PRIEST1 = 0x16D, + TSFX_PRIEST2 = 0x16E, + TSFX_PRIEST3 = 0x16F, + TSFX_PRIEST4 = 0x170, + TSFX_PRIEST5 = 0x171, + TSFX_PRIEST6 = 0x172, + TSFX_PRIEST7 = 0x173, + TSFX_STORY0 = 0x174, + TSFX_STORY1 = 0x175, + TSFX_STORY2 = 0x176, + TSFX_STORY3 = 0x177, + TSFX_STORY4 = 0x178, + TSFX_STORY5 = 0x179, + TSFX_STORY6 = 0x17A, + TSFX_STORY7 = 0x17B, + TSFX_STORY8 = 0x17C, + TSFX_STORY9 = 0x17D, + TSFX_STORY10 = 0x17E, + TSFX_STORY11 = 0x17F, + TSFX_STORY12 = 0x180, + TSFX_STORY13 = 0x181, + TSFX_STORY14 = 0x182, + TSFX_STORY15 = 0x183, + TSFX_STORY16 = 0x184, + TSFX_STORY17 = 0x185, + TSFX_STORY18 = 0x186, + TSFX_STORY19 = 0x187, + TSFX_STORY20 = 0x188, + TSFX_STORY21 = 0x189, + TSFX_STORY22 = 0x18A, + TSFX_STORY23 = 0x18B, + TSFX_STORY24 = 0x18C, + TSFX_STORY25 = 0x18D, + TSFX_STORY26 = 0x18E, + TSFX_STORY27 = 0x18F, + TSFX_STORY28 = 0x190, + TSFX_STORY29 = 0x191, + TSFX_STORY30 = 0x192, + TSFX_STORY31 = 0x193, + TSFX_STORY32 = 0x194, + TSFX_STORY33 = 0x195, + TSFX_STORY34 = 0x196, + TSFX_STORY35 = 0x197, + TSFX_STORY36 = 0x198, + TSFX_STORY37 = 0x199, + TSFX_STORY38 = 0x19A, + TSFX_TAVERN0 = 0x19B, + TSFX_TAVERN1 = 0x19C, + TSFX_TAVERN2 = 0x19D, + TSFX_TAVERN3 = 0x19E, + TSFX_TAVERN4 = 0x19F, + TSFX_TAVERN5 = 0x1A0, + TSFX_TAVERN6 = 0x1A1, + TSFX_TAVERN7 = 0x1A2, + TSFX_TAVERN8 = 0x1A3, + TSFX_TAVERN9 = 0x1A4, + TSFX_TAVERN10 = 0x1A5, + TSFX_TAVERN11 = 0x1A6, + TSFX_TAVERN12 = 0x1A7, + TSFX_TAVERN13 = 0x1A8, + TSFX_TAVERN14 = 0x1A9, + TSFX_TAVERN15 = 0x1AA, + TSFX_TAVERN16 = 0x1AB, + TSFX_TAVERN17 = 0x1AC, + TSFX_TAVERN18 = 0x1AD, + TSFX_TAVERN19 = 0x1AE, + TSFX_TAVERN20 = 0x1AF, + TSFX_TAVERN21 = 0x1B0, + TSFX_TAVERN22 = 0x1B1, + TSFX_TAVERN23 = 0x1B2, + TSFX_TAVERN24 = 0x1B3, + TSFX_TAVERN25 = 0x1B4, + TSFX_TAVERN26 = 0x1B5, + TSFX_TAVERN27 = 0x1B6, + TSFX_TAVERN28 = 0x1B7, + TSFX_TAVERN29 = 0x1B8, + TSFX_TAVERN30 = 0x1B9, + TSFX_TAVERN31 = 0x1BA, + TSFX_TAVERN32 = 0x1BB, + TSFX_TAVERN33 = 0x1BC, + TSFX_TAVERN34 = 0x1BD, + TSFX_TAVERN35 = 0x1BE, + TSFX_TAVERN36 = 0x1BF, + TSFX_TAVERN37 = 0x1C0, + TSFX_TAVERN38 = 0x1C1, + TSFX_TAVERN39 = 0x1C2, + TSFX_TAVERN40 = 0x1C3, + TSFX_TAVERN41 = 0x1C4, + TSFX_TAVERN42 = 0x1C5, + TSFX_TAVERN43 = 0x1C6, + TSFX_TAVERN44 = 0x1C7, + TSFX_TAVERN45 = 0x1C8, + TSFX_WITCH1 = 0x1C9, + TSFX_WITCH2 = 0x1CA, + TSFX_WITCH3 = 0x1CB, + TSFX_WITCH4 = 0x1CC, + TSFX_WITCH5 = 0x1CD, + TSFX_WITCH6 = 0x1CE, + TSFX_WITCH7 = 0x1CF, + TSFX_WITCH8 = 0x1D0, + TSFX_WITCH9 = 0x1D1, + TSFX_WITCH10 = 0x1D2, + TSFX_WITCH11 = 0x1D3, + TSFX_WITCH12 = 0x1D4, + TSFX_WITCH13 = 0x1D5, + TSFX_WITCH14 = 0x1D6, + TSFX_WITCH15 = 0x1D7, + TSFX_WITCH16 = 0x1D8, + TSFX_WITCH17 = 0x1D9, + TSFX_WITCH18 = 0x1DA, + TSFX_WITCH19 = 0x1DB, + TSFX_WITCH20 = 0x1DC, + TSFX_WITCH21 = 0x1DD, + TSFX_WITCH22 = 0x1DE, + TSFX_WITCH23 = 0x1DF, + TSFX_WITCH24 = 0x1E0, + TSFX_WITCH25 = 0x1E1, + TSFX_WITCH26 = 0x1E2, + TSFX_WITCH27 = 0x1E3, + TSFX_WITCH28 = 0x1E4, + TSFX_WITCH29 = 0x1E5, + TSFX_WITCH30 = 0x1E6, + TSFX_WITCH31 = 0x1E7, + TSFX_WITCH32 = 0x1E8, + TSFX_WITCH33 = 0x1E9, + TSFX_WITCH34 = 0x1EA, + TSFX_WITCH35 = 0x1EB, + TSFX_WITCH36 = 0x1EC, + TSFX_WITCH37 = 0x1ED, + TSFX_WITCH38 = 0x1EE, + TSFX_WITCH39 = 0x1EF, + TSFX_WITCH40 = 0x1F0, + TSFX_WITCH41 = 0x1F1, + TSFX_WITCH42 = 0x1F2, + TSFX_WITCH43 = 0x1F3, + TSFX_WITCH44 = 0x1F4, + TSFX_WITCH45 = 0x1F5, + TSFX_WITCH46 = 0x1F6, + TSFX_WITCH47 = 0x1F7, + TSFX_WITCH48 = 0x1F8, + TSFX_WITCH49 = 0x1F9, + TSFX_WITCH50 = 0x1FA, + TSFX_WOUND = 0x1FB, + PS_MAGE1 = 0x1FC, + PS_MAGE2 = 0x1FD, + PS_MAGE3 = 0x1FE, + PS_MAGE4 = 0x1FF, + PS_MAGE5 = 0x200, + PS_MAGE6 = 0x201, + PS_MAGE7 = 0x202, + PS_MAGE8 = 0x203, + PS_MAGE9 = 0x204, + PS_MAGE10 = 0x205, + PS_MAGE11 = 0x206, + PS_MAGE12 = 0x207, + PS_MAGE13 = 0x208, + PS_MAGE14 = 0x209, + PS_MAGE15 = 0x20A, + PS_MAGE16 = 0x20B, + PS_MAGE17 = 0x20C, + PS_MAGE18 = 0x20D, + PS_MAGE19 = 0x20E, + PS_MAGE20 = 0x20F, + PS_MAGE21 = 0x210, + PS_MAGE22 = 0x211, + PS_MAGE23 = 0x212, + PS_MAGE24 = 0x213, + PS_MAGE25 = 0x214, + PS_MAGE26 = 0x215, + PS_MAGE27 = 0x216, + PS_MAGE28 = 0x217, + PS_MAGE29 = 0x218, + PS_MAGE30 = 0x219, + PS_MAGE31 = 0x21A, + PS_MAGE32 = 0x21B, + PS_MAGE33 = 0x21C, + PS_MAGE34 = 0x21D, + PS_MAGE35 = 0x21E, + PS_MAGE36 = 0x21F, + PS_MAGE37 = 0x220, + PS_MAGE38 = 0x221, + PS_MAGE39 = 0x222, + PS_MAGE40 = 0x223, + PS_MAGE41 = 0x224, + PS_MAGE42 = 0x225, + PS_MAGE43 = 0x226, + PS_MAGE44 = 0x227, + PS_MAGE45 = 0x228, + PS_MAGE46 = 0x229, + PS_MAGE47 = 0x22A, + PS_MAGE48 = 0x22B, + PS_MAGE49 = 0x22C, + PS_MAGE50 = 0x22D, + PS_MAGE51 = 0x22E, + PS_MAGE52 = 0x22F, + PS_MAGE53 = 0x230, + PS_MAGE54 = 0x231, + PS_MAGE55 = 0x232, + PS_MAGE56 = 0x233, + PS_MAGE57 = 0x234, + PS_MAGE58 = 0x235, + PS_MAGE59 = 0x236, + PS_MAGE60 = 0x237, + PS_MAGE61 = 0x238, + PS_MAGE62 = 0x239, + PS_MAGE63 = 0x23A, + PS_MAGE64 = 0x23B, + PS_MAGE65 = 0x23C, + PS_MAGE66 = 0x23D, + PS_MAGE67 = 0x23E, + PS_MAGE68 = 0x23F, + PS_MAGE69 = 0x240, + PS_MAGE69B = 0x241, + PS_MAGE70 = 0x242, + PS_MAGE71 = 0x243, + PS_MAGE72 = 0x244, + PS_MAGE73 = 0x245, + PS_MAGE74 = 0x246, + PS_MAGE75 = 0x247, + PS_MAGE76 = 0x248, + PS_MAGE77 = 0x249, + PS_MAGE78 = 0x24A, + PS_MAGE79 = 0x24B, + PS_MAGE80 = 0x24C, + PS_MAGE81 = 0x24D, + PS_MAGE82 = 0x24E, + PS_MAGE83 = 0x24F, + PS_MAGE84 = 0x250, + PS_MAGE85 = 0x251, + PS_MAGE86 = 0x252, + PS_MAGE87 = 0x253, + PS_MAGE88 = 0x254, + PS_MAGE89 = 0x255, + PS_MAGE90 = 0x256, + PS_MAGE91 = 0x257, + PS_MAGE92 = 0x258, + PS_MAGE93 = 0x259, + PS_MAGE94 = 0x25A, + PS_MAGE95 = 0x25B, + PS_MAGE96 = 0x25C, + PS_MAGE97 = 0x25D, + PS_MAGE98 = 0x25E, + PS_MAGE99 = 0x25F, + PS_MAGE100 = 0x260, + PS_MAGE101 = 0x261, + PS_MAGE102 = 0x262, + PS_ROGUE1 = 0x263, + PS_ROGUE2 = 0x264, + PS_ROGUE3 = 0x265, + PS_ROGUE4 = 0x266, + PS_ROGUE5 = 0x267, + PS_ROGUE6 = 0x268, + PS_ROGUE7 = 0x269, + PS_ROGUE8 = 0x26A, + PS_ROGUE9 = 0x26B, + PS_ROGUE10 = 0x26C, + PS_ROGUE11 = 0x26D, + PS_ROGUE12 = 0x26E, + PS_ROGUE13 = 0x26F, + PS_ROGUE14 = 0x270, + PS_ROGUE15 = 0x271, + PS_ROGUE16 = 0x272, + PS_ROGUE17 = 0x273, + PS_ROGUE18 = 0x274, + PS_ROGUE19 = 0x275, + PS_ROGUE20 = 0x276, + PS_ROGUE21 = 0x277, + PS_ROGUE22 = 0x278, + PS_ROGUE23 = 0x279, + PS_ROGUE24 = 0x27A, + PS_ROGUE25 = 0x27B, + PS_ROGUE26 = 0x27C, + PS_ROGUE27 = 0x27D, + PS_ROGUE28 = 0x27E, + PS_ROGUE29 = 0x27F, + PS_ROGUE30 = 0x280, + PS_ROGUE31 = 0x281, + PS_ROGUE32 = 0x282, + PS_ROGUE33 = 0x283, + PS_ROGUE34 = 0x284, + PS_ROGUE35 = 0x285, + PS_ROGUE36 = 0x286, + PS_ROGUE37 = 0x287, + PS_ROGUE38 = 0x288, + PS_ROGUE39 = 0x289, + PS_ROGUE40 = 0x28A, + PS_ROGUE41 = 0x28B, + PS_ROGUE42 = 0x28C, + PS_ROGUE43 = 0x28D, + PS_ROGUE44 = 0x28E, + PS_ROGUE45 = 0x28F, + PS_ROGUE46 = 0x290, + PS_ROGUE47 = 0x291, + PS_ROGUE48 = 0x292, + PS_ROGUE49 = 0x293, + PS_ROGUE50 = 0x294, + PS_ROGUE51 = 0x295, + PS_ROGUE52 = 0x296, + PS_ROGUE53 = 0x297, + PS_ROGUE54 = 0x298, + PS_ROGUE55 = 0x299, + PS_ROGUE56 = 0x29A, + PS_ROGUE57 = 0x29B, + PS_ROGUE58 = 0x29C, + PS_ROGUE59 = 0x29D, + PS_ROGUE60 = 0x29E, + PS_ROGUE61 = 0x29F, + PS_ROGUE62 = 0x2A0, + PS_ROGUE63 = 0x2A1, + PS_ROGUE64 = 0x2A2, + PS_ROGUE65 = 0x2A3, + PS_ROGUE66 = 0x2A4, + PS_ROGUE67 = 0x2A5, + PS_ROGUE68 = 0x2A6, + PS_ROGUE69 = 0x2A7, + PS_ROGUE69B = 0x2A8, + PS_ROGUE70 = 0x2A9, + PS_ROGUE71 = 0x2AA, + PS_ROGUE72 = 0x2AB, + PS_ROGUE73 = 0x2AC, + PS_ROGUE74 = 0x2AD, + PS_ROGUE75 = 0x2AE, + PS_ROGUE76 = 0x2AF, + PS_ROGUE77 = 0x2B0, + PS_ROGUE78 = 0x2B1, + PS_ROGUE79 = 0x2B2, + PS_ROGUE80 = 0x2B3, + PS_ROGUE81 = 0x2B4, + PS_ROGUE82 = 0x2B5, + PS_ROGUE83 = 0x2B6, + PS_ROGUE84 = 0x2B7, + PS_ROGUE85 = 0x2B8, + PS_ROGUE86 = 0x2B9, + PS_ROGUE87 = 0x2BA, + PS_ROGUE88 = 0x2BB, + PS_ROGUE89 = 0x2BC, + PS_ROGUE90 = 0x2BD, + PS_ROGUE91 = 0x2BE, + PS_ROGUE92 = 0x2BF, + PS_ROGUE93 = 0x2C0, + PS_ROGUE94 = 0x2C1, + PS_ROGUE95 = 0x2C2, + PS_ROGUE96 = 0x2C3, + PS_ROGUE97 = 0x2C4, + PS_ROGUE98 = 0x2C5, + PS_ROGUE99 = 0x2C6, + PS_ROGUE100 = 0x2C7, + PS_ROGUE101 = 0x2C8, + PS_ROGUE102 = 0x2C9, + PS_WARR1 = 0x2CA, + PS_WARR2 = 0x2CB, + PS_WARR3 = 0x2CC, + PS_WARR4 = 0x2CD, + PS_WARR5 = 0x2CE, + PS_WARR6 = 0x2CF, + PS_WARR7 = 0x2D0, + PS_WARR8 = 0x2D1, + PS_WARR9 = 0x2D2, + PS_WARR10 = 0x2D3, + PS_WARR11 = 0x2D4, + PS_WARR12 = 0x2D5, + PS_WARR13 = 0x2D6, + PS_WARR14 = 0x2D7, + PS_WARR14B = 0x2D8, + PS_WARR14C = 0x2D9, + PS_WARR15 = 0x2DA, + PS_WARR15B = 0x2DB, + PS_WARR15C = 0x2DC, + PS_WARR16 = 0x2DD, + PS_WARR16B = 0x2DE, + PS_WARR16C = 0x2DF, + PS_WARR17 = 0x2E0, + PS_WARR18 = 0x2E1, + PS_WARR19 = 0x2E2, + PS_WARR20 = 0x2E3, + PS_WARR21 = 0x2E4, + PS_WARR22 = 0x2E5, + PS_WARR23 = 0x2E6, + PS_WARR24 = 0x2E7, + PS_WARR25 = 0x2E8, + PS_WARR26 = 0x2E9, + PS_WARR27 = 0x2EA, + PS_WARR28 = 0x2EB, + PS_WARR29 = 0x2EC, + PS_WARR30 = 0x2ED, + PS_WARR31 = 0x2EE, + PS_WARR32 = 0x2EF, + PS_WARR33 = 0x2F0, + PS_WARR34 = 0x2F1, + PS_WARR35 = 0x2F2, + PS_WARR36 = 0x2F3, + PS_WARR37 = 0x2F4, + PS_WARR38 = 0x2F5, + PS_WARR39 = 0x2F6, + PS_WARR40 = 0x2F7, + PS_WARR41 = 0x2F8, + PS_WARR42 = 0x2F9, + PS_WARR43 = 0x2FA, + PS_WARR44 = 0x2FB, + PS_WARR45 = 0x2FC, + PS_WARR46 = 0x2FD, + PS_WARR47 = 0x2FE, + PS_WARR48 = 0x2FF, + PS_WARR49 = 0x300, + PS_WARR50 = 0x301, + PS_WARR51 = 0x302, + PS_WARR52 = 0x303, + PS_WARR53 = 0x304, + PS_WARR54 = 0x305, + PS_WARR55 = 0x306, + PS_WARR56 = 0x307, + PS_WARR57 = 0x308, + PS_WARR58 = 0x309, + PS_WARR59 = 0x30A, + PS_WARR60 = 0x30B, + PS_WARR61 = 0x30C, + PS_WARR62 = 0x30D, + PS_WARR63 = 0x30E, + PS_WARR64 = 0x30F, + PS_WARR65 = 0x310, + PS_WARR66 = 0x311, + PS_WARR67 = 0x312, + PS_WARR68 = 0x313, + PS_WARR69 = 0x314, + PS_WARR69B = 0x315, + PS_WARR70 = 0x316, + PS_WARR71 = 0x317, + PS_WARR72 = 0x318, + PS_WARR73 = 0x319, + PS_WARR74 = 0x31A, + PS_WARR75 = 0x31B, + PS_WARR76 = 0x31C, + PS_WARR77 = 0x31D, + PS_WARR78 = 0x31E, + PS_WARR79 = 0x31F, + PS_WARR80 = 0x320, + PS_WARR81 = 0x321, + PS_WARR82 = 0x322, + PS_WARR83 = 0x323, + PS_WARR84 = 0x324, + PS_WARR85 = 0x325, + PS_WARR86 = 0x326, + PS_WARR87 = 0x327, + PS_WARR88 = 0x328, + PS_WARR89 = 0x329, + PS_WARR90 = 0x32A, + PS_WARR91 = 0x32B, + PS_WARR92 = 0x32C, + PS_WARR93 = 0x32D, + PS_WARR94 = 0x32E, + PS_WARR95 = 0x32F, + PS_WARR95B = 0x330, + PS_WARR95C = 0x331, + PS_WARR95D = 0x332, + PS_WARR95E = 0x333, + PS_WARR95F = 0x334, + PS_WARR96B = 0x335, + PS_WARR97 = 0x336, + PS_WARR98 = 0x337, + PS_WARR99 = 0x338, + PS_WARR100 = 0x339, + PS_WARR101 = 0x33A, + PS_WARR102 = 0x33B, + PS_NAR1 = 0x33C, + PS_NAR2 = 0x33D, + PS_NAR3 = 0x33E, + PS_NAR4 = 0x33F, + PS_NAR5 = 0x340, + PS_NAR6 = 0x341, + PS_NAR7 = 0x342, + PS_NAR8 = 0x343, + PS_NAR9 = 0x344, + PS_DIABLVLINT = 0x345, + USFX_CLEAVER = 0x346, + USFX_GARBUD1 = 0x347, + USFX_GARBUD2 = 0x348, + USFX_GARBUD3 = 0x349, + USFX_GARBUD4 = 0x34A, + USFX_IZUAL1 = 0x34B, + USFX_LACH1 = 0x34C, + USFX_LACH2 = 0x34D, + USFX_LACH3 = 0x34E, + USFX_LAZ1 = 0x34F, + USFX_LAZ2 = 0x350, + USFX_SKING1 = 0x351, + USFX_SNOT1 = 0x352, + USFX_SNOT2 = 0x353, + USFX_SNOT3 = 0x354, + USFX_WARLRD1 = 0x355, + USFX_WLOCK1 = 0x356, + USFX_ZHAR1 = 0x357, + USFX_ZHAR2 = 0x358, + USFX_DIABLOD = 0x359, +}; + +enum item_equip_type +{ + ILOC_NONE = 0x0, + ILOC_ONEHAND = 0x1, + ILOC_TWOHAND = 0x2, + ILOC_ARMOR = 0x3, + ILOC_HELM = 0x4, + ILOC_RING = 0x5, + ILOC_AMULET = 0x6, + ILOC_UNEQUIPABLE = 0x7, + ILOC_BELT = 0x8, + ILOC_INVALID = 0xFF, +}; + +enum missile_id +{ + MIS_ARROW = 0x0, + MIS_FIREBOLT = 0x1, + MIS_GUARDIAN = 0x2, + MIS_RNDTELEPORT = 0x3, + MIS_LIGHTBALL = 0x4, + MIS_FIREWALL = 0x5, + MIS_FIREBALL = 0x6, + MIS_LIGHTCTRL = 0x7, + MIS_LIGHTNING = 0x8, + MIS_MISEXP = 0x9, + MIS_TOWN = 0xA, + MIS_FLASH = 0xB, + MIS_FLASH2 = 0xC, + MIS_MANASHIELD = 0xD, + MIS_FIREMOVE = 0xE, + MIS_CHAIN = 0xF, + MIS_NULL_10 = 0x10, // sentinal? + MIS_NULL_11 = 0x11, + MIS_NULL_12 = 0x12, + MIS_NULL_13 = 0x13, + MIS_RHINO = 0x14, + MIS_MAGMABALL = 0x15, + MIS_LIGHTCTRL2 = 0x16, + MIS_LIGHTNING2 = 0x17, + MIS_FLARE = 0x18, + MIS_MISEXP2 = 0x19, + MIS_TELEPORT = 0x1A, + MIS_LARROW = 0x1B, // fire + MIS_DOOMSERP = 0x1C, + MIS_NULL_1D = 0x1D, + MIS_STONE = 0x1E, + MIS_NULL_1F = 0x1F, + MIS_INVISIBL = 0x20, + MIS_GOLEM = 0x21, + MIS_ETHEREALIZE = 0x22, + MIS_NULL_23 = 0x23, + MIS_BOOM = 0x24, + MIS_HEAL = 0x25, + MIS_FIREWALLC = 0x26, + MIS_INFRA = 0x27, + MIS_IDENTIFY = 0x28, + MIS_WAVE = 0x29, + MIS_NOVA = 0x2A, + MIS_BLODBOIL = 0x2B, + MIS_APOCA = 0x2C, + MIS_REPAIR = 0x2D, + MIS_RECHARGE = 0x2E, + MIS_DISARM = 0x2F, + MIS_FLAME = 0x30, + MIS_FLAMEC = 0x31, + MIS_NULL_32 = 0x32, + MIS_NULL_33 = 0x33, + MIS_CBOLT = 0x34, + MIS_HBOLT = 0x35, + MIS_RESURRECT = 0x36, + MIS_TELEKINESIS = 0x37, + MIS_LARROW2 = 0x38, // light + MIS_ACID = 0x39, + MIS_MISEXP3 = 0x3A, + MIS_ACIDPUD = 0x3B, + MIS_HEALOTHER = 0x3C, + MIS_ELEMENT = 0x3D, + MIS_RESURRECTBEAM = 0x3E, + MIS_BONESPIRIT = 0x3F, + MIS_WEAPEXP = 0x40, + MIS_RPORTAL = 0x41, + MIS_BOOM2 = 0x42, + MIS_DIABAPOCA = 0x43, +}; + +enum missile_graphic_id +{ + MFILE_ARROWS = 0x0, + MFILE_FIREBA = 0x1, + MFILE_GUARD = 0x2, + MFILE_LGHNING = 0x3, + MFILE_FIREWAL = 0x4, + MFILE_MAGBLOS = 0x5, + MFILE_PORTAL = 0x6, + MFILE_BLUEXFR = 0x7, + MFILE_BLUEXBK = 0x8, + MFILE_MANASHLD = 0x9, + MFILE_BLOOD = 0xA, + MFILE_BONE = 0xB, + MFILE_METLHIT = 0xC, + MFILE_FARROW = 0xD, + MFILE_DOOM = 0xE, + MFILE_0F = 0xF, + MFILE_BLODBUR = 0x10, + MFILE_NEWEXP = 0x11, + MFILE_SHATTER1 = 0x12, + MFILE_BIGEXP = 0x13, + MFILE_INFERNO = 0x14, + MFILE_THINLGHT = 0x15, + MFILE_FLARE = 0x16, + MFILE_FLAREEXP = 0x17, + MFILE_MAGBALL = 0x18, + MFILE_KRULL = 0x19, + MFILE_MINILTNG = 0x1A, + MFILE_HOLY = 0x1B, + MFILE_HOLYEXPL = 0x1C, + MFILE_LARROW = 0x1D, + MFILE_FIRARWEX = 0x1E, + MFILE_ACIDBF = 0x1F, + MFILE_ACIDSPLA = 0x20, + MFILE_ACIDPUD = 0x21, + MFILE_ETHRSHLD = 0x22, + MFILE_FIRERUN = 0x23, + MFILE_RESSUR1 = 0x24, + MFILE_SKLBALL = 0x25, + MFILE_RPORTAL = 0x26, + MFILE_FIREPLAR = 0x27, + MFILE_SCUBMISB = 0x28, + MFILE_SCBSEXPB = 0x29, + MFILE_SCUBMISC = 0x2A, + MFILE_SCBSEXPC = 0x2B, + MFILE_SCUBMISD = 0x2C, + MFILE_SCBSEXPD = 0x2D, + MFILE_NULL = 0x2E, + MFILE_INVALID = 0x2F, + MFILE_NONE = 0xFF, +}; + +enum _mai_id +{ + AI_ZOMBIE = 0, + AI_FAT = 1, + AI_SKELSD = 2, + AI_SKELBOW = 3, + AI_SCAV = 4, + AI_RHINO = 5, + AI_GOATMC = 6, + AI_GOATBOW = 7, + AI_FALLEN = 8, + AI_MAGMA = 9, + AI_SKELKING = 10, + AI_BAT = 11, + AI_GARG = 12, + AI_CLEAVER = 13, + AI_SUCC = 14, + AI_SNEAK = 15, + AI_STORM = 16, + AI_FIREMAN = 17, + AI_GARBUD = 18, + AI_ACID = 19, + AI_ACIDUNIQ = 20, + AI_GOLUM = 21, + AI_ZHAR = 22, + AI_SNOTSPIL = 23, + AI_SNAKE = 24, + AI_COUNSLR = 25, + AI_MEGA = 26, + AI_DIABLO = 27, + AI_LAZURUS = 28, + AI_LAZHELP = 29, + AI_LACHDAN = 30, + AI_WARLORD = 31, +}; + +enum _mc_id +{ + MC_UNDEAD = 0, + MC_DEMON = 1, + MC_ANIMAL = 2, +}; + +enum _monster_id +{ + MT_NZOMBIE = 0x0, + MT_BZOMBIE = 0x1, + MT_GZOMBIE = 0x2, + MT_YZOMBIE = 0x3, + MT_RFALLSP = 0x4, + MT_DFALLSP = 0x5, + MT_YFALLSP = 0x6, + MT_BFALLSP = 0x7, + MT_WSKELAX = 0x8, + MT_TSKELAX = 0x9, + MT_RSKELAX = 0xA, + MT_XSKELAX = 0xB, + MT_RFALLSD = 0xC, + MT_DFALLSD = 0xD, + MT_YFALLSD = 0xE, + MT_BFALLSD = 0xF, + MT_NSCAV = 0x10, + MT_BSCAV = 0x11, + MT_WSCAV = 0x12, + MT_YSCAV = 0x13, + MT_WSKELBW = 0x14, + MT_TSKELBW = 0x15, + MT_RSKELBW = 0x16, + MT_XSKELBW = 0x17, + MT_WSKELSD = 0x18, + MT_TSKELSD = 0x19, + MT_RSKELSD = 0x1A, + MT_XSKELSD = 0x1B, + MT_INVILORD = 0x1C, + MT_SNEAK = 0x1D, + MT_STALKER = 0x1E, + MT_UNSEEN = 0x1F, + MT_ILLWEAV = 0x20, + MT_LRDSAYTR = 0x21, + MT_NGOATMC = 0x22, + MT_BGOATMC = 0x23, + MT_RGOATMC = 0x24, + MT_GGOATMC = 0x25, + MT_FIEND = 0x26, + MT_BLINK = 0x27, + MT_GLOOM = 0x28, + MT_FAMILIAR = 0x29, + MT_NGOATBW = 0x2A, + MT_BGOATBW = 0x2B, + MT_RGOATBW = 0x2C, + MT_GGOATBW = 0x2D, + MT_NACID = 0x2E, + MT_RACID = 0x2F, + MT_BACID = 0x30, + MT_XACID = 0x31, + MT_SKING = 0x32, + MT_CLEAVER = 0x33, + MT_FAT = 0x34, + MT_MUDMAN = 0x35, + MT_TOAD = 0x36, + MT_FLAYED = 0x37, + MT_WYRM = 0x38, + MT_CAVSLUG = 0x39, + MT_DVLWYRM = 0x3A, + MT_DEVOUR = 0x3B, + MT_NMAGMA = 0x3C, + MT_YMAGMA = 0x3D, + MT_BMAGMA = 0x3E, + MT_WMAGMA = 0x3F, + MT_HORNED = 0x40, + MT_MUDRUN = 0x41, + MT_FROSTC = 0x42, + MT_OBLORD = 0x43, + MT_BONEDMN = 0x44, + MT_REDDTH = 0x45, + MT_LTCHDMN = 0x46, + MT_UDEDBLRG = 0x47, + MT_INCIN = 0x48, + MT_FLAMLRD = 0x49, + MT_DOOMFIRE = 0x4A, + MT_HELLBURN = 0x4B, + MT_STORM = 0x4C, + MT_RSTORM = 0x4D, + MT_STORML = 0x4E, + MT_MAEL = 0x4F, + MT_BIGFALL = 0x50, + MT_WINGED = 0x51, + MT_GARGOYLE = 0x52, + MT_BLOODCLW = 0x53, + MT_DEATHW = 0x54, + MT_MEGA = 0x55, + MT_GUARD = 0x56, + MT_VTEXLRD = 0x57, + MT_BALROG = 0x58, + MT_NSNAKE = 0x59, + MT_RSNAKE = 0x5A, + MT_BSNAKE = 0x5B, + MT_GSNAKE = 0x5C, + MT_NBLACK = 0x5D, + MT_RTBLACK = 0x5E, + MT_BTBLACK = 0x5F, + MT_RBLACK = 0x60, + MT_UNRAV = 0x61, + MT_HOLOWONE = 0x62, + MT_PAINMSTR = 0x63, + MT_REALWEAV = 0x64, + MT_SUCCUBUS = 0x65, + MT_SNOWWICH = 0x66, + MT_HLSPWN = 0x67, + MT_SOLBRNR = 0x68, + MT_COUNSLR = 0x69, + MT_MAGISTR = 0x6A, + MT_CABALIST = 0x6B, + MT_ADVOCATE = 0x6C, + MT_GOLEM = 0x6D, + MT_DIABLO = 0x6E, + MT_DARKMAGE = 0x6F +}; + +enum _speech_id +{ + QUEST_KING1 = 0x0, + QUEST_KING2 = 0x1, + QUEST_KING3 = 0x2, + QUEST_KING4 = 0x3, + QUEST_KING5 = 0x4, + QUEST_KING6 = 0x5, + QUEST_KING7 = 0x6, + QUEST_KING8 = 0x7, + QUEST_KING9 = 0x8, + QUEST_KING10 = 0x9, + QUEST_KING11 = 0xA, + QUEST_BANNER1 = 0xB, + QUEST_BANNER2 = 0xC, + QUEST_BANNER3 = 0xD, + QUEST_BANNER4 = 0xE, + QUEST_BANNER5 = 0xF, + QUEST_BANNER6 = 0x10, + QUEST_BANNER7 = 0x11, + QUEST_BANNER8 = 0x12, + QUEST_BANNER9 = 0x13, + QUEST_BANNER10 = 0x14, + QUEST_BANNER11 = 0x15, + QUEST_BANNER12 = 0x16, + QUEST_VILE1 = 0x17, + QUEST_VILE2 = 0x18, + QUEST_VILE3 = 0x19, + QUEST_VILE4 = 0x1A, + QUEST_VILE5 = 0x1B, + QUEST_VILE6 = 0x1C, + QUEST_VILE7 = 0x1D, + QUEST_VILE8 = 0x1E, + QUEST_VILE9 = 0x1F, + QUEST_VILE10 = 0x20, + QUEST_VILE11 = 0x21, + QUEST_VILE12 = 0x22, + QUEST_VILE13 = 0x23, + QUEST_VILE14 = 0x24, + QUEST_POISON1 = 0x25, + QUEST_POISON2 = 0x26, + QUEST_POISON3 = 0x27, + QUEST_POISON4 = 0x28, + QUEST_POISON5 = 0x29, + QUEST_POISON6 = 0x2A, + QUEST_POISON7 = 0x2B, + QUEST_POISON8 = 0x2C, + QUEST_POISON9 = 0x2D, + QUEST_POISON10 = 0x2E, + QUEST_BONE1 = 0x2F, + QUEST_BONE2 = 0x30, + QUEST_BONE3 = 0x31, + QUEST_BONE4 = 0x32, + QUEST_BONE5 = 0x33, + QUEST_BONE6 = 0x34, + QUEST_BONE7 = 0x35, + QUEST_BONE8 = 0x36, + QUEST_BUTCH1 = 0x37, + QUEST_BUTCH2 = 0x38, + QUEST_BUTCH3 = 0x39, + QUEST_BUTCH4 = 0x3A, + QUEST_BUTCH5 = 0x3B, + QUEST_BUTCH6 = 0x3C, + QUEST_BUTCH7 = 0x3D, + QUEST_BUTCH8 = 0x3E, + QUEST_BUTCH9 = 0x3F, + QUEST_BUTCH10 = 0x40, + QUEST_BLIND1 = 0x41, + QUEST_BLIND2 = 0x42, + QUEST_BLIND3 = 0x43, + QUEST_BLIND4 = 0x44, + QUEST_BLIND5 = 0x45, + QUEST_BLIND6 = 0x46, + QUEST_BLIND7 = 0x47, + QUEST_BLIND8 = 0x48, + QUEST_VEIL1 = 0x49, + QUEST_VEIL2 = 0x4A, + QUEST_VEIL3 = 0x4B, + QUEST_VEIL4 = 0x4C, + QUEST_VEIL5 = 0x4D, + QUEST_VEIL6 = 0x4E, + QUEST_VEIL7 = 0x4F, + QUEST_VEIL8 = 0x50, + QUEST_VEIL9 = 0x51, + QUEST_VEIL10 = 0x52, + QUEST_VEIL11 = 0x53, + QUEST_ANVIL1 = 0x54, + QUEST_ANVIL2 = 0x55, + QUEST_ANVIL3 = 0x56, + QUEST_ANVIL4 = 0x57, + QUEST_ANVIL5 = 0x58, + QUEST_ANVIL6 = 0x59, + QUEST_ANVIL7 = 0x5A, + QUEST_ANVIL8 = 0x5B, + QUEST_ANVIL9 = 0x5C, + QUEST_ANVIL10 = 0x5D, + QUEST_BLOOD1 = 0x5E, + QUEST_BLOOD2 = 0x5F, + QUEST_BLOOD3 = 0x60, + QUEST_BLOOD4 = 0x61, + QUEST_BLOOD5 = 0x62, + QUEST_BLOOD6 = 0x63, + QUEST_BLOOD7 = 0x64, + QUEST_BLOOD8 = 0x65, + QUEST_WARLRD1 = 0x66, + QUEST_WARLRD2 = 0x67, + QUEST_WARLRD3 = 0x68, + QUEST_WARLRD4 = 0x69, + QUEST_WARLRD5 = 0x6A, + QUEST_WARLRD6 = 0x6B, + QUEST_WARLRD7 = 0x6C, + QUEST_WARLRD8 = 0x6D, + QUEST_WARLRD9 = 0x6E, + QUEST_INFRA1 = 0x6F, + QUEST_INFRA2 = 0x70, + QUEST_INFRA3 = 0x71, + QUEST_INFRA4 = 0x72, + QUEST_INFRA5 = 0x73, + QUEST_INFRA6 = 0x74, + QUEST_INFRA7 = 0x75, + QUEST_INFRA8 = 0x76, + QUEST_INFRA9 = 0x77, + QUEST_INFRA10 = 0x78, + QUEST_MUSH1 = 0x79, + QUEST_MUSH2 = 0x7A, + QUEST_MUSH3 = 0x7B, + QUEST_MUSH4 = 0x7C, + QUEST_MUSH5 = 0x7D, + QUEST_MUSH6 = 0x7E, + QUEST_MUSH7 = 0x7F, + QUEST_MUSH8 = 0x80, + QUEST_MUSH9 = 0x81, + QUEST_MUSH10 = 0x82, + QUEST_MUSH11 = 0x83, + QUEST_MUSH12 = 0x84, + QUEST_MUSH13 = 0x85, + QUEST_DOOM1 = 0x86, + QUEST_DOOM2 = 0x87, + QUEST_DOOM3 = 0x88, + QUEST_DOOM4 = 0x89, + QUEST_DOOM5 = 0x8A, + QUEST_DOOM6 = 0x8B, + QUEST_DOOM7 = 0x8C, + QUEST_DOOM8 = 0x8D, + QUEST_DOOM9 = 0x8E, + QUEST_DOOM10 = 0x8F, + QUEST_GARBUD1 = 0x90, + QUEST_GARBUD2 = 0x91, + QUEST_GARBUD3 = 0x92, + QUEST_GARBUD4 = 0x93, + QUEST_ZHAR1 = 0x94, + QUEST_ZHAR2 = 0x95, + QUEST_STORY1 = 0x96, + QUEST_STORY2 = 0x97, + QUEST_STORY3 = 0x98, + QUEST_STORY4 = 0x99, + QUEST_STORY5 = 0x9A, + QUEST_STORY6 = 0x9B, + QUEST_STORY7 = 0x9C, + QUEST_STORY9 = 0x9D, + QUEST_STORY10 = 0x9E, + QUEST_STORY11 = 0x9F, + QUEST_OGDEN1 = 0xA0, + QUEST_OGDEN2 = 0xA1, + QUEST_OGDEN3 = 0xA2, + QUEST_OGDEN4 = 0xA3, + QUEST_OGDEN5 = 0xA4, + QUEST_OGDEN6 = 0xA5, + QUEST_OGDEN8 = 0xA6, + QUEST_OGDEN9 = 0xA7, + QUEST_OGDEN10 = 0xA8, + QUEST_PEPIN1 = 0xA9, + QUEST_PEPIN2 = 0xAA, + QUEST_PEPIN3 = 0xAB, + QUEST_PEPIN4 = 0xAC, + QUEST_PEPIN5 = 0xAD, + QUEST_PEPIN6 = 0xAE, + QUEST_PEPIN7 = 0xAF, + QUEST_PEPIN9 = 0xB0, + QUEST_PEPIN10 = 0xB1, + QUEST_PEPIN11 = 0xB2, + QUEST_GILLIAN1 = 0xB3, + QUEST_GILLIAN2 = 0xB4, + QUEST_GILLIAN3 = 0xB5, + QUEST_GILLIAN4 = 0xB6, + QUEST_GILLIAN5 = 0xB7, + QUEST_GILLIAN6 = 0xB8, + QUEST_GILLIAN7 = 0xB9, + QUEST_GILLIAN9 = 0xBA, + QUEST_GILLIAN10 = 0xBB, + QUEST_GRISWOLD1 = 0xBC, + QUEST_GRISWOLD2 = 0xBD, + QUEST_GRISWOLD3 = 0xBE, + QUEST_GRISWOLD4 = 0xBF, + QUEST_GRISWOLD5 = 0xC0, + QUEST_GRISWOLD6 = 0xC1, + QUEST_GRISWOLD7 = 0xC2, + QUEST_GRISWOLD8 = 0xC3, + QUEST_GRISWOLD9 = 0xC4, + QUEST_GRISWOLD10 = 0xC5, + QUEST_GRISWOLD12 = 0xC6, + QUEST_GRISWOLD13 = 0xC7, + QUEST_FARNHAM1 = 0xC8, + QUEST_FARNHAM2 = 0xC9, + QUEST_FARNHAM3 = 0xCA, + QUEST_FARNHAM4 = 0xCB, + QUEST_FARNHAM5 = 0xCC, + QUEST_FARNHAM6 = 0xCD, + QUEST_FARNHAM8 = 0xCE, + QUEST_FARNHAM9 = 0xCF, + QUEST_FARNHAM10 = 0xD0, + QUEST_FARNHAM11 = 0xD1, + QUEST_FARNHAM12 = 0xD2, + QUEST_FARNHAM13 = 0xD3, + QUEST_ADRIA1 = 0xD4, + QUEST_ADRIA2 = 0xD5, + QUEST_ADRIA3 = 0xD6, + QUEST_ADRIA4 = 0xD7, + QUEST_ADRIA5 = 0xD8, + QUEST_ADRIA6 = 0xD9, + QUEST_ADRIA7 = 0xDA, + QUEST_ADRIA8 = 0xDB, + QUEST_ADRIA9 = 0xDC, + QUEST_ADRIA10 = 0xDD, + QUEST_ADRIA12 = 0xDE, + QUEST_ADRIA13 = 0xDF, + QUEST_WIRT1 = 0xE0, + QUEST_WIRT2 = 0xE1, + QUEST_WIRT3 = 0xE2, + QUEST_WIRT4 = 0xE3, + QUEST_WIRT5 = 0xE4, + QUEST_WIRT6 = 0xE5, + QUEST_WIRT7 = 0xE6, + QUEST_WIRT8 = 0xE7, + QUEST_WIRT9 = 0xE8, + QUEST_WIRT11 = 0xE9, + QUEST_WIRT12 = 0xEA, + QUEST_BONER = 0xEB, + QUEST_BLOODY = 0xEC, + QUEST_BLINDING = 0xED, + QUEST_BLOODWAR = 0xEE, + QUEST_MBONER = 0xEF, + QUEST_MBLOODY = 0xF0, + QUEST_MBLINDING = 0xF1, + QUEST_MBLOODWAR = 0xF2, + QUEST_RBONER = 0xF3, + QUEST_RBLOODY = 0xF4, + QUEST_RBLINDING = 0xF5, + QUEST_RBLOODWAR = 0xF6, + QUEST_COW1 = 0xF7, + QUEST_COW2 = 0xF8, + QUEST_BOOK11 = 0xF9, + QUEST_BOOK12 = 0xFA, + QUEST_BOOK13 = 0xFB, + QUEST_BOOK21 = 0xFC, + QUEST_BOOK22 = 0xFD, + QUEST_BOOK23 = 0xFE, + QUEST_BOOK31 = 0xFF, + QUEST_BOOK32 = 0x100, + QUEST_BOOK33 = 0x101, + QUEST_INTRO = 0x102 +}; + +enum object_graphic_id +{ + OFILE_L1BRAZ = 0x0, + OFILE_L1DOORS = 0x1, + OFILE_LEVER = 0x2, + OFILE_CHEST1 = 0x3, + OFILE_CHEST2 = 0x4, + OFILE_BANNER = 0x5, + OFILE_SKULPILE = 0x6, + OFILE_SKULFIRE = 0x7, + OFILE_SKULSTIK = 0x8, + OFILE_CRUXSK1 = 0x9, + OFILE_CRUXSK2 = 0xA, + OFILE_CRUXSK3 = 0xB, + OFILE_BOOK1 = 0xC, + OFILE_BOOK2 = 0xD, + OFILE_ROCKSTAN = 0xE, + OFILE_ANGEL = 0xF, + OFILE_CHEST3 = 0x10, + OFILE_BURNCROS = 0x11, + OFILE_CANDLE2 = 0x12, + OFILE_NUDE2 = 0x13, + OFILE_SWITCH4 = 0x14, + OFILE_TNUDEM = 0x15, + OFILE_TNUDEW = 0x16, + OFILE_TSOUL = 0x17, + OFILE_L2DOORS = 0x18, + OFILE_WTORCH4 = 0x19, + OFILE_WTORCH3 = 0x1A, + OFILE_SARC = 0x1B, + OFILE_FLAME1 = 0x1C, + OFILE_PRSRPLT1 = 0x1D, + OFILE_TRAPHOLE = 0x1E, + OFILE_MINIWATR = 0x1F, + OFILE_WTORCH2 = 0x20, + OFILE_WTORCH1 = 0x21, + OFILE_BCASE = 0x22, + OFILE_BSHELF = 0x23, + OFILE_WEAPSTND = 0x24, + OFILE_BARREL = 0x25, + OFILE_BARRELEX = 0x26, + OFILE_LSHRINEG = 0x27, + OFILE_RSHRINEG = 0x28, + OFILE_BLOODFNT = 0x29, + OFILE_DECAP = 0x2A, + OFILE_PEDISTL = 0x2B, + OFILE_L3DOORS = 0x2C, + OFILE_PFOUNTN = 0x2D, + OFILE_ARMSTAND = 0x2E, + OFILE_GOATSHRN = 0x2F, + OFILE_CAULDREN = 0x30, + OFILE_MFOUNTN = 0x31, + OFILE_TFOUNTN = 0x32, + OFILE_ALTBOY = 0x33, + OFILE_MCIRL = 0x34, + OFILE_BKSLBRNT = 0x35, + OFILE_MUSHPTCH = 0x36, + OFILE_LZSTAND = 0x37, +}; + +enum dungeon_type +{ + DTYPE_TOWN = 0x0, + DTYPE_CATHEDRAL = 0x1, + DTYPE_CATACOMBS = 0x2, + DTYPE_CAVES = 0x3, + DTYPE_HELL = 0x4, + DTYPE_NONE = 0xFF, +}; + +enum magic_type +{ + STYPE_FIRE = 0x0, + STYPE_LIGHTNING = 0x1, + STYPE_MAGIC = 0x2, +}; + +enum theme_id +{ + THEME_BARREL = 0x0, + THEME_SHRINE = 0x1, + THEME_MONSTPIT = 0x2, + THEME_SKELROOM = 0x3, + THEME_TREASURE = 0x4, + THEME_LIBRARY = 0x5, + THEME_TORTURE = 0x6, + THEME_BLOODFOUNTAIN = 0x7, + THEME_DECAPITATED = 0x8, + THEME_PURIFYINGFOUNTAIN = 0x9, + THEME_ARMORSTAND = 0xA, + THEME_GOATSHRINE = 0xB, + THEME_CAULDRON = 0xC, + THEME_MURKYFOUNTAIN = 0xD, + THEME_TEARFOUNTAIN = 0xE, + THEME_BRNCROSS = 0xF, + THEME_WEAPONRACK = 0x10, + THEME_NONE = 0xFF, +}; + +enum event_type +{ + EVENT_TYPE_PLAYER_CREATE_GAME = 1, + EVENT_TYPE_2 = 2, + EVENT_TYPE_PLAYER_LEAVE_GAME = 3, + EVENT_TYPE_PLAYER_MESSAGE = 4, + EVENT_TYPE_5 = 5, + EVENT_TYPE_6 = 6, + EVENT_TYPE_7 = 7, + EVENT_TYPE_8 = 8, + EVENT_TYPE_9 = 9, + EVENT_TYPE_10 = 10, + EVENT_TYPE_11 = 11, + EVENT_TYPE_12 = 12, + EVENT_TYPE_13 = 13, + EVENT_TYPE_14 = 14, + EVENT_TYPE_15 = 15, +}; + +enum _copyprot_results +{ + COPYPROT_OK = 1, + COPYPROT_CANCEL = 2, +}; + +enum text_color +{ + COL_WHITE = 0x0, + COL_BLUE = 0x1, + COL_RED = 0x2, + COL_GOLD = 0x3, +}; + +enum _difficulty +{ + DIFF_NORMAL = 0x0, + DIFF_NIGHTMARE = 0x1, + DIFF_HELL = 0x2, + NUM_DIFFICULTIES = 0x3, +}; + +enum MON_MODE +{ + MM_STAND = 0, + MM_WALK = 1, + MM_WALK2 = 2, + MM_WALK3 = 3, + MM_ATTACK = 4, + MM_GOTHIT = 5, + MM_DEATH = 6, + MM_SATTACK = 7, + MM_FADEIN = 8, + MM_FADEOUT = 9, + MM_RATTACK = 10, + MM_SPSTAND = 11, + MM_RSPATTACK = 12, + MM_DELAY = 13, + MM_CHARGE = 14, + MM_STONE = 15, + MM_HEAL = 16, + MM_TALK = 17, +}; + +enum PLR_MODE +{ + PM_STAND = 0, + PM_WALK = 1, + PM_WALK2 = 2, + PM_WALK3 = 3, + PM_ATTACK = 4, + PM_RATTACK = 5, + PM_BLOCK = 6, + PM_GOTHIT = 7, + PM_DEATH = 8, + PM_SPELL = 9, + PM_NEWLVL = 10, + PM_QUIT = 11, +}; + +enum template_id +{ + TEMPLATE_ERR_DX = 0x68, + TEMPLATE_ERR_NOMEMORY = 0x69, + TEMPLATE_ERR_NOFILE = 0x6A, + TEMPLATE_ERR_DDRAW = 0x6B, + TEMPLATE_ERR_DSOUND = 0x6C, + TEMPLATE_ERR_DISKSPACE = 0x6E, + TEMPLATE_ERR_VIDEOMODE = 0x6F, + TEMPLATE_ERR_INSERTCD = 0x70, + TEMPLATE_ERR_RESTRICTED = 0x71, + TEMPLATE_ERR_READONLY = 0x72, +}; + +enum spell_type +{ + RSPLTYPE_SKILL = 0x0, + RSPLTYPE_SPELL = 0x1, + RSPLTYPE_SCROLL = 0x2, + RSPLTYPE_CHARGES = 0x3, + RSPLTYPE_INVALID = 0x4, +}; + +enum cursor_id +{ + CURSOR_NONE = 0x0, + CURSOR_HAND = 0x1, + CURSOR_IDENTIFY = 0x2, + CURSOR_REPAIR = 0x3, + CURSOR_RECHARGE = 0x4, + CURSOR_DISARM = 0x5, + CURSOR_OIL = 0x6, + CURSOR_TELEKINESIS = 0x7, + CURSOR_RESURRECT = 0x8, + CURSOR_TELEPORT = 0x9, + CURSOR_HEALOTHER = 0xA, + CURSOR_HOURGLASS = 0xB, + CURSOR_FIRSTITEM = 0xC, +}; + +enum direction +{ + DIR_S = 0x0, + DIR_SW = 0x1, + DIR_W = 0x2, + DIR_NW = 0x3, + DIR_N = 0x4, + DIR_NE = 0x5, + DIR_E = 0x6, + DIR_SE = 0x7, + DIR_OMNI = 0x8, +}; + +enum interface_mode +{ + WM_DIAB = 0x401, + WM_DIABNEXTLVL = 0x402, // WM_USER+2 + WM_DIABPREVLVL = 0x403, + WM_DIABRTNLVL = 0x404, + WM_DIABSETLVL = 0x405, + WM_DIABWARPLVL = 0x406, + WM_DIABTOWNWARP = 0x407, + WM_DIABTWARPUP = 0x408, + WM_DIABRETOWN = 0x409, + WM_DIABNEWGAME = 0x40A, + WM_DIABLOADGAME = 0x40B + // WM_LEIGHSKIP = 0x40C, // psx only + // WM_DIAVNEWLVL = 0x40D, // psx only +}; + +enum game_info +{ + GAMEINFO_NAME = 1, + GAMEINFO_PASSWORD = 2, + GAMEINFO_STATS = 3, + GAMEINFO_MODEFLAG = 4, + GAMEINFO_GAMETEMPLATE = 5, + GAMEINFO_PLAYERS = 6, +}; + +enum spell_id +{ + SPL_NULL = 0x0, + SPL_FIREBOLT = 0x1, + SPL_HEAL = 0x2, + SPL_LIGHTNING = 0x3, + SPL_FLASH = 0x4, + SPL_IDENTIFY = 0x5, + SPL_FIREWALL = 0x6, + SPL_TOWN = 0x7, + SPL_STONE = 0x8, + SPL_INFRA = 0x9, + SPL_RNDTELEPORT = 0xA, + SPL_MANASHIELD = 0xB, + SPL_FIREBALL = 0xC, + SPL_GUARDIAN = 0xD, + SPL_CHAIN = 0xE, + SPL_WAVE = 0xF, + SPL_DOOMSERP = 0x10, + SPL_BLODRIT = 0x11, + SPL_NOVA = 0x12, + SPL_INVISIBIL = 0x13, + SPL_FLAME = 0x14, + SPL_GOLEM = 0x15, + SPL_BLODBOIL = 0x16, + SPL_TELEPORT = 0x17, + SPL_APOCA = 0x18, + SPL_ETHEREALIZE = 0x19, + SPL_REPAIR = 0x1A, + SPL_RECHARGE = 0x1B, + SPL_DISARM = 0x1C, + SPL_ELEMENT = 0x1D, + SPL_CBOLT = 0x1E, + SPL_HBOLT = 0x1F, + SPL_RESURRECT = 0x20, + SPL_TELEKINESIS = 0x21, + SPL_HEALOTHER = 0x22, + SPL_FLARE = 0x23, + SPL_BONESPIRIT = 0x24, + SPL_INVALID = 0xFFFFFFFF, +}; + +enum _cmd_id +{ + CMD_STAND = 0, + CMD_WALKXY = 1, + CMD_ACK_PLRINFO = 2, + CMD_ADDSTR = 3, + CMD_ADDMAG = 4, + CMD_ADDDEX = 5, + CMD_ADDVIT = 6, + CMD_SBSPELL = 7, + CMD_GETITEM = 8, + CMD_AGETITEM = 9, + CMD_PUTITEM = 10, + CMD_RESPAWNITEM = 11, + CMD_ATTACKXY = 12, + CMD_RATTACKXY = 13, + CMD_SPELLXY = 14, + CMD_TSPELLXY = 15, + CMD_OPOBJXY = 16, + CMD_DISARMXY = 17, + CMD_ATTACKID = 18, + CMD_ATTACKPID = 19, + CMD_RATTACKID = 20, + CMD_RATTACKPID = 21, + CMD_SPELLID = 22, + CMD_SPELLPID = 23, + CMD_TSPELLID = 24, + CMD_TSPELLPID = 25, + CMD_RESURRECT = 26, + CMD_OPOBJT = 27, + CMD_KNOCKBACK = 28, + CMD_TALKXY = 29, + CMD_NEWLVL = 30, + CMD_WARP = 31, + CMD_CHEAT_EXPERIENCE = 32, + CMD_CHEAT_SPELL_LEVEL = 33, + CMD_DEBUG = 34, + CMD_SYNCDATA = 35, + CMD_MONSTDEATH = 36, + CMD_MONSTDAMAGE = 37, + CMD_PLRDEAD = 38, + CMD_REQUESTGITEM = 39, + CMD_REQUESTAGITEM = 40, + CMD_GOTOGETITEM = 41, + CMD_GOTOAGETITEM = 42, + CMD_OPENDOOR = 43, + CMD_CLOSEDOOR = 44, + CMD_OPERATEOBJ = 45, + CMD_PLROPOBJ = 46, + CMD_BREAKOBJ = 47, + CMD_CHANGEPLRITEMS = 48, + CMD_DELPLRITEMS = 49, + CMD_PLRDAMAGE = 50, + CMD_PLRLEVEL = 51, + CMD_DROPITEM = 52, + CMD_PLAYER_JOINLEVEL = 53, + CMD_SEND_PLRINFO = 54, + CMD_SATTACKXY = 55, + CMD_ACTIVATEPORTAL = 56, + CMD_DEACTIVATEPORTAL = 57, + CMD_DLEVEL_0 = 58, + CMD_DLEVEL_1 = 59, + CMD_DLEVEL_2 = 60, + CMD_DLEVEL_3 = 61, + CMD_DLEVEL_4 = 62, + CMD_DLEVEL_5 = 63, + CMD_DLEVEL_6 = 64, + CMD_DLEVEL_7 = 65, + CMD_DLEVEL_8 = 66, + CMD_DLEVEL_9 = 67, + CMD_DLEVEL_10 = 68, + CMD_DLEVEL_11 = 69, + CMD_DLEVEL_12 = 70, + CMD_DLEVEL_13 = 71, + CMD_DLEVEL_14 = 72, + CMD_DLEVEL_15 = 73, + CMD_DLEVEL_16 = 74, + CMD_DLEVEL_JUNK = 75, + CMD_DLEVEL_END = 76, + CMD_HEALOTHER = 77, + CMD_STRING = 78, + CMD_SETSTR = 79, + CMD_SETMAG = 80, + CMD_SETDEX = 81, + CMD_SETVIT = 82, + CMD_RETOWN = 83, + CMD_SPELLXYD = 84, + CMD_ITEMEXTRA = 85, + CMD_SYNCPUTITEM = 86, + CMD_KILLGOLEM = 87, + CMD_SYNCQUEST = 88, + CMD_ENDSHIELD = 89, + CMD_AWAKEGOLEM = 90, + CMD_NOVA = 91, + CMD_SETSHIELD = 92, + CMD_REMSHIELD = 93, + FAKE_CMD_SETID = 94, + FAKE_CMD_DROPID = 95, + NUM_CMDS = 96, +}; + +enum _talker_id +{ + TOWN_SMITH = 0x0, + TOWN_HEALER = 0x1, + TOWN_DEADGUY = 0x2, + TOWN_TAVERN = 0x3, + TOWN_STORY = 0x4, + TOWN_DRUNK = 0x5, + TOWN_WITCH = 0x6, + TOWN_BMAID = 0x7, + TOWN_PEGBOY = 0x8, + TOWN_COW = 0x9, + TOWN_PRIEST = 0xA, +}; + +enum _music_id +{ + TMUSIC_TOWN = 0, + TMUSIC_L1 = 1, + TMUSIC_L2 = 2, + TMUSIC_L3 = 3, + TMUSIC_L4 = 4, + TMUSIC_INTRO = 5, + NUM_MUSIC = 6, +}; + +enum _mainmenu_selections +{ + MAINMENU_SINGLE_PLAYER = 1, + MAINMENU_MULTIPLAYER = 2, + MAINMENU_REPLAY_INTRO = 3, + MAINMENU_SHOW_CREDITS = 4, + MAINMENU_EXIT_DIABLO = 5, + MAINMENU_ATTRACT_MODE = 6, +}; + +enum panel_button_id +{ + PANBTN_CHARINFO = 0, + PANBTN_QLOG = 1, + PANBTN_AUTOMAP = 2, + PANBTN_MAINMENU = 3, + PANBTN_INVENTORY = 4, + PANBTN_SPELLBOOK = 5, + PANBTN_SENDMSG = 6, + PANBTN_FRIENDLY = 7, +}; + +enum attribute_id +{ + ATTRIB_STR = 0, + ATTRIB_MAG = 1, + ATTRIB_DEX = 2, + ATTRIB_VIT = 3, +}; + +enum _object_id +{ + OBJ_L1LIGHT = 0x0, + OBJ_L1LDOOR = 0x1, + OBJ_L1RDOOR = 0x2, + OBJ_SKFIRE = 0x3, + OBJ_LEVER = 0x4, + OBJ_CHEST1 = 0x5, + OBJ_CHEST2 = 0x6, + OBJ_CHEST3 = 0x7, + OBJ_CANDLE1 = 0x8, + OBJ_CANDLE2 = 0x9, + OBJ_CANDLEO = 0xA, + OBJ_BANNERL = 0xB, + OBJ_BANNERM = 0xC, + OBJ_BANNERR = 0xD, + OBJ_SKPILE = 0xE, + OBJ_SKSTICK1 = 0xF, + OBJ_SKSTICK2 = 0x10, + OBJ_SKSTICK3 = 0x11, + OBJ_SKSTICK4 = 0x12, + OBJ_SKSTICK5 = 0x13, + OBJ_CRUX1 = 0x14, + OBJ_CRUX2 = 0x15, + OBJ_CRUX3 = 0x16, + OBJ_STAND = 0x17, + OBJ_ANGEL = 0x18, + OBJ_BOOK2L = 0x19, + OBJ_BCROSS = 0x1A, + OBJ_NUDEW2R = 0x1B, + OBJ_SWITCHSKL = 0x1C, + OBJ_TNUDEM1 = 0x1D, + OBJ_TNUDEM2 = 0x1E, + OBJ_TNUDEM3 = 0x1F, + OBJ_TNUDEM4 = 0x20, + OBJ_TNUDEW1 = 0x21, + OBJ_TNUDEW2 = 0x22, + OBJ_TNUDEW3 = 0x23, + OBJ_TORTURE1 = 0x24, + OBJ_TORTURE2 = 0x25, + OBJ_TORTURE3 = 0x26, + OBJ_TORTURE4 = 0x27, + OBJ_TORTURE5 = 0x28, + OBJ_BOOK2R = 0x29, + OBJ_L2LDOOR = 0x2A, + OBJ_L2RDOOR = 0x2B, + OBJ_TORCHL = 0x2C, + OBJ_TORCHR = 0x2D, + OBJ_TORCHL2 = 0x2E, + OBJ_TORCHR2 = 0x2F, + OBJ_SARC = 0x30, + OBJ_FLAMEHOLE = 0x31, + OBJ_FLAMELVR = 0x32, + OBJ_WATER = 0x33, + OBJ_BOOKLVR = 0x34, + OBJ_TRAPL = 0x35, + OBJ_TRAPR = 0x36, + OBJ_BOOKSHELF = 0x37, + OBJ_WEAPRACK = 0x38, + OBJ_BARREL = 0x39, + OBJ_BARRELEX = 0x3A, + OBJ_SHRINEL = 0x3B, + OBJ_SHRINER = 0x3C, + OBJ_SKELBOOK = 0x3D, + OBJ_BOOKCASEL = 0x3E, + OBJ_BOOKCASER = 0x3F, + OBJ_BOOKSTAND = 0x40, + OBJ_BOOKCANDLE = 0x41, + OBJ_BLOODFTN = 0x42, + OBJ_DECAP = 0x43, + OBJ_TCHEST1 = 0x44, + OBJ_TCHEST2 = 0x45, + OBJ_TCHEST3 = 0x46, + OBJ_BLINDBOOK = 0x47, + OBJ_BLOODBOOK = 0x48, + OBJ_PEDISTAL = 0x49, + OBJ_L3LDOOR = 0x4A, + OBJ_L3RDOOR = 0x4B, + OBJ_PURIFYINGFTN = 0x4C, + OBJ_ARMORSTAND = 0x4D, + OBJ_ARMORSTANDN = 0x4E, + OBJ_GOATSHRINE = 0x4F, + OBJ_CAULDRON = 0x50, + OBJ_MURKYFTN = 0x51, + OBJ_TEARFTN = 0x52, + OBJ_ALTBOY = 0x53, + OBJ_MCIRCLE1 = 0x54, + OBJ_MCIRCLE2 = 0x55, + OBJ_STORYBOOK = 0x56, + OBJ_STORYCANDLE = 0x57, + OBJ_STEELTOME = 0x58, + OBJ_WARARMOR = 0x59, + OBJ_WARWEAP = 0x5A, + OBJ_TBCROSS = 0x5B, + OBJ_WEAPONRACK = 0x5C, + OBJ_WEAPONRACKN = 0x5D, + OBJ_MUSHPATCH = 0x5E, + OBJ_LAZSTAND = 0x5F, + OBJ_SLAINHERO = 0x60, + OBJ_SIGNCHEST = 0x61, + OBJ_NULL_98 = 0x62, +}; + +enum item_misc_id +{ + IMISC_NONE = 0x0, + IMISC_USEFIRST = 0x1, + IMISC_FULLHEAL = 0x2, + IMISC_HEAL = 0x3, + IMISC_OLDHEAL = 0x4, + IMISC_DEADHEAL = 0x5, + IMISC_MANA = 0x6, + IMISC_FULLMANA = 0x7, + IMISC_POTEXP = 0x8, /* add experience */ + IMISC_POTFORG = 0x9, /* remove experience */ + IMISC_ELIXSTR = 0xA, + IMISC_ELIXMAG = 0xB, + IMISC_ELIXDEX = 0xC, + IMISC_ELIXVIT = 0xD, + IMISC_ELIXWEAK = 0xE, /* double check with alpha */ + IMISC_ELIXDIS = 0xF, + IMISC_ELIXCLUM = 0x10, + IMISC_ELIXSICK = 0x11, + IMISC_REJUV = 0x12, + IMISC_FULLREJUV = 0x13, + IMISC_USELAST = 0x14, + IMISC_SCROLL = 0x15, + IMISC_SCROLLT = 0x16, + IMISC_STAFF = 0x17, + IMISC_BOOK = 0x18, + IMISC_RING = 0x19, + IMISC_AMULET = 0x1A, + IMISC_UNIQUE = 0x1B, + IMISC_HEAL_1C = 0x1C, + IMISC_OILFIRST = 0x1D, + IMISC_OILOF = 0x1E, /* oils are beta or hellfire only */ + IMISC_OILACC = 0x1F, + IMISC_OILMAST = 0x20, + IMISC_OILSHARP = 0x21, + IMISC_OILDEATH = 0x22, + IMISC_OILSKILL = 0x23, + IMISC_OILBSMTH = 0x24, + IMISC_OILFORT = 0x25, + IMISC_OILPERM = 0x26, + IMISC_OILHARD = 0x27, + IMISC_OILIMP = 0x28, + IMISC_OILLAST = 0x29, + IMISC_MAPOFDOOM = 0x2A, + IMISC_EAR = 0x2B, + IMISC_SPECELIX = 0x2C, + IMISC_INVALID = 0xFFFFFFFF, +}; + +enum item_type +{ + ITYPE_MISC = 0x0, + ITYPE_SWORD = 0x1, + ITYPE_AXE = 0x2, + ITYPE_BOW = 0x3, + ITYPE_MACE = 0x4, + ITYPE_SHIELD = 0x5, + ITYPE_LARMOR = 0x6, + ITYPE_HELM = 0x7, + ITYPE_MARMOR = 0x8, + ITYPE_HARMOR = 0x9, + ITYPE_STAFF = 0xA, + ITYPE_GOLD = 0xB, + ITYPE_RING = 0xC, + ITYPE_AMULET = 0xD, + ITYPE_0E = 0xE, + ITYPE_NONE = 0xFFFFFFFF, +}; + +enum _item_indexes +{ + IDI_GOLD = 0x0, + IDI_WARRIOR = 0x1, + IDI_WARRSHLD = 0x2, + IDI_WARRCLUB = 0x3, + IDI_ROGUE = 0x4, + IDI_SORCEROR = 0x5, + IDI_CLEAVER = 0x6, + IDI_FIRSTQUEST = 0x6, + IDI_SKCROWN = 0x7, + IDI_INFRARING = 0x8, + IDI_ROCK = 0x9, + IDI_OPTAMULET = 0xA, + IDI_TRING = 0xB, + IDI_BANNER = 0xC, + IDI_HARCREST = 0xD, + IDI_STEELVEIL = 0xE, + IDI_GLDNELIX = 0xF, + IDI_ANVIL = 0x10, + IDI_MUSHROOM = 0x11, + IDI_BRAIN = 0x12, + IDI_FUNGALTM = 0x13, + IDI_SPECELIX = 0x14, + IDI_BLDSTONE = 0x15, + IDI_LASTQUEST = 0x16, + IDI_MAPOFDOOM = 0x16, + IDI_EAR = 0x17, + IDI_HEAL = 0x18, + IDI_MANA = 0x19, + IDI_IDENTIFY = 0x1A, + IDI_PORTAL = 0x1B, + IDI_ARMOFVAL = 0x1C, + IDI_FULLHEAL = 0x1D, + IDI_FULLMANA = 0x1E, + IDI_GRISWOLD = 0x1F, + IDI_LGTFORGE = 0x20, + IDI_LAZSTAFF = 0x21, + IDI_RESURRECT = 0x22, +}; + +enum _setlevels +{ + //SL_BUTCHCHAMB = 0x0, + SL_SKELKING = 0x1, + SL_BONECHAMB = 0x2, + SL_MAZE = 0x3, + SL_POISONWATER = 0x4, + SL_VILEBETRAYER = 0x5, +}; + +enum quest_id +{ + QTYPE_INFRA = 0x0, + QTYPE_BLKM = 0x1, + QTYPE_GARB = 0x2, + QTYPE_ZHAR = 0x3, + QTYPE_VEIL = 0x4, + QTYPE_MOD = 0x5, + QTYPE_BUTCH = 0x6, + QTYPE_BOL = 0x7, + QTYPE_BLIND = 0x8, + QTYPE_BLOOD = 0x9, + QTYPE_ANVIL = 0xA, + QTYPE_WARLRD = 0xB, + QTYPE_KING = 0xC, + QTYPE_PW = 0xD, + QTYPE_BONE = 0xE, + QTYPE_VB = 0xF, + QTYPE_INVALID = 0xFFFFFFFF, +}; + +enum talk_id +{ + STORE_NONE = 0x0, + STORE_SMITH = 0x1, + STORE_SBUY = 0x2, + STORE_SSELL = 0x3, + STORE_SREPAIR = 0x4, + STORE_WITCH = 0x5, + STORE_WBUY = 0x6, + STORE_WSELL = 0x7, + STORE_WRECHARGE = 0x8, + STORE_NOMONEY = 0x9, + STORE_NOROOM = 0xA, + STORE_CONFIRM = 0xB, + STORE_BOY = 0xC, + STORE_BBOY = 0xD, + STORE_HEALER = 0xE, + STORE_STORY = 0xF, + STORE_HBUY = 0x10, + STORE_SIDENTIFY = 0x11, + STORE_SPBUY = 0x12, + STORE_GOSSIP = 0x13, + STORE_IDSHOW = 0x14, + STORE_TAVERN = 0x15, + STORE_DRUNK = 0x16, + STORE_BARMAID = 0x17, +}; + +enum _unique_items +{ + UITEM_CLEAVER = 0x0, + UITEM_SKCROWN = 0x1, + UITEM_INFRARING = 0x2, + UITEM_OPTAMULET = 0x3, + UITEM_TRING = 0x4, + UITEM_HARCREST = 0x5, + UITEM_STEELVEIL = 0x6, + UITEM_ARMOFVAL = 0x7, + UITEM_GRISWOLD = 0x8, + UITEM_LGTFORGE = 0x9, + UITEM_RIFTBOW = 0xA, + UITEM_NEEDLER = 0xB, + UITEM_CELESTBOW = 0xC, + UITEM_DEADLYHUNT = 0xD, + UITEM_BOWOFDEAD = 0xE, + UITEM_BLKOAKBOW = 0xF, + UITEM_FLAMEDART = 0x10, + UITEM_FLESHSTING = 0x11, + UITEM_WINDFORCE = 0x12, + UITEM_EAGLEHORN = 0x13, + UITEM_GONNAGALDIRK = 0x14, + UITEM_DEFENDER = 0x15, + UITEM_GRYPHONCLAW = 0x16, + UITEM_BLACKRAZOR = 0x17, + UITEM_GIBBOUSMOON = 0x18, + UITEM_ICESHANK = 0x19, + UITEM_EXECUTIONER = 0x1A, + UITEM_BONESAW = 0x1B, + UITEM_SHADHAWK = 0x1C, + UITEM_WIZSPIKE = 0x1D, + UITEM_LGTSABRE = 0x1E, + UITEM_FALCONTALON = 0x1F, + UITEM_INFERNO = 0x20, + UITEM_DOOMBRINGER = 0x21, + UITEM_GRIZZLY = 0x22, + UITEM_GRANDFATHER = 0x23, + UITEM_MANGLER = 0x24, + UITEM_SHARPBEAK = 0x25, + UITEM_BLOODLSLAYER = 0x26, + UITEM_CELESTAXE = 0x27, + UITEM_WICKEDAXE = 0x28, + UITEM_STONECLEAV = 0x29, + UITEM_AGUHATCHET = 0x2A, + UITEM_HELLSLAYER = 0x2B, + UITEM_MESSERREAVER = 0x2C, + UITEM_CRACKRUST = 0x2D, + UITEM_JHOLMHAMM = 0x2E, + UITEM_CIVERBS = 0x2F, + UITEM_CELESTSTAR = 0x30, + UITEM_BARANSTAR = 0x31, + UITEM_GNARLROOT = 0x32, + UITEM_CRANBASH = 0x33, + UITEM_SCHAEFHAMM = 0x34, + UITEM_DREAMFLANGE = 0x35, + UITEM_STAFFOFSHAD = 0x36, + UITEM_IMMOLATOR = 0x37, + UITEM_STORMSPIRE = 0x38, + UITEM_GLEAMSONG = 0x39, + UITEM_THUNDERCALL = 0x3A, + UITEM_PROTECTOR = 0x3B, + UITEM_NAJPUZZLE = 0x3C, + UITEM_MINDCRY = 0x3D, + UITEM_RODOFONAN = 0x3E, + UITEM_SPIRITSHELM = 0x3F, + UITEM_THINKINGCAP = 0x40, + UITEM_OVERLORDHELM = 0x41, + UITEM_FOOLSCREST = 0x42, + UITEM_GOTTERDAM = 0x43, + UITEM_ROYCIRCLET = 0x44, + UITEM_TORNFLESH = 0x45, + UITEM_GLADBANE = 0x46, + UITEM_RAINCLOAK = 0x47, + UITEM_LEATHAUT = 0x48, + UITEM_WISDWRAP = 0x49, + UITEM_SPARKMAIL = 0x4A, + UITEM_SCAVCARAP = 0x4B, + UITEM_NIGHTSCAPE = 0x4C, + UITEM_NAJPLATE = 0x4D, + UITEM_DEMONSPIKE = 0x4E, + UITEM_DEFLECTOR = 0x4F, + UITEM_SKULLSHLD = 0x50, + UITEM_DRAGONBRCH = 0x51, + UITEM_BLKOAKSHLD = 0x52, + UITEM_HOLYDEF = 0x53, + UITEM_STORMSHLD = 0x54, + UITEM_BRAMBLE = 0x55, + UITEM_REGHA = 0x56, + UITEM_BLEEDER = 0x57, + UITEM_CONSTRICT = 0x58, + UITEM_ENGAGE = 0x59, + UITEM_INVALID = 0x5A, +}; + +enum _ui_classes +{ + UI_WARRIOR = 0x0, + UI_ROGUE = 0x1, + UI_SORCERER = 0x2, + UI_NUM_CLASSES = 0x3, +}; + +enum _walk_path +{ + WALK_NONE = 0x0, + WALK_NE = 0x1, + WALK_NW = 0x2, + WALK_SE = 0x3, + WALK_SW = 0x4, + WALK_N = 0x5, + WALK_E = 0x6, + WALK_S = 0x7, + WALK_W = 0x8, +}; + +typedef enum { + ICLASS_NONE = 0, + ICLASS_WEAPON = 1, + ICLASS_ARMOR = 2, + ICLASS_MISC = 3, + ICLASS_GOLD = 4, + ICLASS_QUEST = 5, +} item_class; + +typedef enum { + IDROP_NEVER = 0, + IDROP_REGULAR = 1, + IDROP_DOUBLE = 2, +} item_drop_rate; + +typedef enum { + ISPL_NONE = 0x00000000, + ISPL_INFRAVISION = 0x00000001, + ISPL_RNDSTEALLIFE = 0x00000002, + ISPL_RNDARROWVEL = 0x00000004, + ISPL_FIRE_ARROWS = 0x00000008, + ISPL_FIREDAM = 0x00000010, + ISPL_LIGHTDAM = 0x00000020, + ISPL_DRAINLIFE = 0x00000040, + ISPL_UNKNOWN_1 = 0x00000080, + ISPL_NOHEALPLR = 0x00000100, + ISPL_UNKNOWN_2 = 0x00000200, + ISPL_UNKNOWN_3 = 0x00000400, + ISPL_KNOCKBACK = 0x00000800, + ISPL_NOHEALMON = 0x00001000, + ISPL_STEALMANA_3 = 0x00002000, + ISPL_STEALMANA_5 = 0x00004000, + ISPL_STEALLIFE_3 = 0x00008000, + ISPL_STEALLIFE_5 = 0x00010000, + ISPL_QUICKATTACK = 0x00020000, + ISPL_FASTATTACK = 0x00040000, + ISPL_FASTERATTACK = 0x00080000, + ISPL_FASTESTATTACK = 0x00100000, + ISPL_FASTRECOVER = 0x00200000, + ISPL_FASTERRECOVER = 0x00400000, + ISPL_FASTESTRECOVER = 0x00800000, + ISPL_FASTBLOCK = 0x01000000, + ISPL_LIGHT_ARROWS = 0x02000000, + ISPL_THORNS = 0x04000000, + ISPL_NOMANA = 0x08000000, + ISPL_ABSHALFTRAP = 0x10000000, + ISPL_UNKNOWN_4 = 0x20000000, + ISPL_3XDAMVDEM = 0x40000000, + ISPL_ALLRESZERO = 0x80000000, +} item_special_effect; diff --git a/resource.h b/resource.h new file mode 100644 index 0000000..5665380 --- /dev/null +++ b/resource.h @@ -0,0 +1,28 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Diablo.rc +// +#define IDI_ICON1 101 +#define IDD_DIALOG1 104 +#define IDD_DIALOG2 105 +#define IDD_DIALOG3 106 +#define IDD_DIALOG4 107 +#define IDD_DIALOG5 108 +#define IDD_DIALOG6 109 +#define IDD_DIALOG7 110 +#define IDD_DIALOG8 111 +#define IDD_DIALOG9 112 +#define IDD_DIALOG10 113 +#define IDD_DIALOG11 114 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 131 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/structs.h b/structs.h new file mode 100644 index 0000000..f525609 --- /dev/null +++ b/structs.h @@ -0,0 +1,1599 @@ +struct UItemStruct +{ + char *UIName; + char UIItemId; + char UIMinLvl; + char UINumPL; + int UIValue; + char UIPower1; + int UIParam1; + int UIParam2; + char UIPower2; + int UIParam3; + int UIParam4; + char UIPower3; + int UIParam5; + int UIParam6; + char UIPower4; + int UIParam7; + int UIParam8; + char UIPower5; + int UIParam9; + int UIParam10; + char UIPower6; + int UIParam11; + int UIParam12; +}; + +struct PLStruct +{ + const char *PLName; + char PLPower; + int PLParam1; + int PLParam2; + int PLMinLvl; + int PLIType; + int PLGOE; + int PLDouble; + int PLOk; + int PLMinVal; + int PLMaxVal; + int PLMultVal; +}; + +struct TextDataStruct +{ + char *txtstr; + int scrlltxt; + int txtspd; + int sfxnr; +}; + +struct RECT32 +{ + int x; + int y; + int w; + int h; +}; + +struct TSnd +{ + WAVEFORMATEX fmt; + int len; + int offset; + char *sound_path; + IDirectSoundBuffer *DSB; + int start_tc; +}; + +struct TSFX +{ + unsigned char bFlags; + char *pszName; + TSnd *pSnd; +}; + +struct TMenuItem +{ + int dwFlags; + char *pszStr; + void (__cdecl *fnMenu)(); /* fix, should have one arg */ +}; + +struct ItemDataStruct +{ + int iRnd; + char iClass; + char iLoc; + int iCurs; + char itype; + char iItemId; + char *iName; + char *iSName; + int iMinMLvl; + int iDurability; + int iMinDam; + int iMaxDam; + int iMinAC; + int iMaxAC; + char iMinStr; + char iMinMag; + char iMinDex; + int iFlags; + int iMiscId; + int iSpell; + int iUsable; + int iValue; + int iMaxValue; +}; + +struct MissileData +{ + unsigned char mName; + void (__fastcall *mAddProc)(int, int, int, int, int, int, int, int, int); + void (__fastcall *mProc)(int); + int mDraw; + unsigned char mType; + unsigned char mResist; + unsigned char mFileNum; + int mlSFX; + int miSFX; +}; + +struct MisFileData +{ + unsigned char mAnimName; + unsigned char mAnimFAmt; + char *mName; + int mFlags; + int mAnimCel[16]; // unsigned char *mAnimData[16] + unsigned char mAnimDelay[16]; + unsigned char mAnimLen[16]; + int mAnimWidth[16]; + int mAnimWidth2[16]; +}; + +struct MonsterData +{ + int flags; // width? + int mType; + char *GraphicType; + int has_special; + char *sndfile; + int snd_special; + int has_trans; + char *TransFile; + int Frames[6]; + int Rate[6]; + char *mName; + char mMinDLvl; + char mMaxDLvl; + char mLevel; + int mMinHP; + int mMaxHP; + char mAi; + int mFlags; + unsigned char mInt; + unsigned char mHit; + unsigned char mAFNum; + unsigned char mMinDamage; + unsigned char mMaxDamage; + unsigned char mHit2; + unsigned char mAFNum2; + unsigned char mMinDamage2; + unsigned char mMaxDamage2; + char mArmorClass; + char mMonstClass; + unsigned short mMagicRes; + unsigned short mMagicRes2; + unsigned short mTreasure; + char mSelFlag; + unsigned short mExp; +}; + +struct UniqMonstStruct +{ + char mtype; + char *mName; + char *mMode; + unsigned char mlevel; + unsigned short mmaxhp; + unsigned char mAi; + unsigned char mint; + unsigned char mMinDamage; + unsigned char mMaxDamage; + unsigned short mMagicRes; + unsigned short mUnqAttr; + unsigned char mUnqVar1; + unsigned char mUnqVar2; + int mtalkmsg; +}; + +struct ObjDataStruct +{ + char oload; + char ofindex; + char ominlvl; + char omaxlvl; + char olvltype; + char otheme; + char oquest; + int oAnimFlag; + int oAnimDelay; + int oAnimLen; + int oAnimWidth; + int oSolidFlag; + int oMissFlag; + int oLightFlag; + char oBreak; + char oSelFlag; + int oTrapFlag; +}; + +struct QuestData +{ + unsigned char _qdlvl; + char _qdmultlvl; + unsigned char _qlvlt; + unsigned char _qdtype; + unsigned char _qdrnd; + unsigned char _qslvl; + int _qflags; //__declspec(align(4)) /* unsigned char */ + int _qdmsg; + char *_qlstr; +}; + +struct SpellData +{ + unsigned char sName; + unsigned char sManaCost; + unsigned char sType; + char *sNameText; + char *sSkillText; + int sBookLvl; + int sStaffLvl; + int sTargeted; + unsigned char sTownSpell; + int sMinInt; + unsigned char sSFX; + unsigned char sMissiles[3]; + unsigned char sManaAdj; + unsigned char sMinMana; + int sStaffMin; + int sStaffMax; + int sBookCost; + int sStaffCost; +}; + +struct Coord +{ + unsigned char x; + unsigned char y; +}; + +struct RECT8 +{ + Coord x; + Coord y; +}; + +struct QuestTalkData +{ + int _qinfra; + int _qblkm; + int _qgarb; + int _qzhar; + int _qveil; + int _qmod; + int _qbutch; + int _qbol; + int _qblind; + int _qblood; + int _qanvil; + int _qwarlrd; + int _qking; + int _qpw; + int _qbone; + int _qvb; +}; + +struct ShadowStruct +{ + unsigned char strig; + unsigned char s1; + unsigned char s2; + unsigned char s3; + unsigned char nv1; + unsigned char nv2; + unsigned char nv3; +}; + +struct POINT32 /* remove this struct */ +{ + int x; + int y; +}; + +struct InvXY +{ + int X; + int Y; +}; + +struct ItemStruct +{ + int _iSeed; + unsigned short _iCreateInfo; + int _itype; + int _ix; + int _iy; + int _iAnimFlag; + int ItemFrame; // unsigned char *_iAnimData + int _iAnimLen; + int _iAnimFrame; + int _iAnimWidth; + int _iAnimXOff; // width 2? + int offs002C; + char _iSelFlag; + int _iPostDraw; + int _iIdentified; + char _iMagical; + char _iName[64]; + char _iIName[64]; + char _iLoc; + char _iClass; + int _iCurs; + int _ivalue; + int _iIvalue; + int _iMinDam; + int _iMaxDam; + int _iAC; + int _iFlags; + int _iMiscId; + int _iSpell; + int _iCharges; + int _iMaxCharges; + int _iDurability; + int _iMaxDur; + int _iPLDam; + int _iPLToHit; + int _iPLAC; + int _iPLStr; + int _iPLMag; + int _iPLDex; + int _iPLVit; + int _iPLFR; + int _iPLLR; + int _iPLMR; + int _iPLMana; + int _iPLHP; + int _iPLDamMod; + int _iPLGetHit; + int _iPLLight; + char _iSplLvlAdd; + char _iRequest; + int _iUid; + int _iFMinDam; + int _iFMaxDam; + int _iLMinDam; + int _iLMaxDam; + int _iPLEnAc; + char _iPrePower; + char _iSufPower; + int _iVAdd1; + int _iVMult1; + int _iVAdd2; + int _iVMult2; + char _iMinStr; + unsigned char _iMinMag; + char _iMinDex; + int _iStatFlag; + int IDidx; + int offs016C; +}; + +struct DeadStruct +{ + int _deadAnim[8]; // unsigned char *_deadData + int _deadFrame; + int field_24; // width + int field_28; // cel or fnum _deadtype? + int _deadtrans; +}; + +struct ScreenRow +{ + char col_unused_1[64]; + char pixels[640]; + char col_unused_2[64]; +}; + +struct Screen +{ + ScreenRow row_unused_1[160]; + ScreenRow row[480]; + ScreenRow row_unused_2[16]; +}; + +struct Tile +{ + short top; + short right; + short left; + short bottom; +}; + +struct DPiece +{ + short blocks; +}; + +struct _SNETVERSIONDATA +{ + int size; + char *versionstring; + char *executablefile; + char *originalarchivefile; + char *patcharchivefile; +}; + +struct LightListStruct +{ + int _lx; + int _ly; + int _lradius; + int _lid; + int _ldel; + int _lunflag; + int field_18; + int _lunx; + int _luny; + int _lunr; + int _xoff; + int _yoff; + int _lflags; +}; + +struct MissileStruct +{ + int _mitype; + int _mix; + int _miy; + int _mixoff; + int _miyoff; + int _mixvel; + int _miyvel; + int _misx; + int _misy; + int _mitxoff; + int _mityoff; + int _mimfnum; + int _mispllvl; + int _miDelFlag; + int _miAnimType; + int _miAnimFlags; + int _miAnimCel; // unsigned char *_miAnimData + int _miAnimDelay; + int _miAnimLen; + int _miAnimWidth; + int _miAnimWidth2; + int _miAnimCnt; + int _miAnimAdd; + int _miAnimFrame; + int _miDrawFlag; + int _miLightFlag; + int _miPreFlag; + int _miUniqTrans; + int _mirange; + int _misource; + int _micaster; + int _midam; + int _miHitFlag; + int _midist; + int _mlid; + int _mirnd; + int _miVar1; + int _miVar2; + int _miVar3; + int _miVar4; + int _miVar5; + int _miVar6; + int _miVar7; + int _miVar8; +}; + +struct AnimStruct +{ + // int CMem + int Frames[9]; // int CMem, unsigned char *Frames[8] + int Rate; + int Delay; +}; + +struct CMonster +{ + unsigned char mtype; + unsigned char mPlaceFlags; + AnimStruct Anims[6]; + TSnd *Snds[8]; + int flags_1; // width + int flags_2; // width 2 + unsigned char mMinHP; + unsigned char mMaxHP; + int has_special; + unsigned char mAFNum; + char mdeadval; + MonsterData *MData; + void *trans_file; +}; + +struct MonsterStruct +{ + int _mMTidx; + int _mmode; + int _mgoal; + int _mgoalvar1; + int _mgoalvar2; + int _mgoalvar3; + int field_18; + int _pathcount; + int _mx; + int _my; + int _mfutx; + int _mfuty; + int _moldx; + int _moldy; + int _mxoff; + int _myoff; + int _mxvel; + int _myvel; + int _mdir; + int _menemy; + unsigned char _menemyx; + unsigned char _menemyy; + short falign_52; + int _mAFNum; + int _mAnimDelay; + int _mAnimCnt; + int _mAnimLen; + int _mAnimFrame; + int _meflag; + int _mDelFlag; + int _mVar1; + int _mVar2; + int _mVar3; + int _mVar4; + int _mVar5; + int _mVar6; + int _mVar7; + int _mVar8; + int _mmaxhp; + int _mhitpoints; + unsigned char _mAi; + unsigned char _mint; + short falign_9A; + int _mFlags; + int _msquelch; + int falign_A4; + int _lastx; + int _lasty; + int _mRndSeed; + int _mAISeed; + int falign_B8; + unsigned char _uniqtype; + unsigned char _uniqtrans; + char _udeadval; + char mWhoHit; + short mLevel; /* char */ + unsigned short mExp; + unsigned char mHit; + unsigned char mMinDamage; + unsigned char mMaxDamage; + unsigned char mHit2; + unsigned char mMinDamage2; + unsigned char mMaxDamage2; + char mArmorClass; + char falign_CB; + int mMagicRes; /* ushort */ + int mtalkmsg; + unsigned char leader; + unsigned char leaderflag; + unsigned char unpackfilesize; + unsigned char mlid; + char *mName; + CMonster *MType; + MonsterData *MData; +}; + +struct DObjectStr +{ + unsigned char bCmd; +}; + +/* __declspec(align(1))*/ +#pragma pack(push, 1) +struct DMonsterStr +{ + char _mx; /* these might be unsigned */ + char _my; + char _mdir; + char _menemy; + char _mactive; + int _mhitpoints; +}; +#pragma pack(pop) + +/* __declspec(align(2))*/ +#pragma pack(push, 1) +struct TCmdPItem +{ + char bCmd; /* unsigned */ + unsigned char x; + unsigned char y; + unsigned short wIndx; + unsigned short wCI; + int dwSeed; + unsigned char bId; + unsigned char bDur; + unsigned char bMDur; + unsigned char bCh; + unsigned char bMCh; + unsigned short wValue; + int dwBuff; +}; +#pragma pack(pop) + +/* __declspec(align(1))*/ +struct DLevel +{ + TCmdPItem item[127]; + DObjectStr object[127]; + DMonsterStr monster[200]; +}; + +struct DPortal +{ + unsigned char x; + unsigned char y; + unsigned char level; + unsigned char ltype; + unsigned char setlvl; +}; + +struct MultiQuests +{ + unsigned char qstate; + unsigned char qlog; + unsigned char qvar1; +}; + +struct DJunk +{ + DPortal portal[4]; + MultiQuests quests[4]; +}; + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct PkItemStruct +{ + int iSeed; + short iCreateInfo; + short idx; + char bId; + char bDur; + char bMDur; + char bCh; + char bMCh; + short wValue; + int dwBuff; +}; +#pragma pack(pop) + +/* __declspec(align(2)) */ +#pragma pack(push, 1) +struct PkPlayerStruct +{ + FILETIME archiveTime; + char destAction; + char destParam1; + char destParam2; + char plrlevel; + char px; + char py; + char targx; + char targy; + char pName[32]; + char pClass; + char pBaseStr; + char pBaseMag; + char pBaseDex; + char pBaseVit; + char pLevel; + char pStatPts; + int pExperience; + int pGold; + int pHPBase; + int pMaxHPBase; + int pManaBase; + int pMaxManaBase; + char pSplLvl[37]; + int pMemSpells; + int pMemSpells2; + PkItemStruct InvBody[7]; + PkItemStruct InvList[40]; + char InvGrid[40]; + char _pNumInv; + PkItemStruct SpdList[8]; + char pTownWarps; + char pDungMsgs; + char pLvlLoad; + char pBattleNet; + char pManaShield; + char bReserved[3]; + short wReserved[8]; + int pDiabloKillLevel; + int dwReserved[7]; +}; +#pragma pack(pop) + +struct ObjectStruct +{ + int _otype; + int _ox; + int _oy; + int _oLight; + int _oAnimFlag; + int _oAnimCel; // unsigned char *_oAnimData + int _oAnimDelay; + int _oAnimCnt; + int _oAnimLen; + int _oAnimFrame; + int _oAnimWidth; + int _oAnimWidth2; + int _oDelFlag; + int _oBreak; + int _oSolidFlag; + int _oMissFlag; + int _oSelFlag; + int _oPreFlag; + int _oTrapFlag; + int _oDoorFlag; + int _olid; + int _oRndSeed; + int _oVar1; + int _oVar2; + int _oVar3; + int _oVar4; + int _oVar5; + int _oVar6; + int _oVar7; + int _oVar8; +}; + +struct PATHNODE +{ + char f; + char h; + short g; + int x; + int y; + struct PATHNODE *Parent; + struct PATHNODE *Child[8]; + struct PATHNODE *NextNode; +}; + +struct PlayerStruct +{ + int _pmode; + char walkpath[25]; + unsigned char plractive; + int destAction; + int destParam1; + int destParam2; + int destParam3; + int destParam4; + int plrlevel; + int WorldX; + int WorldY; + int _px; + int _py; + int _ptargx; + int _ptargy; + int _pownerx; + int _pownery; + int _poldx; + int _poldy; + int _pxoff; + int _pyoff; + int _pxvel; + int _pyvel; + int _pdir; + int _nextdir; + int _pgfxnum; + int _pAnimData; // unsigned char * + int _pAnimDelay; + int _pAnimCnt; + int _pAnimLen; + int _pAnimFrame; + int _pAnimWidth; + int _pAnimWidth2; + int _peflag; + int _plid; + int _pvid; + int _pSpell; + char _pSplType; + char _pSplFrom; + int _pTSpell; + int _pTSplType; + int _pRSpell; + int _pRSplType; + int _pSBkSpell; + char _pSBkSplType; + char _pSplLvl[64]; + int remove_1; + int _pMemSpells[2]; // __declspec(align(8)) + int _pAblSpells[2]; + int _pScrlSpells[2]; + int _pSpellFlags; + int _pSplHotKey[4]; + char _pSplTHotKey[4]; + int _pwtype; + unsigned char _pBlockFlag; + unsigned char _pInvincible; + char _pLightRad; + unsigned char _pLvlChanging; + char _pName[32]; + int _pClass; + int _pStrength; + int _pBaseStr; + int _pMagic; + int _pBaseMag; + int _pDexterity; + int _pBaseDex; + int _pVitality; + int _pBaseVit; + int _pStatPts; + int _pDamageMod; + int _pBaseToBlk; + int _pHPBase; + int _pMaxHPBase; + int _pHitPoints; + int _pMaxHP; + int _pHPPer; + int _pManaBase; + int _pMaxManaBase; + int _pMana; + int _pMaxMana; + int _pManaPer; + char _pLevel; + char _pMaxLvl; + int _pExperience; + int _pMaxExp; + int _pNextExper; + char _pArmorClass; + char _pMagResist; + char _pFireResist; + char _pLghtResist; + int _pGold; + int _pInfraFlag; + int _pVar1; + int _pVar2; + int _pVar3; + int _pVar4; + int _pVar5; + int _pVar6; + int _pVar7; + int _pVar8; + unsigned char _pLvlVisited[17]; + unsigned char _pSLvlVisited[10]; + char gap20F[9]; + int _pGFXLoad; + int _pNAnim[8]; // unsigned char * + int _pNFrames; + int _pNWidth; + int _pWAnim[8]; // unsigned char * + int _pWFrames; + int _pWWidth; + int _pAAnim[8]; // unsigned char * + int _pAFrames; + int _pAWidth; + int _pAFNum; + int _pLAnim[8]; // unsigned char * + int _pFAnim[8]; // unsigned char * + int _pTAnim[8]; // unsigned char * + int _pSFrames; + int _pSWidth; + int _pSFNum; + int _pHAnim[8]; // unsigned char * + int _pHFrames; + int _pHWidth; + int _pDAnim[8]; // unsigned char * + int _pDFrames; + int _pDWidth; + int _pBAnim[8]; // unsigned char * + int _pBFrames; + int _pBWidth; + ItemStruct InvBody[7]; + ItemStruct InvList[40]; + int _pNumInv; + char InvGrid[40]; + ItemStruct SpdList[8]; + ItemStruct HoldItem; + int _pIMinDam; + int _pIMaxDam; + int _pIAC; + int _pIBonusDam; + int _pIBonusToHit; + int _pIBonusAC; + int _pIBonusDamMod; + int remove_2; + int _pISpells[2]; //__declspec(align(8)) + int _pIFlags; + int _pIGetHit; + char _pISplLvlAdd; + char _pISplCost; + int _pISplDur; + int _pIEnAc; + int _pIFMinDam; + int _pIFMaxDam; + int _pILMinDam; + int _pILMaxDam; + int _pOilType; + unsigned char pTownWarps; + unsigned char pDungMsgs; + unsigned char pLvlLoad; + unsigned char pBattleNet; + unsigned char pManaShield; + char bReserved[3]; + short wReserved[8]; + int pDiabloKillLevel; + int dwReserved[7]; + void *_pNData; + void *_pWData; + void *_pAData; + void *_pLData; + void *_pFData; + void *_pTData; + void *_pHData; + void *_pDData; + void *_pBData; + int unused_54D4; +}; + +struct QuestStruct +{ + unsigned char _qlevel; + unsigned char _qtype; + unsigned char _qactive; + unsigned char _qlvltype; + int _qtx; + int _qty; + unsigned char _qslvl; + unsigned char _qidx; + unsigned char _qmsg; + unsigned char _qvar1; + unsigned char _qvar2; + int _qlog; /* char */ +}; + +struct SHA1Context +{ + int state[5]; + int count[2]; + char buffer[64]; +}; + +struct ThemeStruct +{ + int ttype; + int ttval; +}; + +struct TMsgHeader +{ + char next; + char start_tc; + char len; +}; + +struct TMsg +{ + TMsgHeader hdr; + char data; +}; + +struct TNQ +{ + unsigned char _qsttype; + unsigned char _qstmsg; + unsigned char _qstmsgact; +}; + +struct TownerStruct +{ + int _tmode; + int _ttype; + int _tx; + int _ty; + int _txoff; + int _tyoff; + int _txvel; + int _tyvel; + int _tdir; + void *_tAnimCel; // unsigned char *_tAnimData + int _tAnimDelay; + int _tAnimCnt; + int _tAnimLen; + int _tAnimFrame; + int _tAnimFrameCnt; + int _tAnimOrder; + int _tAnimWidth; + int _tAnimWidth2; + int _tTenPer; + int _teflag; + int _tbtcnt; + int _tSelFlag; + int _tMsgSaid; + TNQ qsts[16]; + int _tSeed; + int _tVar1; + int _tVar2; + int _tVar3; + int _tVar4; + char _tName[32]; + int _tNAnim[8]; // unsigned char * + int _tNFrames; + char *_tNData; // unsigned char * +}; + +struct _SNETUIDATA +{ + int size; + int uiflags; + HWND parentwindow; + void (__cdecl *artcallback)(); + void (__cdecl *authcallback)(); + void (__cdecl *createcallback)(); + void (__cdecl *drawdesccallback)(); + void (__cdecl *selectedcallback)(); + void (__cdecl *messageboxcallback)(); + void (__cdecl *soundcallback)(); + void (__cdecl *statuscallback)(); + void (__cdecl *getdatacallback)(); + void (__cdecl *categorycallback)(); + void (__cdecl *field_34)(); + void (__cdecl *field_38)(); + void (__cdecl *profilecallback)(); + int profilegetstring; + void (__cdecl *profiledraw)(); + void (__cdecl *selecthero)(); + void (__cdecl *createhero)(); +}; + +struct _SNETPROGRAMDATA +{ + int size; + char *programname; + char *programdescription; + int programid; + int versionid; + int reserved1; + int maxplayers; + int multi_seed; + void *initdata; + int initdatabytes; + void *reserved2; + int optcategorybits; + int reserved3; + int reserved4; + int languageid; +}; + +struct _uiheroinfo +{ + _uiheroinfo *next; + char name[16]; + unsigned short level; + unsigned char heroclass; + unsigned char herorank; + unsigned short strength; + unsigned short magic; + unsigned short dexterity; + unsigned short vitality; + int gold; + int hassaved; + int spawned; +}; + +struct _HASHENTRY +{ + int hashcheck[2]; + int lcid; + int block; +}; + +struct _BLOCKENTRY +{ + int offset; + int sizealloc; + int sizefile; + int flags; +}; + +/* __declspec(align(2)) */ +#pragma pack(push, 1) +struct TCmdGItem +{ + unsigned char bCmd; + unsigned char bMaster; + unsigned char bPnum; + unsigned char bCursitem; + unsigned char bLevel; + unsigned char x; + unsigned char y; + unsigned short wIndx; + unsigned short wCI; + int dwSeed; + unsigned char bId; + unsigned char bDur; + unsigned char bMDur; + unsigned char bCh; + unsigned char bMCh; + unsigned short wValue; + int dwBuff; + int dwTime; +}; +#pragma pack(pop) + +struct TCmdLoc +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; +}; + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdParam1 +{ + unsigned char bCmd; + unsigned short wParam1; +}; +#pragma pack(pop) + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdLocParam1 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; +}; +#pragma pack(pop) + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TPktHdr +{ + unsigned char px; + unsigned char py; + unsigned char targx; + unsigned char targy; + int php; + int pmhp; + unsigned char bstr; + unsigned char bmag; + unsigned char bdex; + unsigned short wCheck; + unsigned short wLen; +}; +#pragma pack(pop) + +struct _SNETEVENT +{ + int eventid; + int playerid; + void *data; + int databytes; +}; + +struct _SNETPLAYERDATA +{ + int size; + char *playername; + char *playerdescription; + int field_C; +}; + +struct _SNETCAPS +{ + int size; + int flags; + int maxmessagesize; + int maxqueuesize; + int maxplayers; + int bytessec; + int latencyms; + int defaultturnssec; + int defaultturnsintransit; +}; + +struct TMPQHeader // _FILEHEADER +{ + int dwID; + int dwHeaderSize; + int dwArchiveSize; + short wFormatVersion; + short wSectorSize; + int dwHashTablePos; + int dwBlockTablePos; + int dwHashTableSize; + int dwBlockTableSize; + char field_20[72]; +}; + +struct _uidefaultstats +{ + unsigned short strength; + unsigned short magic; + unsigned short dexterity; + unsigned short vitality; +}; + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdLocParam2 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; + unsigned short wParam2; +}; +#pragma pack(pop) + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdLocParam3 +{ + unsigned char bCmd; + unsigned char x; + unsigned char y; + unsigned short wParam1; + unsigned short wParam2; + unsigned short wParam3; +}; +#pragma pack(pop) + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdParam2 +{ + unsigned char bCmd; + unsigned short wParam1; + unsigned short wParam2; +}; +#pragma pack(pop) + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdParam3 +{ + unsigned char bCmd; + unsigned short wParam1; + unsigned short wParam2; + unsigned short wParam3; +}; +#pragma pack(pop) + +struct TCmd +{ + unsigned char bCmd; +}; + +/* __declspec(align(2)) */ +#pragma pack(push, 1) +struct TCmdGolem +{ + unsigned char bCmd; + unsigned char _mx; + unsigned char _my; + unsigned char _mdir; + unsigned char _menemy; + int _mhitpoints; + unsigned char _currlevel; +}; +#pragma pack(pop) + +struct TCmdQuest +{ + unsigned char bCmd; + unsigned char q; + unsigned char qstate; + unsigned char qlog; + unsigned char qvar1; +}; + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdChItem +{ + unsigned char bCmd; + unsigned char bLoc; + unsigned short wIndx; + unsigned short wCI; + int dwSeed; + unsigned char bId; +}; +#pragma pack(pop) + +struct TCmdDelItem +{ + unsigned char bCmd; + unsigned char bLoc; +}; + +/* __declspec(align(2)) */ +#pragma pack(push, 1) +struct TCmdDamage +{ + unsigned char bCmd; + unsigned char bPlr; + int dwDam; +}; +#pragma pack(pop) + +struct TFakeCmdPlr +{ + unsigned char bCmd; + unsigned char bPlr; +}; + +/* __declspec(align(2)) */ +#pragma pack(push, 1) +struct TFakeDropPlr +{ + unsigned char bCmd; + unsigned char bPlr; + int dwReason; +}; +#pragma pack(pop) + +struct TCmdString +{ + unsigned char bCmd; + char str[80]; +}; + +/* __declspec(align(1)) */ +#pragma pack(push, 1) +struct TCmdPlrInfoHdr +{ + unsigned char bCmd; + unsigned short wOffset; + unsigned short wBytes; +}; +#pragma pack(pop) + +struct PortalStruct +{ + int open; + int x; + int y; + int level; + int ltype; + int setlvl; +}; + +struct CircleCoord +{ + unsigned char n_1; + Coord delta_1[1]; + unsigned char n_4; + Coord delta_4[4]; + unsigned char n_16; + Coord delta_16[16]; + unsigned char n_24; + Coord delta_24[24]; + unsigned char n_32; + Coord delta_32[32]; + unsigned char n_40; + Coord delta_40[40]; + unsigned char n_48; + Coord delta_48[48]; + unsigned char n_56; + Coord delta_56[56]; + unsigned char n_64; + Coord delta_64[64]; + unsigned char n_72; + Coord delta_72[72]; + unsigned char n_80; + Coord delta_80[80]; + unsigned char n_88; + Coord delta_88[88]; + unsigned char n_96; + Coord delta_96[96]; + unsigned char n_104; + Coord delta_104[104]; + unsigned char n_112; + Coord delta_112[112]; + unsigned char n_120; + Coord delta_120[120]; + unsigned char n_128; + Coord delta_128[128]; + unsigned char n_136; + Coord delta_136[136]; + unsigned char n_144; + Coord delta_144[144]; +}; + +struct TriggerStruct +{ + int _tx; + int _ty; + int _tmsg; + int _tlvl; +}; + +struct THEME_LOC +{ + int x; + int y; + int ttval; + int width; + int height; +}; + +struct STextStruct +{ + int _sx; + int _syoff; + char _sstr[128]; + int _sjust; + int _sclr; + int _sline; + int _ssel; + int _sval; +}; + +struct HALLNODE +{ + int nHallx1; + int nHally1; + int nHallx2; + int nHally2; + int nHalldir; + HALLNODE *pNext; +}; + +struct ROOMNODE +{ + int nRoomx1; + int nRoomy1; + int nRoomx2; + int nRoomy2; + int nRoomDest; +}; + +struct LocalLevel +{ + unsigned char automapsv[40][40]; +}; + +struct TMegaPkt +{ + TMegaPkt *pNext; + int dwSpaceLeft; + unsigned char data[32000]; +}; + +struct ScrollStruct +{ + int _sxoff; + int _syoff; + int _sdx; + int _sdy; + int _sdir; +}; + +struct _gamedata +{ + int dwSeed; + unsigned char bDiff; +}; + +struct TPkt +{ + TPktHdr hdr; + unsigned char body[493]; +}; + +struct MEMFILE +{ + int end; + int offset; + int buf_len; + int dist; + int bytes_to_read; + char *buf; + int file; +}; + +struct _plrmsg +{ + int time; + char player; + char str[144]; +}; + +struct ItemGetRecordStruct +{ + int nSeed; + unsigned short wCI; + int nIndex; + int dwTimestamp; +}; + +struct unk_missile_struct +{ + int field_0; + int field_4; + int field_8; +}; + +struct TSyncMonster +{ + unsigned char _mndx; + unsigned char _mx; + unsigned char _my; + unsigned char _menemy; + unsigned char _mdelta; +}; + +struct TSyncHeader +{ + unsigned char bCmd; + unsigned char bLevel; + unsigned short wLen; + unsigned char bObjId; + unsigned char bObjCmd; + unsigned char bItemI; + unsigned char bItemX; + unsigned char bItemY; + unsigned short wItemIndx; + unsigned short wItemCI; + int dwItemSeed; + unsigned char bItemId; + unsigned char bItemDur; + unsigned char bItemMDur; + unsigned char bItemCh; + unsigned char bItemMCh; + unsigned short wItemVal; + unsigned int dwItemBuff; + unsigned char bPInvLoc; + unsigned short wPInvIndx; + unsigned short wPInvCI; + int dwPInvSeed; + unsigned char bPInvId; +}; + +struct PCXHeader +{ + char manufacturer; + char version; + char encoding; + char bitsPerPixel; + short xmin, ymin; + short xmax, ymax; + short horzRes, vertRes; + char palette[48]; + char reserved; + char numColorPlanes; + short bytesPerScanLine; + short paletteType; + short horzSize, vertSize; + char padding[54]; +}; + +typedef struct +{ + unsigned char * pbInBuff; // Pointer to input data buffer + unsigned char * pbInBuffEnd; // End of the input buffer + unsigned char * pbOutBuff; // Pointer to output data buffer + unsigned char * pbOutBuffEnd; // Pointer to output data buffer + unsigned char * pbSize; +} TDataInfo; + +typedef struct { + int field_0; + int field_4; + char command[128]; +} ServerCommand; + +typedef struct ChatCmd { + struct ChatCmd *next; + ServerCommand *extern_msgs[2]; +} ChatCmd; diff --git a/types.h b/types.h new file mode 100644 index 0000000..e9ca419 --- /dev/null +++ b/types.h @@ -0,0 +1,122 @@ +// temporary file + +#ifndef _TYPES_H +#define _TYPES_H + +#include "resource.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#pragma warning (disable : 4309) // truncation of constant value +#pragma warning (disable : 4305) // truncation of int +#pragma warning (disable : 4018) // signed/unsigned mismatch +#pragma warning (disable : 4700) // used without having been initialized +#pragma warning (disable : 4805) // unsafe bool mix +#pragma warning (disable : 4244) // conversion loss +#pragma warning (disable : 4800) // bool perf +#pragma warning (disable : 4146) // negative unsigned + +#include "enums.h" +#include "structs.h" + +#include "DiabloUI/_diabloui.h" +#include "3rdParty/Storm/Source/_storm.h" +#include "3rdParty/PKWare/pkware.h" + + +#include "defs.h" + +// If defined, use copy protection [Default -> Defined] +//#define COPYPROT +// If defined, don't reload for debuggers [Default -> Undefined] +#define DEBUGGER +// If defined, don't fry the CPU [Default -> Undefined] +#define SLEEP + +/* temp macro for asm XLAT */ +#define ASM_XLAT(eax,ebx) eax = (eax & 0xFFFFFF00) + LOBYTE(ebx[LOBYTE(eax)]) + +// header files +#include "Source/appfat.h" +#include "Source/automap.h" +#include "Source/capture.h" +#include "Source/codec.h" +#include "Source/control.h" +#include "Source/cursor.h" +#include "Source/dead.h" +#include "Source/debug.h" +#include "Source/diablo.h" +#include "Source/doom.h" +#include "Source/drlg_l1.h" +#include "Source/drlg_l2.h" +#include "Source/drlg_l3.h" +#include "Source/drlg_l4.h" +#include "Source/dthread.h" +#include "Source/dx.h" +#include "Source/effects.h" +#include "Source/encrypt.h" +#include "Source/engine.h" +#include "Source/error.h" +#include "Source/fault.h" +#include "Source/gamemenu.h" +#include "Source/gendung.h" +#include "Source/gmenu.h" +#include "Source/help.h" +#include "Source/init.h" +#include "Source/interfac.h" +#include "Source/inv.h" +#include "Source/items.h" +#include "Source/lighting.h" +#include "Source/loadsave.h" +#include "Source/logging.h" +#include "Source/mainmenu.h" +#include "Source/minitext.h" +#include "Source/missiles.h" +#include "Source/monster.h" +#include "Source/movie.h" +#include "Source/mpqapi.h" +#include "Source/msg.h" +#include "Source/msgcmd.h" +#include "Source/multi.h" +#include "Source/nthread.h" +#include "Source/objects.h" +#include "Source/pack.h" +#include "Source/palette.h" +#include "Source/path.h" +#include "Source/pfile.h" +#include "Source/player.h" +#include "Source/plrmsg.h" +#include "Source/portal.h" +#include "Source/quests.h" +#include "Source/restrict.h" +#include "Source/scrollrt.h" +#include "Source/setmaps.h" +#include "Source/sha.h" +#include "Source/sound.h" +#include "Source/spells.h" +#include "Source/stores.h" +#include "Source/sync.h" +#include "Source/textdat.h" // check file name +#include "Source/themes.h" +#include "Source/tmsg.h" +#include "Source/town.h" +#include "Source/towners.h" +#include "Source/track.h" +#include "Source/trigs.h" +#include "Source/wave.h" +#include "Source/world.h" + +#endif