From 6327e713e0622ebadf5f30418b9cff74c09a697c Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Sat, 20 Aug 2022 22:59:49 +0100 Subject: [PATCH] Lowercase all file paths We want to be able to use unpacked MPQs on low-end platforms (PS2/rg99/etc). This is tricky on case-sensitive filesystems. Avoids case issues by lowercasing all paths in the code (then we'll just need lowercased listfiles). --- CMake/Assets.cmake | 8 +- .../SklKngT.dun => levels/l1data/sklkngt.dun} | Bin .../l2data/bonechat.dun} | Bin .../L5Data => nlevels/l5data}/cornerstone.dun | Bin .../L5Data => nlevels/l5data}/uberroom.dun | Bin Source/automap.cpp | 12 +- Source/capture.cpp | 5 +- Source/capture.h | 2 +- Source/control.cpp | 20 +- Source/cursor.cpp | 4 +- Source/debug.cpp | 12 +- Source/diablo.cpp | 46 +- Source/doom.cpp | 2 +- Source/effects.cpp | 2052 ++++++++--------- Source/engine/palette.cpp | 8 +- Source/engine/render/text_render.cpp | 2 +- Source/engine/sound.cpp | 32 +- Source/engine/trn.cpp | 12 +- Source/gmenu.cpp | 10 +- Source/interfac.cpp | 44 +- Source/inv.cpp | 8 +- Source/items.cpp | 72 +- Source/levels/crypt.cpp | 4 +- Source/levels/drlg_l1.cpp | 6 +- Source/levels/drlg_l2.cpp | 6 +- Source/levels/drlg_l3.cpp | 2 +- Source/levels/drlg_l4.cpp | 12 +- Source/levels/gendung.cpp | 32 +- Source/levels/setmaps.cpp | 28 +- Source/levels/town.cpp | 8 +- Source/lighting.cpp | 4 +- Source/minitext.cpp | 2 +- Source/misdat.cpp | 80 +- Source/monstdat.cpp | 476 ++-- Source/monster.cpp | 36 +- Source/objdat.cpp | 130 +- Source/objects.cpp | 16 +- Source/panels/info_box.cpp | 4 +- Source/panels/spell_book.cpp | 6 +- Source/panels/spell_icons.cpp | 4 +- Source/player.cpp | 2 +- Source/quests.cpp | 14 +- Source/towners.cpp | 32 +- Source/utils/cel_to_clx.cpp | 2 +- test/Fixtures.cmake | 40 +- .../Banner1.DUN => levels/l1data/banner1.dun} | Bin .../Banner2.DUN => levels/l1data/banner2.dun} | Bin .../rnd6.DUN => levels/l1data/rnd6.dun} | Bin .../SKngDO.DUN => levels/l1data/skngdo.dun} | Bin .../Blind1.DUN => levels/l2data/blind1.dun} | Bin .../Blood1.DUN => levels/l2data/blood1.dun} | Bin .../Blood2.DUN => levels/l2data/blood2.dun} | Bin .../l2data/bonestr1.dun} | Bin .../l2data/bonestr2.dun} | Bin .../Anvil.DUN => levels/l3data/anvil.dun} | Bin .../diab1.DUN => levels/l4data/diab1.dun} | Bin .../diab2a.DUN => levels/l4data/diab2a.dun} | Bin .../diab2b.DUN => levels/l4data/diab2b.dun} | Bin .../diab3a.DUN => levels/l4data/diab3a.dun} | Bin .../diab3b.DUN => levels/l4data/diab3b.dun} | Bin .../diab4a.DUN => levels/l4data/diab4a.dun} | Bin .../diab4b.DUN => levels/l4data/diab4b.dun} | Bin .../Vile1.DUN => levels/l4data/vile1.dun} | Bin .../Warlord.DUN => levels/l4data/warlord.dun} | Bin .../l4data/warlord2.dun} | Bin 65 files changed, 1649 insertions(+), 1648 deletions(-) rename Packaging/resources/assets/{Levels/L1Data/SklKngT.dun => levels/l1data/sklkngt.dun} (100%) rename Packaging/resources/assets/{Levels/L2Data/BonechaT.dun => levels/l2data/bonechat.dun} (100%) rename Packaging/resources/assets/{NLevels/L5Data => nlevels/l5data}/cornerstone.dun (100%) rename Packaging/resources/assets/{NLevels/L5Data => nlevels/l5data}/uberroom.dun (100%) rename test/fixtures/{Levels/L1Data/Banner1.DUN => levels/l1data/banner1.dun} (100%) rename test/fixtures/{Levels/L1Data/Banner2.DUN => levels/l1data/banner2.dun} (100%) rename test/fixtures/{Levels/L1Data/rnd6.DUN => levels/l1data/rnd6.dun} (100%) rename test/fixtures/{Levels/L1Data/SKngDO.DUN => levels/l1data/skngdo.dun} (100%) rename test/fixtures/{Levels/L2Data/Blind1.DUN => levels/l2data/blind1.dun} (100%) rename test/fixtures/{Levels/L2Data/Blood1.DUN => levels/l2data/blood1.dun} (100%) rename test/fixtures/{Levels/L2Data/Blood2.DUN => levels/l2data/blood2.dun} (100%) rename test/fixtures/{Levels/L2Data/Bonestr1.DUN => levels/l2data/bonestr1.dun} (100%) rename test/fixtures/{Levels/L2Data/Bonestr2.DUN => levels/l2data/bonestr2.dun} (100%) rename test/fixtures/{Levels/L3Data/Anvil.DUN => levels/l3data/anvil.dun} (100%) rename test/fixtures/{Levels/L4Data/diab1.DUN => levels/l4data/diab1.dun} (100%) rename test/fixtures/{Levels/L4Data/diab2a.DUN => levels/l4data/diab2a.dun} (100%) rename test/fixtures/{Levels/L4Data/diab2b.DUN => levels/l4data/diab2b.dun} (100%) rename test/fixtures/{Levels/L4Data/diab3a.DUN => levels/l4data/diab3a.dun} (100%) rename test/fixtures/{Levels/L4Data/diab3b.DUN => levels/l4data/diab3b.dun} (100%) rename test/fixtures/{Levels/L4Data/diab4a.DUN => levels/l4data/diab4a.dun} (100%) rename test/fixtures/{Levels/L4Data/diab4b.DUN => levels/l4data/diab4b.dun} (100%) rename test/fixtures/{Levels/L4Data/Vile1.DUN => levels/l4data/vile1.dun} (100%) rename test/fixtures/{Levels/L4Data/Warlord.DUN => levels/l4data/warlord.dun} (100%) rename test/fixtures/{Levels/L4Data/Warlord2.DUN => levels/l4data/warlord2.dun} (100%) diff --git a/CMake/Assets.cmake b/CMake/Assets.cmake index e7fcb79f1..5e37f152e 100644 --- a/CMake/Assets.cmake +++ b/CMake/Assets.cmake @@ -157,10 +157,10 @@ set(devilutionx_assets gendata/cutportlw.clx gendata/cutportrw.clx gendata/cutstartw.clx - Levels/L1Data/SklKngT.dun - Levels/L2Data/BonechaT.dun - NLevels/L5Data/cornerstone.dun - NLevels/L5Data/uberroom.dun + levels/l1data/sklkngt.dun + levels/l2data/bonechat.dun + nlevels/l5data/cornerstone.dun + nlevels/l5data/uberroom.dun ui_art/black_diablo.pcx ui_art/black_hellfire.pcx ui_art/creditsw.clx diff --git a/Packaging/resources/assets/Levels/L1Data/SklKngT.dun b/Packaging/resources/assets/levels/l1data/sklkngt.dun similarity index 100% rename from Packaging/resources/assets/Levels/L1Data/SklKngT.dun rename to Packaging/resources/assets/levels/l1data/sklkngt.dun diff --git a/Packaging/resources/assets/Levels/L2Data/BonechaT.dun b/Packaging/resources/assets/levels/l2data/bonechat.dun similarity index 100% rename from Packaging/resources/assets/Levels/L2Data/BonechaT.dun rename to Packaging/resources/assets/levels/l2data/bonechat.dun diff --git a/Packaging/resources/assets/NLevels/L5Data/cornerstone.dun b/Packaging/resources/assets/nlevels/l5data/cornerstone.dun similarity index 100% rename from Packaging/resources/assets/NLevels/L5Data/cornerstone.dun rename to Packaging/resources/assets/nlevels/l5data/cornerstone.dun diff --git a/Packaging/resources/assets/NLevels/L5Data/uberroom.dun b/Packaging/resources/assets/nlevels/l5data/uberroom.dun similarity index 100% rename from Packaging/resources/assets/NLevels/L5Data/uberroom.dun rename to Packaging/resources/assets/nlevels/l5data/uberroom.dun diff --git a/Source/automap.cpp b/Source/automap.cpp index d2a25bca1..f47a30349 100644 --- a/Source/automap.cpp +++ b/Source/automap.cpp @@ -540,17 +540,17 @@ std::unique_ptr LoadAutomapData(size_t &tileCount) { switch (leveltype) { case DTYPE_CATHEDRAL: - return LoadFileInMem("Levels\\L1Data\\L1.AMP", &tileCount); + return LoadFileInMem("levels\\l1data\\l1.amp", &tileCount); case DTYPE_CATACOMBS: - return LoadFileInMem("Levels\\L2Data\\L2.AMP", &tileCount); + return LoadFileInMem("levels\\l2data\\l2.amp", &tileCount); case DTYPE_CAVES: - return LoadFileInMem("Levels\\L3Data\\L3.AMP", &tileCount); + return LoadFileInMem("levels\\l3data\\l3.amp", &tileCount); case DTYPE_HELL: - return LoadFileInMem("Levels\\L4Data\\L4.AMP", &tileCount); + return LoadFileInMem("levels\\l4data\\l4.amp", &tileCount); case DTYPE_NEST: - return LoadFileInMem("NLevels\\L6Data\\L6.AMP", &tileCount); + return LoadFileInMem("nlevels\\l6data\\l6.amp", &tileCount); case DTYPE_CRYPT: - return LoadFileInMem("NLevels\\L5Data\\L5.AMP", &tileCount); + return LoadFileInMem("nlevels\\l5data\\l5.amp", &tileCount); default: return nullptr; } diff --git a/Source/capture.cpp b/Source/capture.cpp index 56fb6a603..8e5021ab4 100644 --- a/Source/capture.cpp +++ b/Source/capture.cpp @@ -14,6 +14,7 @@ #include "utils/log.hpp" #include "utils/paths.h" #include "utils/pcx.hpp" +#include "utils/str_cat.hpp" #include "utils/ui_fwd.h" namespace devilution { @@ -136,11 +137,11 @@ std::ofstream CaptureFile(std::string *dstPath) std::time_t tt = std::time(nullptr); std::tm *tm = std::localtime(&tt); std::string filename = fmt::format("Screenshot from {:%Y-%m-%d %H-%M-%S}", *tm); - *dstPath = paths::PrefPath() + filename + ".PCX"; + *dstPath = StrCat(paths::PrefPath(), filename, ".pcx"); int i = 0; while (FileExists(dstPath->c_str())) { i++; - *dstPath = paths::PrefPath() + filename + "-" + std::to_string(i) + ".PCX"; + *dstPath = StrCat(paths::PrefPath(), filename, "-", i, ".pcx"); } return std::ofstream(*dstPath, std::ios::binary | std::ios::trunc); } diff --git a/Source/capture.h b/Source/capture.h index d3e431f05..383ab9ed7 100644 --- a/Source/capture.h +++ b/Source/capture.h @@ -8,7 +8,7 @@ namespace devilution { /** - * @brief Save the current screen to a screen??.PCX (00-99) in file if available, then make the screen red for 200ms. + * @brief Save the current screen to a screen??.pcx (00-99) in file if available, then make the screen red for 200ms. */ void CaptureScreen(); diff --git a/Source/control.cpp b/Source/control.cpp index 2a1527c08..c6536b397 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -550,12 +550,12 @@ void InitControlPan() LoadCharPanel(); LoadSpellIcons(); { - const OwnedClxSpriteList sprite = LoadCel("CtrlPan\\Panel8.CEL", GetMainPanel().size.width); + const OwnedClxSpriteList sprite = LoadCel("ctrlpan\\panel8.cel", GetMainPanel().size.width); ClxDraw(*pBtmBuff, { 0, (GetMainPanel().size.height + 16) - 1 }, sprite[0]); } { const Point bulbsPosition { 0, 87 }; - const OwnedClxSpriteList statusPanel = LoadCel("CtrlPan\\P8Bulbs.CEL", 88); + const OwnedClxSpriteList statusPanel = LoadCel("ctrlpan\\p8bulbs.cel", 88); ClxDraw(*pLifeBuff, bulbsPosition, statusPanel[0]); ClxDraw(*pManaBuff, bulbsPosition, statusPanel[1]); } @@ -564,11 +564,11 @@ void InitControlPan() if (IsChatAvailable()) { if (!HeadlessMode) { { - const OwnedClxSpriteList sprite = LoadCel("CtrlPan\\TalkPanl.CEL", GetMainPanel().size.width); + const OwnedClxSpriteList sprite = LoadCel("ctrlpan\\talkpanl.cel", GetMainPanel().size.width); ClxDraw(*pBtmBuff, { 0, (GetMainPanel().size.height + 16) * 2 - 1 }, sprite[0]); } - multiButtons = LoadCel("CtrlPan\\P8But2.CEL", 33); - talkButtons = LoadCel("CtrlPan\\TalkButt.CEL", 61); + multiButtons = LoadCel("ctrlpan\\p8but2.cel", 33); + talkButtons = LoadCel("ctrlpan\\talkbutt.cel", 61); } sgbPlrTalkTbl = 0; TalkMessage[0] = '\0'; @@ -581,10 +581,10 @@ void InitControlPan() lvlbtndown = false; if (!HeadlessMode) { LoadMainPanel(); - pPanelButtons = LoadCel("CtrlPan\\Panel8bu.CEL", 71); + pPanelButtons = LoadCel("ctrlpan\\panel8bu.cel", 71); static const uint16_t CharButtonsFrameWidths[9] { 95, 41, 41, 41, 41, 41, 41, 41, 41 }; - pChrButtons = LoadCel("Data\\CharBut.CEL", CharButtonsFrameWidths); + pChrButtons = LoadCel("data\\charbut.cel", CharButtonsFrameWidths); } ClearPanBtn(); if (!IsChatAvailable()) @@ -592,7 +592,7 @@ void InitControlPan() else PanelButtonIndex = 8; if (!HeadlessMode) - pDurIcons = LoadCel("Items\\DurIcons.CEL", 32); + pDurIcons = LoadCel("items\\duricons.cel", 32); for (bool &buttonEnabled : chrbtn) buttonEnabled = false; chrbtnactive = false; @@ -607,8 +607,8 @@ void InitControlPan() if (!HeadlessMode) { InitSpellBook(); - pQLogCel = LoadCel("Data\\Quest.CEL", static_cast(SidePanelSize.width)); - pGBoxBuff = LoadCel("CtrlPan\\Golddrop.cel", 261); + pQLogCel = LoadCel("data\\quest.cel", static_cast(SidePanelSize.width)); + pGBoxBuff = LoadCel("ctrlpan\\golddrop.cel", 261); } CloseGoldDrop(); dropGoldValue = 0; diff --git a/Source/cursor.cpp b/Source/cursor.cpp index c6404b6a3..c86db111e 100644 --- a/Source/cursor.cpp +++ b/Source/cursor.cpp @@ -132,9 +132,9 @@ int pcurs; void InitCursor() { assert(!pCursCels); - pCursCels = LoadCel("Data\\Inv\\Objcurs.CEL", InvItemWidth1); + pCursCels = LoadCel("data\\inv\\objcurs.cel", InvItemWidth1); if (gbIsHellfire) - pCursCels2 = LoadCel("Data\\Inv\\Objcurs2.CEL", InvItemWidth2); + pCursCels2 = LoadCel("data\\inv\\objcurs2.cel", InvItemWidth2); ClearCursor(); } diff --git a/Source/debug.cpp b/Source/debug.cpp index cf9d5c948..b16f2d5e8 100644 --- a/Source/debug.cpp +++ b/Source/debug.cpp @@ -965,13 +965,13 @@ std::string DebugCmdChangeTRN(const string_view parameter) if (std::getline(paramsStream, second, ' ')) { std::string prefix; if (first == "mon") { - prefix = "Monsters\\Monsters\\"; + prefix = "monsters\\monsters\\"; } else if (first == "plr") { - prefix = "PlrGFX\\"; + prefix = "plrgfx\\"; } - debugTRN = prefix + second + ".TRN"; + debugTRN = prefix + second + ".trn"; } else { - debugTRN = first + ".TRN"; + debugTRN = first + ".trn"; } out = fmt::format("I am a pretty butterfly. \n(Loading TRN: {:s})", debugTRN); } else { @@ -1020,14 +1020,14 @@ std::vector DebugCmdList = { { "questinfo", "Shows info of quests.", "{id}", &DebugCmdQuestInfo }, { "playerinfo", "Shows info of player.", "{playerid}", &DebugCmdPlayerInfo }, { "fps", "Toggles displaying FPS", "", &DebugCmdToggleFPS }, - { "trn", "Makes player use TRN {trn} - Write 'plr' before it to look in PlrGFX\\ or 'mon' to look in Monsters\\Monsters\\ - example: trn plr infra is equal to 'PlrGFX\\Infra.TRN'", "{trn}", &DebugCmdChangeTRN }, + { "trn", "Makes player use TRN {trn} - Write 'plr' before it to look in plrgfx\\ or 'mon' to look in monsters\\monsters\\ - example: trn plr infra is equal to 'plrgfx\\infra.trn'", "{trn}", &DebugCmdChangeTRN }, }; } // namespace void LoadDebugGFX() { - pSquareCel = LoadCel("Data\\Square.CEL", 64); + pSquareCel = LoadCel("data\\square.cel", 64); } void FreeDebugGFX() diff --git a/Source/diablo.cpp b/Source/diablo.cpp index ff9228a65..e3906616a 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -1087,43 +1087,43 @@ void LoadLvlGFX() switch (leveltype) { case DTYPE_TOWN: if (gbIsHellfire) { - pDungeonCels = LoadFileInMem("NLevels\\TownData\\Town.CEL"); - pMegaTiles = LoadFileInMem("NLevels\\TownData\\Town.TIL"); + pDungeonCels = LoadFileInMem("nlevels\\towndata\\town.cel"); + pMegaTiles = LoadFileInMem("nlevels\\towndata\\town.til"); } else { - pDungeonCels = LoadFileInMem("Levels\\TownData\\Town.CEL"); - pMegaTiles = LoadFileInMem("Levels\\TownData\\Town.TIL"); + pDungeonCels = LoadFileInMem("levels\\towndata\\town.cel"); + pMegaTiles = LoadFileInMem("levels\\towndata\\town.til"); } - pSpecialCels = LoadCel("Levels\\TownData\\TownS.CEL", SpecialCelWidth); + pSpecialCels = LoadCel("levels\\towndata\\towns.cel", SpecialCelWidth); break; case DTYPE_CATHEDRAL: - pDungeonCels = LoadFileInMem("Levels\\L1Data\\L1.CEL"); - pMegaTiles = LoadFileInMem("Levels\\L1Data\\L1.TIL"); - pSpecialCels = LoadCel("Levels\\L1Data\\L1S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("levels\\l1data\\l1.cel"); + pMegaTiles = LoadFileInMem("levels\\l1data\\l1.til"); + pSpecialCels = LoadCel("levels\\l1data\\l1s.cel", SpecialCelWidth); break; case DTYPE_CATACOMBS: - pDungeonCels = LoadFileInMem("Levels\\L2Data\\L2.CEL"); - pMegaTiles = LoadFileInMem("Levels\\L2Data\\L2.TIL"); - pSpecialCels = LoadCel("Levels\\L2Data\\L2S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("levels\\l2data\\l2.cel"); + pMegaTiles = LoadFileInMem("levels\\l2data\\l2.til"); + pSpecialCels = LoadCel("levels\\l2data\\l2s.cel", SpecialCelWidth); break; case DTYPE_CAVES: - pDungeonCels = LoadFileInMem("Levels\\L3Data\\L3.CEL"); - pMegaTiles = LoadFileInMem("Levels\\L3Data\\L3.TIL"); - pSpecialCels = LoadCel("Levels\\L1Data\\L1S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("levels\\l3data\\l3.cel"); + pMegaTiles = LoadFileInMem("levels\\l3data\\l3.til"); + pSpecialCels = LoadCel("levels\\l1data\\l1s.cel", SpecialCelWidth); break; case DTYPE_HELL: - pDungeonCels = LoadFileInMem("Levels\\L4Data\\L4.CEL"); - pMegaTiles = LoadFileInMem("Levels\\L4Data\\L4.TIL"); - pSpecialCels = LoadCel("Levels\\L2Data\\L2S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("levels\\l4data\\l4.cel"); + pMegaTiles = LoadFileInMem("levels\\l4data\\l4.til"); + pSpecialCels = LoadCel("levels\\l2data\\l2s.cel", SpecialCelWidth); break; case DTYPE_NEST: - pDungeonCels = LoadFileInMem("NLevels\\L6Data\\L6.CEL"); - pMegaTiles = LoadFileInMem("NLevels\\L6Data\\L6.TIL"); - pSpecialCels = LoadCel("Levels\\L1Data\\L1S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("nlevels\\l6data\\l6.cel"); + pMegaTiles = LoadFileInMem("nlevels\\l6data\\l6.til"); + pSpecialCels = LoadCel("levels\\l1data\\l1s.cel", SpecialCelWidth); break; case DTYPE_CRYPT: - pDungeonCels = LoadFileInMem("NLevels\\L5Data\\L5.CEL"); - pMegaTiles = LoadFileInMem("NLevels\\L5Data\\L5.TIL"); - pSpecialCels = LoadCel("NLevels\\L5Data\\L5S.CEL", SpecialCelWidth); + pDungeonCels = LoadFileInMem("nlevels\\l5data\\l5.cel"); + pMegaTiles = LoadFileInMem("nlevels\\l5data\\l5.til"); + pSpecialCels = LoadCel("nlevels\\l5data\\l5s.cel", SpecialCelWidth); break; default: app_fatal("LoadLvlGFX"); diff --git a/Source/doom.cpp b/Source/doom.cpp index c6bab3bb7..07a311006 100644 --- a/Source/doom.cpp +++ b/Source/doom.cpp @@ -21,7 +21,7 @@ bool DoomFlag; void doom_init() { - DoomSprite = LoadCel("Items\\Map\\MapZtown.CEL", 640); + DoomSprite = LoadCel("items\\map\\mapztown.cel", 640); DoomFlag = true; } diff --git a/Source/effects.cpp b/Source/effects.cpp index c7d9e44ca..efcd272e4 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -34,1034 +34,1034 @@ TSFX *sgpStreamSFX = nullptr; TSFX sgSFX[] = { // clang-format off // bFlags, pszName, pSnd - { sfx_MISC, "Sfx\\Misc\\Walk1.wav", nullptr },// PS_WALK1 - { sfx_MISC, "Sfx\\Misc\\Walk2.wav", nullptr },// PS_WALK2 - { sfx_MISC, "Sfx\\Misc\\Walk3.wav", nullptr },// PS_WALK3 - { sfx_MISC, "Sfx\\Misc\\Walk4.wav", nullptr },// PS_WALK4 - { sfx_MISC, "Sfx\\Misc\\BFire.wav", nullptr },// PS_BFIRE - { sfx_MISC, "Sfx\\Misc\\Fmag.wav", nullptr },// PS_FMAG - { sfx_MISC, "Sfx\\Misc\\Tmag.wav", nullptr },// PS_TMAG - { sfx_MISC, "Sfx\\Misc\\Lghit.wav", nullptr },// PS_LGHIT - { sfx_MISC, "Sfx\\Misc\\Lghit1.wav", nullptr },// PS_LGHIT1 - { sfx_MISC, "Sfx\\Misc\\Swing.wav", nullptr },// PS_SWING - { sfx_MISC, "Sfx\\Misc\\Swing2.wav", nullptr },// PS_SWING2 - { sfx_MISC, "Sfx\\Misc\\Dead.wav", nullptr },// PS_DEAD - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Misc\\Sting1.wav", nullptr },// IS_STING1 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Misc\\FBallBow.wav", nullptr },// IS_FBALLBOW - { sfx_STREAM, "Sfx\\Misc\\Questdon.wav", nullptr },// IS_QUESTDN - { sfx_MISC, "Sfx\\Items\\Armrfkd.wav", nullptr },// IS_ARMRFKD - { sfx_MISC, "Sfx\\Items\\Barlfire.wav", nullptr },// IS_BARLFIRE - { sfx_MISC, "Sfx\\Items\\Barrel.wav", nullptr },// IS_BARREL - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\PodPop8.wav", nullptr },// IS_POPPOP8 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\PodPop5.wav", nullptr },// IS_POPPOP5 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\UrnPop3.wav", nullptr },// IS_POPPOP3 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\UrnPop2.wav", nullptr },// IS_POPPOP2 - { sfx_MISC, "Sfx\\Items\\Bhit.wav", nullptr },// IS_BHIT - { sfx_MISC, "Sfx\\Items\\Bhit1.wav", nullptr },// IS_BHIT1 - { sfx_MISC, "Sfx\\Items\\Chest.wav", nullptr },// IS_CHEST - { sfx_MISC, "Sfx\\Items\\Doorclos.wav", nullptr },// IS_DOORCLOS - { sfx_MISC, "Sfx\\Items\\Dooropen.wav", nullptr },// IS_DOOROPEN - { sfx_MISC, "Sfx\\Items\\Flipanvl.wav", nullptr },// IS_FANVL - { sfx_MISC, "Sfx\\Items\\Flipaxe.wav", nullptr },// IS_FAXE - { sfx_MISC, "Sfx\\Items\\Flipblst.wav", nullptr },// IS_FBLST - { sfx_MISC, "Sfx\\Items\\Flipbody.wav", nullptr },// IS_FBODY - { sfx_MISC, "Sfx\\Items\\Flipbook.wav", nullptr },// IS_FBOOK - { sfx_MISC, "Sfx\\Items\\Flipbow.wav", nullptr },// IS_FBOW - { sfx_MISC, "Sfx\\Items\\Flipcap.wav", nullptr },// IS_FCAP - { sfx_MISC, "Sfx\\Items\\Flipharm.wav", nullptr },// IS_FHARM - { sfx_MISC, "Sfx\\Items\\Fliplarm.wav", nullptr },// IS_FLARM - { sfx_MISC, "Sfx\\Items\\Flipmag.wav", nullptr },// IS_FMAG - { sfx_MISC, "Sfx\\Items\\Flipmag1.wav", nullptr },// IS_FMAG1 - { sfx_MISC, "Sfx\\Items\\Flipmush.wav", nullptr },// IS_FMUSH - { sfx_MISC, "Sfx\\Items\\Flippot.wav", nullptr },// IS_FPOT - { sfx_MISC, "Sfx\\Items\\Flipring.wav", nullptr },// IS_FRING - { sfx_MISC, "Sfx\\Items\\Fliprock.wav", nullptr },// IS_FROCK - { sfx_MISC, "Sfx\\Items\\Flipscrl.wav", nullptr },// IS_FSCRL - { sfx_MISC, "Sfx\\Items\\Flipshld.wav", nullptr },// IS_FSHLD - { sfx_MISC, "Sfx\\Items\\Flipsign.wav", nullptr },// IS_FSIGN - { sfx_MISC, "Sfx\\Items\\Flipstaf.wav", nullptr },// IS_FSTAF - { sfx_MISC, "Sfx\\Items\\Flipswor.wav", nullptr },// IS_FSWOR - { sfx_MISC, "Sfx\\Items\\Gold.wav", nullptr },// IS_GOLD - { sfx_MISC, "Sfx\\Items\\Hlmtfkd.wav", nullptr },// IS_HLMTFKD - { sfx_MISC, "Sfx\\Items\\Invanvl.wav", nullptr },// IS_IANVL - { sfx_MISC, "Sfx\\Items\\Invaxe.wav", nullptr },// IS_IAXE - { sfx_MISC, "Sfx\\Items\\Invblst.wav", nullptr },// IS_IBLST - { sfx_MISC, "Sfx\\Items\\Invbody.wav", nullptr },// IS_IBODY - { sfx_MISC, "Sfx\\Items\\Invbook.wav", nullptr },// IS_IBOOK - { sfx_MISC, "Sfx\\Items\\Invbow.wav", nullptr },// IS_IBOW - { sfx_MISC, "Sfx\\Items\\Invcap.wav", nullptr },// IS_ICAP - { sfx_MISC, "Sfx\\Items\\Invgrab.wav", nullptr },// IS_IGRAB - { sfx_MISC, "Sfx\\Items\\Invharm.wav", nullptr },// IS_IHARM - { sfx_MISC, "Sfx\\Items\\Invlarm.wav", nullptr },// IS_ILARM - { sfx_MISC, "Sfx\\Items\\Invmush.wav", nullptr },// IS_IMUSH - { sfx_MISC, "Sfx\\Items\\Invpot.wav", nullptr },// IS_IPOT - { sfx_MISC, "Sfx\\Items\\Invring.wav", nullptr },// IS_IRING - { sfx_MISC, "Sfx\\Items\\Invrock.wav", nullptr },// IS_IROCK - { sfx_MISC, "Sfx\\Items\\Invscrol.wav", nullptr },// IS_ISCROL - { sfx_MISC, "Sfx\\Items\\Invshiel.wav", nullptr },// IS_ISHIEL - { sfx_MISC, "Sfx\\Items\\Invsign.wav", nullptr },// IS_ISIGN - { sfx_MISC, "Sfx\\Items\\Invstaf.wav", nullptr },// IS_ISTAF - { sfx_MISC, "Sfx\\Items\\Invsword.wav", nullptr },// IS_ISWORD - { sfx_MISC, "Sfx\\Items\\Lever.wav", nullptr },// IS_LEVER - { sfx_MISC, "Sfx\\Items\\Magic.wav", nullptr },// IS_MAGIC - { sfx_MISC, "Sfx\\Items\\Magic1.wav", nullptr },// IS_MAGIC1 - { sfx_MISC, "Sfx\\Items\\Readbook.wav", nullptr },// IS_RBOOK - { sfx_MISC, "Sfx\\Items\\Sarc.wav", nullptr },// IS_SARC - { sfx_MISC, "Sfx\\Items\\Shielfkd.wav", nullptr },// IS_SHLDFKD - { sfx_MISC, "Sfx\\Items\\Swrdfkd.wav", nullptr },// IS_SWRDFKD - { sfx_UI, "Sfx\\Items\\Titlemov.wav", nullptr },// IS_TITLEMOV - { sfx_UI, "Sfx\\Items\\Titlslct.wav", nullptr },// IS_TITLSLCT - { sfx_UI, "Sfx\\Misc\\blank.wav", nullptr },// SFX_SILENCE - { sfx_MISC, "Sfx\\Items\\Trap.wav", nullptr },// IS_TRAP - { sfx_MISC, "Sfx\\Misc\\Cast1.wav", nullptr },// IS_CAST1 - { sfx_MISC, "Sfx\\Misc\\Cast10.wav", nullptr },// IS_CAST10 - { sfx_MISC, "Sfx\\Misc\\Cast12.wav", nullptr },// IS_CAST12 - { sfx_MISC, "Sfx\\Misc\\Cast2.wav", nullptr },// IS_CAST2 - { sfx_MISC, "Sfx\\Misc\\Cast3.wav", nullptr },// IS_CAST3 - { sfx_MISC, "Sfx\\Misc\\Cast4.wav", nullptr },// IS_CAST4 - { sfx_MISC, "Sfx\\Misc\\Cast5.wav", nullptr },// IS_CAST5 - { sfx_MISC, "Sfx\\Misc\\Cast6.wav", nullptr },// IS_CAST6 - { sfx_MISC, "Sfx\\Misc\\Cast7.wav", nullptr },// IS_CAST7 - { sfx_MISC, "Sfx\\Misc\\Cast8.wav", nullptr },// IS_CAST8 - { sfx_MISC, "Sfx\\Misc\\Cast9.wav", nullptr },// IS_CAST9 - { sfx_MISC, "Sfx\\Misc\\Healing.wav", nullptr },// LS_HEALING - { sfx_MISC, "Sfx\\Misc\\Repair.wav", nullptr },// IS_REPAIR - { sfx_MISC, "Sfx\\Misc\\Acids1.wav", nullptr },// LS_ACID - { sfx_MISC, "Sfx\\Misc\\Acids2.wav", nullptr },// LS_ACIDS - { sfx_MISC, "Sfx\\Misc\\Apoc.wav", nullptr },// LS_APOC - { sfx_MISC, "Sfx\\Misc\\Arrowall.wav", nullptr },// LS_ARROWALL - { sfx_MISC, "Sfx\\Misc\\Bldboil.wav", nullptr },// LS_BLODBOIL - { sfx_MISC, "Sfx\\Misc\\Blodstar.wav", nullptr },// LS_BLODSTAR - { sfx_MISC, "Sfx\\Misc\\Blsimpt.wav", nullptr },// LS_BLSIMPT - { sfx_MISC, "Sfx\\Misc\\Bonesp.wav", nullptr },// LS_BONESP - { sfx_MISC, "Sfx\\Misc\\Bsimpct.wav", nullptr },// LS_BSIMPCT - { sfx_MISC, "Sfx\\Misc\\Caldron.wav", nullptr },// LS_CALDRON - { sfx_MISC, "Sfx\\Misc\\Cbolt.wav", nullptr },// LS_CBOLT - { sfx_MISC, "Sfx\\Misc\\Chltning.wav", nullptr },// LS_CHLTNING - { sfx_MISC, "Sfx\\Misc\\DSerp.wav", nullptr },// LS_DSERP - { sfx_MISC, "Sfx\\Misc\\Elecimp1.wav", nullptr },// LS_ELECIMP1 - { sfx_MISC, "Sfx\\Misc\\Elementl.wav", nullptr },// LS_ELEMENTL - { sfx_MISC, "Sfx\\Misc\\Ethereal.wav", nullptr },// LS_ETHEREAL - { sfx_MISC, "Sfx\\Misc\\Fball.wav", nullptr },// LS_FBALL - { sfx_MISC, "Sfx\\Misc\\Fbolt1.wav", nullptr },// LS_FBOLT1 - { sfx_MISC, "Sfx\\Misc\\Fbolt2.wav", nullptr },// LS_FBOLT2 - { sfx_MISC, "Sfx\\Misc\\Firimp1.wav", nullptr },// LS_FIRIMP1 - { sfx_MISC, "Sfx\\Misc\\Firimp2.wav", nullptr },// LS_FIRIMP2 - { sfx_MISC, "Sfx\\Misc\\Flamwave.wav", nullptr },// LS_FLAMWAVE - { sfx_MISC, "Sfx\\Misc\\Flash.wav", nullptr },// LS_FLASH - { sfx_MISC, "Sfx\\Misc\\Fountain.wav", nullptr },// LS_FOUNTAIN - { sfx_MISC, "Sfx\\Misc\\Golum.wav", nullptr },// LS_GOLUM - { sfx_MISC, "Sfx\\Misc\\Golumded.wav", nullptr },// LS_GOLUMDED - { sfx_MISC, "Sfx\\Misc\\Gshrine.wav", nullptr },// LS_GSHRINE - { sfx_MISC, "Sfx\\Misc\\Guard.wav", nullptr },// LS_GUARD - { sfx_MISC, "Sfx\\Misc\\Grdlanch.wav", nullptr },// LS_GUARDLAN - { sfx_MISC, "Sfx\\Misc\\Holybolt.wav", nullptr },// LS_HOLYBOLT - { sfx_MISC, "Sfx\\Misc\\Hyper.wav", nullptr },// LS_HYPER - { sfx_MISC, "Sfx\\Misc\\Infravis.wav", nullptr },// LS_INFRAVIS - { sfx_MISC, "Sfx\\Misc\\Invisibl.wav", nullptr },// LS_INVISIBL - { sfx_MISC, "Sfx\\Misc\\Invpot.wav", nullptr },// LS_INVPOT - { sfx_MISC, "Sfx\\Misc\\Lning1.wav", nullptr },// LS_LNING1 - { sfx_MISC, "Sfx\\Misc\\Ltning.wav", nullptr },// LS_LTNING - { sfx_MISC, "Sfx\\Misc\\Mshield.wav", nullptr },// LS_MSHIELD - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Misc\\NestXpld.wav", nullptr },// LS_NESTXPLD - { sfx_MISC, "Sfx\\Misc\\Nova.wav", nullptr },// LS_NOVA - { sfx_MISC, "Sfx\\Misc\\Portal.wav", nullptr },// LS_PORTAL - { sfx_MISC, "Sfx\\Misc\\Puddle.wav", nullptr },// LS_PUDDLE - { sfx_MISC, "Sfx\\Misc\\Resur.wav", nullptr },// LS_RESUR - { sfx_MISC, "Sfx\\Misc\\Scurse.wav", nullptr },// LS_SCURSE - { sfx_MISC, "Sfx\\Misc\\Scurimp.wav", nullptr },// LS_SCURIMP - { sfx_MISC, "Sfx\\Misc\\Sentinel.wav", nullptr },// LS_SENTINEL - { sfx_MISC, "Sfx\\Misc\\Shatter.wav", nullptr },// LS_SHATTER - { sfx_MISC, "Sfx\\Misc\\Soulfire.wav", nullptr },// LS_SOULFIRE - { sfx_MISC, "Sfx\\Misc\\Spoutlop.wav", nullptr },// LS_SPOUTLOP - { sfx_MISC, "Sfx\\Misc\\Spoutstr.wav", nullptr },// LS_SPOUTSTR - { sfx_MISC, "Sfx\\Misc\\Storm.wav", nullptr },// LS_STORM - { sfx_MISC, "Sfx\\Misc\\Trapdis.wav", nullptr },// LS_TRAPDIS - { sfx_MISC, "Sfx\\Misc\\Teleport.wav", nullptr },// LS_TELEPORT - { sfx_MISC, "Sfx\\Misc\\Vtheft.wav", nullptr },// LS_VTHEFT - { sfx_MISC, "Sfx\\Misc\\Wallloop.wav", nullptr },// LS_WALLLOOP - { sfx_MISC, "Sfx\\Misc\\Wallstrt.wav", nullptr },// LS_WALLSTRT - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Misc\\LMag.wav", nullptr },// LS_LMAG - { sfx_STREAM, "Sfx\\Towners\\Bmaid01.wav", nullptr },// TSFX_BMAID1 - { sfx_STREAM, "Sfx\\Towners\\Bmaid02.wav", nullptr },// TSFX_BMAID2 - { sfx_STREAM, "Sfx\\Towners\\Bmaid03.wav", nullptr },// TSFX_BMAID3 - { sfx_STREAM, "Sfx\\Towners\\Bmaid04.wav", nullptr },// TSFX_BMAID4 - { sfx_STREAM, "Sfx\\Towners\\Bmaid05.wav", nullptr },// TSFX_BMAID5 - { sfx_STREAM, "Sfx\\Towners\\Bmaid06.wav", nullptr },// TSFX_BMAID6 - { sfx_STREAM, "Sfx\\Towners\\Bmaid07.wav", nullptr },// TSFX_BMAID7 - { sfx_STREAM, "Sfx\\Towners\\Bmaid08.wav", nullptr },// TSFX_BMAID8 - { sfx_STREAM, "Sfx\\Towners\\Bmaid09.wav", nullptr },// TSFX_BMAID9 - { sfx_STREAM, "Sfx\\Towners\\Bmaid10.wav", nullptr },// TSFX_BMAID10 - { sfx_STREAM, "Sfx\\Towners\\Bmaid11.wav", nullptr },// TSFX_BMAID11 - { sfx_STREAM, "Sfx\\Towners\\Bmaid12.wav", nullptr },// TSFX_BMAID12 - { sfx_STREAM, "Sfx\\Towners\\Bmaid13.wav", nullptr },// TSFX_BMAID13 - { sfx_STREAM, "Sfx\\Towners\\Bmaid14.wav", nullptr },// TSFX_BMAID14 - { sfx_STREAM, "Sfx\\Towners\\Bmaid15.wav", nullptr },// TSFX_BMAID15 - { sfx_STREAM, "Sfx\\Towners\\Bmaid16.wav", nullptr },// TSFX_BMAID16 - { sfx_STREAM, "Sfx\\Towners\\Bmaid17.wav", nullptr },// TSFX_BMAID17 - { sfx_STREAM, "Sfx\\Towners\\Bmaid18.wav", nullptr },// TSFX_BMAID18 - { sfx_STREAM, "Sfx\\Towners\\Bmaid19.wav", nullptr },// TSFX_BMAID19 - { sfx_STREAM, "Sfx\\Towners\\Bmaid20.wav", nullptr },// TSFX_BMAID20 - { sfx_STREAM, "Sfx\\Towners\\Bmaid21.wav", nullptr },// TSFX_BMAID21 - { sfx_STREAM, "Sfx\\Towners\\Bmaid22.wav", nullptr },// TSFX_BMAID22 - { sfx_STREAM, "Sfx\\Towners\\Bmaid23.wav", nullptr },// TSFX_BMAID23 - { sfx_STREAM, "Sfx\\Towners\\Bmaid24.wav", nullptr },// TSFX_BMAID24 - { sfx_STREAM, "Sfx\\Towners\\Bmaid25.wav", nullptr },// TSFX_BMAID25 - { sfx_STREAM, "Sfx\\Towners\\Bmaid26.wav", nullptr },// TSFX_BMAID26 - { sfx_STREAM, "Sfx\\Towners\\Bmaid27.wav", nullptr },// TSFX_BMAID27 - { sfx_STREAM, "Sfx\\Towners\\Bmaid28.wav", nullptr },// TSFX_BMAID28 - { sfx_STREAM, "Sfx\\Towners\\Bmaid29.wav", nullptr },// TSFX_BMAID29 - { sfx_STREAM, "Sfx\\Towners\\Bmaid30.wav", nullptr },// TSFX_BMAID30 - { sfx_STREAM, "Sfx\\Towners\\Bmaid31.wav", nullptr },// TSFX_BMAID31 - { sfx_STREAM, "Sfx\\Towners\\Bmaid32.wav", nullptr },// TSFX_BMAID32 - { sfx_STREAM, "Sfx\\Towners\\Bmaid33.wav", nullptr },// TSFX_BMAID33 - { sfx_STREAM, "Sfx\\Towners\\Bmaid34.wav", nullptr },// TSFX_BMAID34 - { sfx_STREAM, "Sfx\\Towners\\Bmaid35.wav", nullptr },// TSFX_BMAID35 - { sfx_STREAM, "Sfx\\Towners\\Bmaid36.wav", nullptr },// TSFX_BMAID36 - { sfx_STREAM, "Sfx\\Towners\\Bmaid37.wav", nullptr },// TSFX_BMAID37 - { sfx_STREAM, "Sfx\\Towners\\Bmaid38.wav", nullptr },// TSFX_BMAID38 - { sfx_STREAM, "Sfx\\Towners\\Bmaid39.wav", nullptr },// TSFX_BMAID39 - { sfx_STREAM, "Sfx\\Towners\\Bmaid40.wav", nullptr },// TSFX_BMAID40 - { sfx_STREAM, "Sfx\\Towners\\Bsmith01.wav", nullptr },// TSFX_SMITH1 - { sfx_STREAM, "Sfx\\Towners\\Bsmith02.wav", nullptr },// TSFX_SMITH2 - { sfx_STREAM, "Sfx\\Towners\\Bsmith03.wav", nullptr },// TSFX_SMITH3 - { sfx_STREAM, "Sfx\\Towners\\Bsmith04.wav", nullptr },// TSFX_SMITH4 - { sfx_STREAM, "Sfx\\Towners\\Bsmith05.wav", nullptr },// TSFX_SMITH5 - { sfx_STREAM, "Sfx\\Towners\\Bsmith06.wav", nullptr },// TSFX_SMITH6 - { sfx_STREAM, "Sfx\\Towners\\Bsmith07.wav", nullptr },// TSFX_SMITH7 - { sfx_STREAM, "Sfx\\Towners\\Bsmith08.wav", nullptr },// TSFX_SMITH8 - { sfx_STREAM, "Sfx\\Towners\\Bsmith09.wav", nullptr },// TSFX_SMITH9 - { sfx_STREAM, "Sfx\\Towners\\Bsmith10.wav", nullptr },// TSFX_SMITH10 - { sfx_STREAM, "Sfx\\Towners\\Bsmith11.wav", nullptr },// TSFX_SMITH11 - { sfx_STREAM, "Sfx\\Towners\\Bsmith12.wav", nullptr },// TSFX_SMITH12 - { sfx_STREAM, "Sfx\\Towners\\Bsmith13.wav", nullptr },// TSFX_SMITH13 - { sfx_STREAM, "Sfx\\Towners\\Bsmith14.wav", nullptr },// TSFX_SMITH14 - { sfx_STREAM, "Sfx\\Towners\\Bsmith15.wav", nullptr },// TSFX_SMITH15 - { sfx_STREAM, "Sfx\\Towners\\Bsmith16.wav", nullptr },// TSFX_SMITH16 - { sfx_STREAM, "Sfx\\Towners\\Bsmith17.wav", nullptr },// TSFX_SMITH17 - { sfx_STREAM, "Sfx\\Towners\\Bsmith18.wav", nullptr },// TSFX_SMITH18 - { sfx_STREAM, "Sfx\\Towners\\Bsmith19.wav", nullptr },// TSFX_SMITH19 - { sfx_STREAM, "Sfx\\Towners\\Bsmith20.wav", nullptr },// TSFX_SMITH20 - { sfx_STREAM, "Sfx\\Towners\\Bsmith21.wav", nullptr },// TSFX_SMITH21 - { sfx_STREAM, "Sfx\\Towners\\Bsmith22.wav", nullptr },// TSFX_SMITH22 - { sfx_STREAM, "Sfx\\Towners\\Bsmith23.wav", nullptr },// TSFX_SMITH23 - { sfx_STREAM, "Sfx\\Towners\\Bsmith24.wav", nullptr },// TSFX_SMITH24 - { sfx_STREAM, "Sfx\\Towners\\Bsmith25.wav", nullptr },// TSFX_SMITH25 - { sfx_STREAM, "Sfx\\Towners\\Bsmith26.wav", nullptr },// TSFX_SMITH26 - { sfx_STREAM, "Sfx\\Towners\\Bsmith27.wav", nullptr },// TSFX_SMITH27 - { sfx_STREAM, "Sfx\\Towners\\Bsmith28.wav", nullptr },// TSFX_SMITH28 - { sfx_STREAM, "Sfx\\Towners\\Bsmith29.wav", nullptr },// TSFX_SMITH29 - { sfx_STREAM, "Sfx\\Towners\\Bsmith30.wav", nullptr },// TSFX_SMITH30 - { sfx_STREAM, "Sfx\\Towners\\Bsmith31.wav", nullptr },// TSFX_SMITH31 - { sfx_STREAM, "Sfx\\Towners\\Bsmith32.wav", nullptr },// TSFX_SMITH32 - { sfx_STREAM, "Sfx\\Towners\\Bsmith33.wav", nullptr },// TSFX_SMITH33 - { sfx_STREAM, "Sfx\\Towners\\Bsmith34.wav", nullptr },// TSFX_SMITH34 - { sfx_STREAM, "Sfx\\Towners\\Bsmith35.wav", nullptr },// TSFX_SMITH35 - { sfx_STREAM, "Sfx\\Towners\\Bsmith36.wav", nullptr },// TSFX_SMITH36 - { sfx_STREAM, "Sfx\\Towners\\Bsmith37.wav", nullptr },// TSFX_SMITH37 - { sfx_STREAM, "Sfx\\Towners\\Bsmith38.wav", nullptr },// TSFX_SMITH38 - { sfx_STREAM, "Sfx\\Towners\\Bsmith39.wav", nullptr },// TSFX_SMITH39 - { sfx_STREAM, "Sfx\\Towners\\Bsmith40.wav", nullptr },// TSFX_SMITH40 - { sfx_STREAM, "Sfx\\Towners\\Bsmith41.wav", nullptr },// TSFX_SMITH41 - { sfx_STREAM, "Sfx\\Towners\\Bsmith42.wav", nullptr },// TSFX_SMITH42 - { sfx_STREAM, "Sfx\\Towners\\Bsmith43.wav", nullptr },// TSFX_SMITH43 - { sfx_STREAM, "Sfx\\Towners\\Bsmith44.wav", nullptr },// TSFX_SMITH44 - { sfx_STREAM, "Sfx\\Towners\\Bsmith45.wav", nullptr },// TSFX_SMITH45 - { sfx_STREAM, "Sfx\\Towners\\Bsmith46.wav", nullptr },// TSFX_SMITH46 - { sfx_STREAM, "Sfx\\Towners\\Bsmith47.wav", nullptr },// TSFX_SMITH47 - { sfx_STREAM, "Sfx\\Towners\\Bsmith48.wav", nullptr },// TSFX_SMITH48 - { sfx_STREAM, "Sfx\\Towners\\Bsmith49.wav", nullptr },// TSFX_SMITH49 - { sfx_STREAM, "Sfx\\Towners\\Bsmith50.wav", nullptr },// TSFX_SMITH50 - { sfx_STREAM, "Sfx\\Towners\\Bsmith51.wav", nullptr },// TSFX_SMITH51 - { sfx_STREAM, "Sfx\\Towners\\Bsmith52.wav", nullptr },// TSFX_SMITH52 - { sfx_STREAM, "Sfx\\Towners\\Bsmith53.wav", nullptr },// TSFX_SMITH53 - { sfx_STREAM, "Sfx\\Towners\\Bsmith54.wav", nullptr },// TSFX_SMITH54 - { sfx_STREAM, "Sfx\\Towners\\Bsmith55.wav", nullptr },// TSFX_SMITH55 - { sfx_STREAM, "Sfx\\Towners\\Bsmith56.wav", nullptr },// TSFX_SMITH56 - { sfx_MISC, "Sfx\\Towners\\Cow1.wav", nullptr },// TSFX_COW1 - { sfx_MISC, "Sfx\\Towners\\Cow2.wav", nullptr },// TSFX_COW2 + { sfx_MISC, "sfx\\misc\\walk1.wav", nullptr },// PS_WALK1 + { sfx_MISC, "sfx\\misc\\walk2.wav", nullptr },// PS_WALK2 + { sfx_MISC, "sfx\\misc\\walk3.wav", nullptr },// PS_WALK3 + { sfx_MISC, "sfx\\misc\\walk4.wav", nullptr },// PS_WALK4 + { sfx_MISC, "sfx\\misc\\bfire.wav", nullptr },// PS_BFIRE + { sfx_MISC, "sfx\\misc\\fmag.wav", nullptr },// PS_FMAG + { sfx_MISC, "sfx\\misc\\tmag.wav", nullptr },// PS_TMAG + { sfx_MISC, "sfx\\misc\\lghit.wav", nullptr },// PS_LGHIT + { sfx_MISC, "sfx\\misc\\lghit1.wav", nullptr },// PS_LGHIT1 + { sfx_MISC, "sfx\\misc\\swing.wav", nullptr },// PS_SWING + { sfx_MISC, "sfx\\misc\\swing2.wav", nullptr },// PS_SWING2 + { sfx_MISC, "sfx\\misc\\dead.wav", nullptr },// PS_DEAD + { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\sting1.wav", nullptr },// IS_STING1 + { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\fballbow.wav", nullptr },// IS_FBALLBOW + { sfx_STREAM, "sfx\\misc\\questdon.wav", nullptr },// IS_QUESTDN + { sfx_MISC, "sfx\\items\\armrfkd.wav", nullptr },// IS_ARMRFKD + { sfx_MISC, "sfx\\items\\barlfire.wav", nullptr },// IS_BARLFIRE + { sfx_MISC, "sfx\\items\\barrel.wav", nullptr },// IS_BARREL + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\podpop8.wav", nullptr },// IS_POPPOP8 + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\podpop5.wav", nullptr },// IS_POPPOP5 + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\urnpop3.wav", nullptr },// IS_POPPOP3 + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\urnpop2.wav", nullptr },// IS_POPPOP2 + { sfx_MISC, "sfx\\items\\bhit.wav", nullptr },// IS_BHIT + { sfx_MISC, "sfx\\items\\bhit1.wav", nullptr },// IS_BHIT1 + { sfx_MISC, "sfx\\items\\chest.wav", nullptr },// IS_CHEST + { sfx_MISC, "sfx\\items\\doorclos.wav", nullptr },// IS_DOORCLOS + { sfx_MISC, "sfx\\items\\dooropen.wav", nullptr },// IS_DOOROPEN + { sfx_MISC, "sfx\\items\\flipanvl.wav", nullptr },// IS_FANVL + { sfx_MISC, "sfx\\items\\flipaxe.wav", nullptr },// IS_FAXE + { sfx_MISC, "sfx\\items\\flipblst.wav", nullptr },// IS_FBLST + { sfx_MISC, "sfx\\items\\flipbody.wav", nullptr },// IS_FBODY + { sfx_MISC, "sfx\\items\\flipbook.wav", nullptr },// IS_FBOOK + { sfx_MISC, "sfx\\items\\flipbow.wav", nullptr },// IS_FBOW + { sfx_MISC, "sfx\\items\\flipcap.wav", nullptr },// IS_FCAP + { sfx_MISC, "sfx\\items\\flipharm.wav", nullptr },// IS_FHARM + { sfx_MISC, "sfx\\items\\fliplarm.wav", nullptr },// IS_FLARM + { sfx_MISC, "sfx\\items\\flipmag.wav", nullptr },// IS_FMAG + { sfx_MISC, "sfx\\items\\flipmag1.wav", nullptr },// IS_FMAG1 + { sfx_MISC, "sfx\\items\\flipmush.wav", nullptr },// IS_FMUSH + { sfx_MISC, "sfx\\items\\flippot.wav", nullptr },// IS_FPOT + { sfx_MISC, "sfx\\items\\flipring.wav", nullptr },// IS_FRING + { sfx_MISC, "sfx\\items\\fliprock.wav", nullptr },// IS_FROCK + { sfx_MISC, "sfx\\items\\flipscrl.wav", nullptr },// IS_FSCRL + { sfx_MISC, "sfx\\items\\flipshld.wav", nullptr },// IS_FSHLD + { sfx_MISC, "sfx\\items\\flipsign.wav", nullptr },// IS_FSIGN + { sfx_MISC, "sfx\\items\\flipstaf.wav", nullptr },// IS_FSTAF + { sfx_MISC, "sfx\\items\\flipswor.wav", nullptr },// IS_FSWOR + { sfx_MISC, "sfx\\items\\gold.wav", nullptr },// IS_GOLD + { sfx_MISC, "sfx\\items\\hlmtfkd.wav", nullptr },// IS_HLMTFKD + { sfx_MISC, "sfx\\items\\invanvl.wav", nullptr },// IS_IANVL + { sfx_MISC, "sfx\\items\\invaxe.wav", nullptr },// IS_IAXE + { sfx_MISC, "sfx\\items\\invblst.wav", nullptr },// IS_IBLST + { sfx_MISC, "sfx\\items\\invbody.wav", nullptr },// IS_IBODY + { sfx_MISC, "sfx\\items\\invbook.wav", nullptr },// IS_IBOOK + { sfx_MISC, "sfx\\items\\invbow.wav", nullptr },// IS_IBOW + { sfx_MISC, "sfx\\items\\invcap.wav", nullptr },// IS_ICAP + { sfx_MISC, "sfx\\items\\invgrab.wav", nullptr },// IS_IGRAB + { sfx_MISC, "sfx\\items\\invharm.wav", nullptr },// IS_IHARM + { sfx_MISC, "sfx\\items\\invlarm.wav", nullptr },// IS_ILARM + { sfx_MISC, "sfx\\items\\invmush.wav", nullptr },// IS_IMUSH + { sfx_MISC, "sfx\\items\\invpot.wav", nullptr },// IS_IPOT + { sfx_MISC, "sfx\\items\\invring.wav", nullptr },// IS_IRING + { sfx_MISC, "sfx\\items\\invrock.wav", nullptr },// IS_IROCK + { sfx_MISC, "sfx\\items\\invscrol.wav", nullptr },// IS_ISCROL + { sfx_MISC, "sfx\\items\\invshiel.wav", nullptr },// IS_ISHIEL + { sfx_MISC, "sfx\\items\\invsign.wav", nullptr },// IS_ISIGN + { sfx_MISC, "sfx\\items\\invstaf.wav", nullptr },// IS_ISTAF + { sfx_MISC, "sfx\\items\\invsword.wav", nullptr },// IS_ISWORD + { sfx_MISC, "sfx\\items\\lever.wav", nullptr },// IS_LEVER + { sfx_MISC, "sfx\\items\\magic.wav", nullptr },// IS_MAGIC + { sfx_MISC, "sfx\\items\\magic1.wav", nullptr },// IS_MAGIC1 + { sfx_MISC, "sfx\\items\\readbook.wav", nullptr },// IS_RBOOK + { sfx_MISC, "sfx\\items\\sarc.wav", nullptr },// IS_SARC + { sfx_MISC, "sfx\\items\\shielfkd.wav", nullptr },// IS_SHLDFKD + { sfx_MISC, "sfx\\items\\swrdfkd.wav", nullptr },// IS_SWRDFKD + { sfx_UI, "sfx\\items\\titlemov.wav", nullptr },// IS_TITLEMOV + { sfx_UI, "sfx\\items\\titlslct.wav", nullptr },// IS_TITLSLCT + { sfx_UI, "sfx\\misc\\blank.wav", nullptr },// SFX_SILENCE + { sfx_MISC, "sfx\\items\\trap.wav", nullptr },// IS_TRAP + { sfx_MISC, "sfx\\misc\\cast1.wav", nullptr },// IS_CAST1 + { sfx_MISC, "sfx\\misc\\cast10.wav", nullptr },// IS_CAST10 + { sfx_MISC, "sfx\\misc\\cast12.wav", nullptr },// IS_CAST12 + { sfx_MISC, "sfx\\misc\\cast2.wav", nullptr },// IS_CAST2 + { sfx_MISC, "sfx\\misc\\cast3.wav", nullptr },// IS_CAST3 + { sfx_MISC, "sfx\\misc\\cast4.wav", nullptr },// IS_CAST4 + { sfx_MISC, "sfx\\misc\\cast5.wav", nullptr },// IS_CAST5 + { sfx_MISC, "sfx\\misc\\cast6.wav", nullptr },// IS_CAST6 + { sfx_MISC, "sfx\\misc\\cast7.wav", nullptr },// IS_CAST7 + { sfx_MISC, "sfx\\misc\\cast8.wav", nullptr },// IS_CAST8 + { sfx_MISC, "sfx\\misc\\cast9.wav", nullptr },// IS_CAST9 + { sfx_MISC, "sfx\\misc\\healing.wav", nullptr },// LS_HEALING + { sfx_MISC, "sfx\\misc\\repair.wav", nullptr },// IS_REPAIR + { sfx_MISC, "sfx\\misc\\acids1.wav", nullptr },// LS_ACID + { sfx_MISC, "sfx\\misc\\acids2.wav", nullptr },// LS_ACIDS + { sfx_MISC, "sfx\\misc\\apoc.wav", nullptr },// LS_APOC + { sfx_MISC, "sfx\\misc\\arrowall.wav", nullptr },// LS_ARROWALL + { sfx_MISC, "sfx\\misc\\bldboil.wav", nullptr },// LS_BLODBOIL + { sfx_MISC, "sfx\\misc\\blodstar.wav", nullptr },// LS_BLODSTAR + { sfx_MISC, "sfx\\misc\\blsimpt.wav", nullptr },// LS_BLSIMPT + { sfx_MISC, "sfx\\misc\\bonesp.wav", nullptr },// LS_BONESP + { sfx_MISC, "sfx\\misc\\bsimpct.wav", nullptr },// LS_BSIMPCT + { sfx_MISC, "sfx\\misc\\caldron.wav", nullptr },// LS_CALDRON + { sfx_MISC, "sfx\\misc\\cbolt.wav", nullptr },// LS_CBOLT + { sfx_MISC, "sfx\\misc\\chltning.wav", nullptr },// LS_CHLTNING + { sfx_MISC, "sfx\\misc\\dserp.wav", nullptr },// LS_DSERP + { sfx_MISC, "sfx\\misc\\elecimp1.wav", nullptr },// LS_ELECIMP1 + { sfx_MISC, "sfx\\misc\\elementl.wav", nullptr },// LS_ELEMENTL + { sfx_MISC, "sfx\\misc\\ethereal.wav", nullptr },// LS_ETHEREAL + { sfx_MISC, "sfx\\misc\\fball.wav", nullptr },// LS_FBALL + { sfx_MISC, "sfx\\misc\\fbolt1.wav", nullptr },// LS_FBOLT1 + { sfx_MISC, "sfx\\misc\\fbolt2.wav", nullptr },// LS_FBOLT2 + { sfx_MISC, "sfx\\misc\\firimp1.wav", nullptr },// LS_FIRIMP1 + { sfx_MISC, "sfx\\misc\\firimp2.wav", nullptr },// LS_FIRIMP2 + { sfx_MISC, "sfx\\misc\\flamwave.wav", nullptr },// LS_FLAMWAVE + { sfx_MISC, "sfx\\misc\\flash.wav", nullptr },// LS_FLASH + { sfx_MISC, "sfx\\misc\\fountain.wav", nullptr },// LS_FOUNTAIN + { sfx_MISC, "sfx\\misc\\golum.wav", nullptr },// LS_GOLUM + { sfx_MISC, "sfx\\misc\\golumded.wav", nullptr },// LS_GOLUMDED + { sfx_MISC, "sfx\\misc\\gshrine.wav", nullptr },// LS_GSHRINE + { sfx_MISC, "sfx\\misc\\guard.wav", nullptr },// LS_GUARD + { sfx_MISC, "sfx\\misc\\grdlanch.wav", nullptr },// LS_GUARDLAN + { sfx_MISC, "sfx\\misc\\holybolt.wav", nullptr },// LS_HOLYBOLT + { sfx_MISC, "sfx\\misc\\hyper.wav", nullptr },// LS_HYPER + { sfx_MISC, "sfx\\misc\\infravis.wav", nullptr },// LS_INFRAVIS + { sfx_MISC, "sfx\\misc\\invisibl.wav", nullptr },// LS_INVISIBL + { sfx_MISC, "sfx\\misc\\invpot.wav", nullptr },// LS_INVPOT + { sfx_MISC, "sfx\\misc\\lning1.wav", nullptr },// LS_LNING1 + { sfx_MISC, "sfx\\misc\\ltning.wav", nullptr },// LS_LTNING + { sfx_MISC, "sfx\\misc\\mshield.wav", nullptr },// LS_MSHIELD + { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\nestxpld.wav", nullptr },// LS_NESTXPLD + { sfx_MISC, "sfx\\misc\\nova.wav", nullptr },// LS_NOVA + { sfx_MISC, "sfx\\misc\\portal.wav", nullptr },// LS_PORTAL + { sfx_MISC, "sfx\\misc\\puddle.wav", nullptr },// LS_PUDDLE + { sfx_MISC, "sfx\\misc\\resur.wav", nullptr },// LS_RESUR + { sfx_MISC, "sfx\\misc\\scurse.wav", nullptr },// LS_SCURSE + { sfx_MISC, "sfx\\misc\\scurimp.wav", nullptr },// LS_SCURIMP + { sfx_MISC, "sfx\\misc\\sentinel.wav", nullptr },// LS_SENTINEL + { sfx_MISC, "sfx\\misc\\shatter.wav", nullptr },// LS_SHATTER + { sfx_MISC, "sfx\\misc\\soulfire.wav", nullptr },// LS_SOULFIRE + { sfx_MISC, "sfx\\misc\\spoutlop.wav", nullptr },// LS_SPOUTLOP + { sfx_MISC, "sfx\\misc\\spoutstr.wav", nullptr },// LS_SPOUTSTR + { sfx_MISC, "sfx\\misc\\storm.wav", nullptr },// LS_STORM + { sfx_MISC, "sfx\\misc\\trapdis.wav", nullptr },// LS_TRAPDIS + { sfx_MISC, "sfx\\misc\\teleport.wav", nullptr },// LS_TELEPORT + { sfx_MISC, "sfx\\misc\\vtheft.wav", nullptr },// LS_VTHEFT + { sfx_MISC, "sfx\\misc\\wallloop.wav", nullptr },// LS_WALLLOOP + { sfx_MISC, "sfx\\misc\\wallstrt.wav", nullptr },// LS_WALLSTRT + { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\lmag.wav", nullptr },// LS_LMAG + { sfx_STREAM, "sfx\\towners\\bmaid01.wav", nullptr },// TSFX_BMAID1 + { sfx_STREAM, "sfx\\towners\\bmaid02.wav", nullptr },// TSFX_BMAID2 + { sfx_STREAM, "sfx\\towners\\bmaid03.wav", nullptr },// TSFX_BMAID3 + { sfx_STREAM, "sfx\\towners\\bmaid04.wav", nullptr },// TSFX_BMAID4 + { sfx_STREAM, "sfx\\towners\\bmaid05.wav", nullptr },// TSFX_BMAID5 + { sfx_STREAM, "sfx\\towners\\bmaid06.wav", nullptr },// TSFX_BMAID6 + { sfx_STREAM, "sfx\\towners\\bmaid07.wav", nullptr },// TSFX_BMAID7 + { sfx_STREAM, "sfx\\towners\\bmaid08.wav", nullptr },// TSFX_BMAID8 + { sfx_STREAM, "sfx\\towners\\bmaid09.wav", nullptr },// TSFX_BMAID9 + { sfx_STREAM, "sfx\\towners\\bmaid10.wav", nullptr },// TSFX_BMAID10 + { sfx_STREAM, "sfx\\towners\\bmaid11.wav", nullptr },// TSFX_BMAID11 + { sfx_STREAM, "sfx\\towners\\bmaid12.wav", nullptr },// TSFX_BMAID12 + { sfx_STREAM, "sfx\\towners\\bmaid13.wav", nullptr },// TSFX_BMAID13 + { sfx_STREAM, "sfx\\towners\\bmaid14.wav", nullptr },// TSFX_BMAID14 + { sfx_STREAM, "sfx\\towners\\bmaid15.wav", nullptr },// TSFX_BMAID15 + { sfx_STREAM, "sfx\\towners\\bmaid16.wav", nullptr },// TSFX_BMAID16 + { sfx_STREAM, "sfx\\towners\\bmaid17.wav", nullptr },// TSFX_BMAID17 + { sfx_STREAM, "sfx\\towners\\bmaid18.wav", nullptr },// TSFX_BMAID18 + { sfx_STREAM, "sfx\\towners\\bmaid19.wav", nullptr },// TSFX_BMAID19 + { sfx_STREAM, "sfx\\towners\\bmaid20.wav", nullptr },// TSFX_BMAID20 + { sfx_STREAM, "sfx\\towners\\bmaid21.wav", nullptr },// TSFX_BMAID21 + { sfx_STREAM, "sfx\\towners\\bmaid22.wav", nullptr },// TSFX_BMAID22 + { sfx_STREAM, "sfx\\towners\\bmaid23.wav", nullptr },// TSFX_BMAID23 + { sfx_STREAM, "sfx\\towners\\bmaid24.wav", nullptr },// TSFX_BMAID24 + { sfx_STREAM, "sfx\\towners\\bmaid25.wav", nullptr },// TSFX_BMAID25 + { sfx_STREAM, "sfx\\towners\\bmaid26.wav", nullptr },// TSFX_BMAID26 + { sfx_STREAM, "sfx\\towners\\bmaid27.wav", nullptr },// TSFX_BMAID27 + { sfx_STREAM, "sfx\\towners\\bmaid28.wav", nullptr },// TSFX_BMAID28 + { sfx_STREAM, "sfx\\towners\\bmaid29.wav", nullptr },// TSFX_BMAID29 + { sfx_STREAM, "sfx\\towners\\bmaid30.wav", nullptr },// TSFX_BMAID30 + { sfx_STREAM, "sfx\\towners\\bmaid31.wav", nullptr },// TSFX_BMAID31 + { sfx_STREAM, "sfx\\towners\\bmaid32.wav", nullptr },// TSFX_BMAID32 + { sfx_STREAM, "sfx\\towners\\bmaid33.wav", nullptr },// TSFX_BMAID33 + { sfx_STREAM, "sfx\\towners\\bmaid34.wav", nullptr },// TSFX_BMAID34 + { sfx_STREAM, "sfx\\towners\\bmaid35.wav", nullptr },// TSFX_BMAID35 + { sfx_STREAM, "sfx\\towners\\bmaid36.wav", nullptr },// TSFX_BMAID36 + { sfx_STREAM, "sfx\\towners\\bmaid37.wav", nullptr },// TSFX_BMAID37 + { sfx_STREAM, "sfx\\towners\\bmaid38.wav", nullptr },// TSFX_BMAID38 + { sfx_STREAM, "sfx\\towners\\bmaid39.wav", nullptr },// TSFX_BMAID39 + { sfx_STREAM, "sfx\\towners\\bmaid40.wav", nullptr },// TSFX_BMAID40 + { sfx_STREAM, "sfx\\towners\\bsmith01.wav", nullptr },// TSFX_SMITH1 + { sfx_STREAM, "sfx\\towners\\bsmith02.wav", nullptr },// TSFX_SMITH2 + { sfx_STREAM, "sfx\\towners\\bsmith03.wav", nullptr },// TSFX_SMITH3 + { sfx_STREAM, "sfx\\towners\\bsmith04.wav", nullptr },// TSFX_SMITH4 + { sfx_STREAM, "sfx\\towners\\bsmith05.wav", nullptr },// TSFX_SMITH5 + { sfx_STREAM, "sfx\\towners\\bsmith06.wav", nullptr },// TSFX_SMITH6 + { sfx_STREAM, "sfx\\towners\\bsmith07.wav", nullptr },// TSFX_SMITH7 + { sfx_STREAM, "sfx\\towners\\bsmith08.wav", nullptr },// TSFX_SMITH8 + { sfx_STREAM, "sfx\\towners\\bsmith09.wav", nullptr },// TSFX_SMITH9 + { sfx_STREAM, "sfx\\towners\\bsmith10.wav", nullptr },// TSFX_SMITH10 + { sfx_STREAM, "sfx\\towners\\bsmith11.wav", nullptr },// TSFX_SMITH11 + { sfx_STREAM, "sfx\\towners\\bsmith12.wav", nullptr },// TSFX_SMITH12 + { sfx_STREAM, "sfx\\towners\\bsmith13.wav", nullptr },// TSFX_SMITH13 + { sfx_STREAM, "sfx\\towners\\bsmith14.wav", nullptr },// TSFX_SMITH14 + { sfx_STREAM, "sfx\\towners\\bsmith15.wav", nullptr },// TSFX_SMITH15 + { sfx_STREAM, "sfx\\towners\\bsmith16.wav", nullptr },// TSFX_SMITH16 + { sfx_STREAM, "sfx\\towners\\bsmith17.wav", nullptr },// TSFX_SMITH17 + { sfx_STREAM, "sfx\\towners\\bsmith18.wav", nullptr },// TSFX_SMITH18 + { sfx_STREAM, "sfx\\towners\\bsmith19.wav", nullptr },// TSFX_SMITH19 + { sfx_STREAM, "sfx\\towners\\bsmith20.wav", nullptr },// TSFX_SMITH20 + { sfx_STREAM, "sfx\\towners\\bsmith21.wav", nullptr },// TSFX_SMITH21 + { sfx_STREAM, "sfx\\towners\\bsmith22.wav", nullptr },// TSFX_SMITH22 + { sfx_STREAM, "sfx\\towners\\bsmith23.wav", nullptr },// TSFX_SMITH23 + { sfx_STREAM, "sfx\\towners\\bsmith24.wav", nullptr },// TSFX_SMITH24 + { sfx_STREAM, "sfx\\towners\\bsmith25.wav", nullptr },// TSFX_SMITH25 + { sfx_STREAM, "sfx\\towners\\bsmith26.wav", nullptr },// TSFX_SMITH26 + { sfx_STREAM, "sfx\\towners\\bsmith27.wav", nullptr },// TSFX_SMITH27 + { sfx_STREAM, "sfx\\towners\\bsmith28.wav", nullptr },// TSFX_SMITH28 + { sfx_STREAM, "sfx\\towners\\bsmith29.wav", nullptr },// TSFX_SMITH29 + { sfx_STREAM, "sfx\\towners\\bsmith30.wav", nullptr },// TSFX_SMITH30 + { sfx_STREAM, "sfx\\towners\\bsmith31.wav", nullptr },// TSFX_SMITH31 + { sfx_STREAM, "sfx\\towners\\bsmith32.wav", nullptr },// TSFX_SMITH32 + { sfx_STREAM, "sfx\\towners\\bsmith33.wav", nullptr },// TSFX_SMITH33 + { sfx_STREAM, "sfx\\towners\\bsmith34.wav", nullptr },// TSFX_SMITH34 + { sfx_STREAM, "sfx\\towners\\bsmith35.wav", nullptr },// TSFX_SMITH35 + { sfx_STREAM, "sfx\\towners\\bsmith36.wav", nullptr },// TSFX_SMITH36 + { sfx_STREAM, "sfx\\towners\\bsmith37.wav", nullptr },// TSFX_SMITH37 + { sfx_STREAM, "sfx\\towners\\bsmith38.wav", nullptr },// TSFX_SMITH38 + { sfx_STREAM, "sfx\\towners\\bsmith39.wav", nullptr },// TSFX_SMITH39 + { sfx_STREAM, "sfx\\towners\\bsmith40.wav", nullptr },// TSFX_SMITH40 + { sfx_STREAM, "sfx\\towners\\bsmith41.wav", nullptr },// TSFX_SMITH41 + { sfx_STREAM, "sfx\\towners\\bsmith42.wav", nullptr },// TSFX_SMITH42 + { sfx_STREAM, "sfx\\towners\\bsmith43.wav", nullptr },// TSFX_SMITH43 + { sfx_STREAM, "sfx\\towners\\bsmith44.wav", nullptr },// TSFX_SMITH44 + { sfx_STREAM, "sfx\\towners\\bsmith45.wav", nullptr },// TSFX_SMITH45 + { sfx_STREAM, "sfx\\towners\\bsmith46.wav", nullptr },// TSFX_SMITH46 + { sfx_STREAM, "sfx\\towners\\bsmith47.wav", nullptr },// TSFX_SMITH47 + { sfx_STREAM, "sfx\\towners\\bsmith48.wav", nullptr },// TSFX_SMITH48 + { sfx_STREAM, "sfx\\towners\\bsmith49.wav", nullptr },// TSFX_SMITH49 + { sfx_STREAM, "sfx\\towners\\bsmith50.wav", nullptr },// TSFX_SMITH50 + { sfx_STREAM, "sfx\\towners\\bsmith51.wav", nullptr },// TSFX_SMITH51 + { sfx_STREAM, "sfx\\towners\\bsmith52.wav", nullptr },// TSFX_SMITH52 + { sfx_STREAM, "sfx\\towners\\bsmith53.wav", nullptr },// TSFX_SMITH53 + { sfx_STREAM, "sfx\\towners\\bsmith54.wav", nullptr },// TSFX_SMITH54 + { sfx_STREAM, "sfx\\towners\\bsmith55.wav", nullptr },// TSFX_SMITH55 + { sfx_STREAM, "sfx\\towners\\bsmith56.wav", nullptr },// TSFX_SMITH56 + { sfx_MISC, "sfx\\towners\\cow1.wav", nullptr },// TSFX_COW1 + { sfx_MISC, "sfx\\towners\\cow2.wav", nullptr },// TSFX_COW2 /* - { sfx_MISC, "Sfx\\Towners\\Cow3.wav", nullptr },// TSFX_COW3 - { sfx_MISC, "Sfx\\Towners\\Cow4.wav", nullptr },// TSFX_COW4 - { sfx_MISC, "Sfx\\Towners\\Cow5.wav", nullptr },// TSFX_COW5 - { sfx_MISC, "Sfx\\Towners\\Cow6.wav", nullptr },// TSFX_COW6 + { sfx_MISC, "sfx\\towners\\cow3.wav", nullptr },// TSFX_COW3 + { sfx_MISC, "sfx\\towners\\cow4.wav", nullptr },// TSFX_COW4 + { sfx_MISC, "sfx\\towners\\cow5.wav", nullptr },// TSFX_COW5 + { sfx_MISC, "sfx\\towners\\cow6.wav", nullptr },// TSFX_COW6 */ - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Towners\\Cow7.wav", nullptr },// TSFX_COW7 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Towners\\Cow8.wav", nullptr },// TSFX_COW8 - { sfx_STREAM, "Sfx\\Towners\\Deadguy2.wav", nullptr },// TSFX_DEADGUY - { sfx_STREAM, "Sfx\\Towners\\Drunk01.wav", nullptr },// TSFX_DRUNK1 - { sfx_STREAM, "Sfx\\Towners\\Drunk02.wav", nullptr },// TSFX_DRUNK2 - { sfx_STREAM, "Sfx\\Towners\\Drunk03.wav", nullptr },// TSFX_DRUNK3 - { sfx_STREAM, "Sfx\\Towners\\Drunk04.wav", nullptr },// TSFX_DRUNK4 - { sfx_STREAM, "Sfx\\Towners\\Drunk05.wav", nullptr },// TSFX_DRUNK5 - { sfx_STREAM, "Sfx\\Towners\\Drunk06.wav", nullptr },// TSFX_DRUNK6 - { sfx_STREAM, "Sfx\\Towners\\Drunk07.wav", nullptr },// TSFX_DRUNK7 - { sfx_STREAM, "Sfx\\Towners\\Drunk08.wav", nullptr },// TSFX_DRUNK8 - { sfx_STREAM, "Sfx\\Towners\\Drunk09.wav", nullptr },// TSFX_DRUNK9 - { sfx_STREAM, "Sfx\\Towners\\Drunk10.wav", nullptr },// TSFX_DRUNK10 - { sfx_STREAM, "Sfx\\Towners\\Drunk11.wav", nullptr },// TSFX_DRUNK11 - { sfx_STREAM, "Sfx\\Towners\\Drunk12.wav", nullptr },// TSFX_DRUNK12 - { sfx_STREAM, "Sfx\\Towners\\Drunk13.wav", nullptr },// TSFX_DRUNK13 - { sfx_STREAM, "Sfx\\Towners\\Drunk14.wav", nullptr },// TSFX_DRUNK14 - { sfx_STREAM, "Sfx\\Towners\\Drunk15.wav", nullptr },// TSFX_DRUNK15 - { sfx_STREAM, "Sfx\\Towners\\Drunk16.wav", nullptr },// TSFX_DRUNK16 - { sfx_STREAM, "Sfx\\Towners\\Drunk17.wav", nullptr },// TSFX_DRUNK17 - { sfx_STREAM, "Sfx\\Towners\\Drunk18.wav", nullptr },// TSFX_DRUNK18 - { sfx_STREAM, "Sfx\\Towners\\Drunk19.wav", nullptr },// TSFX_DRUNK19 - { sfx_STREAM, "Sfx\\Towners\\Drunk20.wav", nullptr },// TSFX_DRUNK20 - { sfx_STREAM, "Sfx\\Towners\\Drunk21.wav", nullptr },// TSFX_DRUNK21 - { sfx_STREAM, "Sfx\\Towners\\Drunk22.wav", nullptr },// TSFX_DRUNK22 - { sfx_STREAM, "Sfx\\Towners\\Drunk23.wav", nullptr },// TSFX_DRUNK23 - { sfx_STREAM, "Sfx\\Towners\\Drunk24.wav", nullptr },// TSFX_DRUNK24 - { sfx_STREAM, "Sfx\\Towners\\Drunk25.wav", nullptr },// TSFX_DRUNK25 - { sfx_STREAM, "Sfx\\Towners\\Drunk26.wav", nullptr },// TSFX_DRUNK26 - { sfx_STREAM, "Sfx\\Towners\\Drunk27.wav", nullptr },// TSFX_DRUNK27 - { sfx_STREAM, "Sfx\\Towners\\Drunk28.wav", nullptr },// TSFX_DRUNK28 - { sfx_STREAM, "Sfx\\Towners\\Drunk29.wav", nullptr },// TSFX_DRUNK29 - { sfx_STREAM, "Sfx\\Towners\\Drunk30.wav", nullptr },// TSFX_DRUNK30 - { sfx_STREAM, "Sfx\\Towners\\Drunk31.wav", nullptr },// TSFX_DRUNK31 - { sfx_STREAM, "Sfx\\Towners\\Drunk32.wav", nullptr },// TSFX_DRUNK32 - { sfx_STREAM, "Sfx\\Towners\\Drunk33.wav", nullptr },// TSFX_DRUNK33 - { sfx_STREAM, "Sfx\\Towners\\Drunk34.wav", nullptr },// TSFX_DRUNK34 - { sfx_STREAM, "Sfx\\Towners\\Drunk35.wav", nullptr },// TSFX_DRUNK35 - { sfx_STREAM, "Sfx\\Towners\\Healer01.wav", nullptr },// TSFX_HEALER1 - { sfx_STREAM, "Sfx\\Towners\\Healer02.wav", nullptr },// TSFX_HEALER2 - { sfx_STREAM, "Sfx\\Towners\\Healer03.wav", nullptr },// TSFX_HEALER3 - { sfx_STREAM, "Sfx\\Towners\\Healer04.wav", nullptr },// TSFX_HEALER4 - { sfx_STREAM, "Sfx\\Towners\\Healer05.wav", nullptr },// TSFX_HEALER5 - { sfx_STREAM, "Sfx\\Towners\\Healer06.wav", nullptr },// TSFX_HEALER6 - { sfx_STREAM, "Sfx\\Towners\\Healer07.wav", nullptr },// TSFX_HEALER7 - { sfx_STREAM, "Sfx\\Towners\\Healer08.wav", nullptr },// TSFX_HEALER8 - { sfx_STREAM, "Sfx\\Towners\\Healer09.wav", nullptr },// TSFX_HEALER9 - { sfx_STREAM, "Sfx\\Towners\\Healer10.wav", nullptr },// TSFX_HEALER10 - { sfx_STREAM, "Sfx\\Towners\\Healer11.wav", nullptr },// TSFX_HEALER11 - { sfx_STREAM, "Sfx\\Towners\\Healer12.wav", nullptr },// TSFX_HEALER12 - { sfx_STREAM, "Sfx\\Towners\\Healer13.wav", nullptr },// TSFX_HEALER13 - { sfx_STREAM, "Sfx\\Towners\\Healer14.wav", nullptr },// TSFX_HEALER14 - { sfx_STREAM, "Sfx\\Towners\\Healer15.wav", nullptr },// TSFX_HEALER15 - { sfx_STREAM, "Sfx\\Towners\\Healer16.wav", nullptr },// TSFX_HEALER16 - { sfx_STREAM, "Sfx\\Towners\\Healer17.wav", nullptr },// TSFX_HEALER17 - { sfx_STREAM, "Sfx\\Towners\\Healer18.wav", nullptr },// TSFX_HEALER18 - { sfx_STREAM, "Sfx\\Towners\\Healer19.wav", nullptr },// TSFX_HEALER19 - { sfx_STREAM, "Sfx\\Towners\\Healer20.wav", nullptr },// TSFX_HEALER20 - { sfx_STREAM, "Sfx\\Towners\\Healer21.wav", nullptr },// TSFX_HEALER21 - { sfx_STREAM, "Sfx\\Towners\\Healer22.wav", nullptr },// TSFX_HEALER22 - { sfx_STREAM, "Sfx\\Towners\\Healer23.wav", nullptr },// TSFX_HEALER23 - { sfx_STREAM, "Sfx\\Towners\\Healer24.wav", nullptr },// TSFX_HEALER24 - { sfx_STREAM, "Sfx\\Towners\\Healer25.wav", nullptr },// TSFX_HEALER25 - { sfx_STREAM, "Sfx\\Towners\\Healer26.wav", nullptr },// TSFX_HEALER26 - { sfx_STREAM, "Sfx\\Towners\\Healer27.wav", nullptr },// TSFX_HEALER27 - { sfx_STREAM, "Sfx\\Towners\\Healer28.wav", nullptr },// TSFX_HEALER28 - { sfx_STREAM, "Sfx\\Towners\\Healer29.wav", nullptr },// TSFX_HEALER29 - { sfx_STREAM, "Sfx\\Towners\\Healer30.wav", nullptr },// TSFX_HEALER30 - { sfx_STREAM, "Sfx\\Towners\\Healer31.wav", nullptr },// TSFX_HEALER31 - { sfx_STREAM, "Sfx\\Towners\\Healer32.wav", nullptr },// TSFX_HEALER32 - { sfx_STREAM, "Sfx\\Towners\\Healer33.wav", nullptr },// TSFX_HEALER33 - { sfx_STREAM, "Sfx\\Towners\\Healer34.wav", nullptr },// TSFX_HEALER34 - { sfx_STREAM, "Sfx\\Towners\\Healer35.wav", nullptr },// TSFX_HEALER35 - { sfx_STREAM, "Sfx\\Towners\\Healer36.wav", nullptr },// TSFX_HEALER36 - { sfx_STREAM, "Sfx\\Towners\\Healer37.wav", nullptr },// TSFX_HEALER37 - { sfx_STREAM, "Sfx\\Towners\\Healer38.wav", nullptr },// TSFX_HEALER38 - { sfx_STREAM, "Sfx\\Towners\\Healer39.wav", nullptr },// TSFX_HEALER39 - { sfx_STREAM, "Sfx\\Towners\\Healer40.wav", nullptr },// TSFX_HEALER40 - { sfx_STREAM, "Sfx\\Towners\\Healer41.wav", nullptr },// TSFX_HEALER41 - { sfx_STREAM, "Sfx\\Towners\\Healer42.wav", nullptr },// TSFX_HEALER42 - { sfx_STREAM, "Sfx\\Towners\\Healer43.wav", nullptr },// TSFX_HEALER43 - { sfx_STREAM, "Sfx\\Towners\\Healer44.wav", nullptr },// TSFX_HEALER44 - { sfx_STREAM, "Sfx\\Towners\\Healer45.wav", nullptr },// TSFX_HEALER45 - { sfx_STREAM, "Sfx\\Towners\\Healer46.wav", nullptr },// TSFX_HEALER46 - { sfx_STREAM, "Sfx\\Towners\\Healer47.wav", nullptr },// TSFX_HEALER47 - { sfx_STREAM, "Sfx\\Towners\\Pegboy01.wav", nullptr },// TSFX_PEGBOY1 - { sfx_STREAM, "Sfx\\Towners\\Pegboy02.wav", nullptr },// TSFX_PEGBOY2 - { sfx_STREAM, "Sfx\\Towners\\Pegboy03.wav", nullptr },// TSFX_PEGBOY3 - { sfx_STREAM, "Sfx\\Towners\\Pegboy04.wav", nullptr },// TSFX_PEGBOY4 - { sfx_STREAM, "Sfx\\Towners\\Pegboy05.wav", nullptr },// TSFX_PEGBOY5 - { sfx_STREAM, "Sfx\\Towners\\Pegboy06.wav", nullptr },// TSFX_PEGBOY6 - { sfx_STREAM, "Sfx\\Towners\\Pegboy07.wav", nullptr },// TSFX_PEGBOY7 - { sfx_STREAM, "Sfx\\Towners\\Pegboy08.wav", nullptr },// TSFX_PEGBOY8 - { sfx_STREAM, "Sfx\\Towners\\Pegboy09.wav", nullptr },// TSFX_PEGBOY9 - { sfx_STREAM, "Sfx\\Towners\\Pegboy10.wav", nullptr },// TSFX_PEGBOY10 - { sfx_STREAM, "Sfx\\Towners\\Pegboy11.wav", nullptr },// TSFX_PEGBOY11 - { sfx_STREAM, "Sfx\\Towners\\Pegboy12.wav", nullptr },// TSFX_PEGBOY12 - { sfx_STREAM, "Sfx\\Towners\\Pegboy13.wav", nullptr },// TSFX_PEGBOY13 - { sfx_STREAM, "Sfx\\Towners\\Pegboy14.wav", nullptr },// TSFX_PEGBOY14 - { sfx_STREAM, "Sfx\\Towners\\Pegboy15.wav", nullptr },// TSFX_PEGBOY15 - { sfx_STREAM, "Sfx\\Towners\\Pegboy16.wav", nullptr },// TSFX_PEGBOY16 - { sfx_STREAM, "Sfx\\Towners\\Pegboy17.wav", nullptr },// TSFX_PEGBOY17 - { sfx_STREAM, "Sfx\\Towners\\Pegboy18.wav", nullptr },// TSFX_PEGBOY18 - { sfx_STREAM, "Sfx\\Towners\\Pegboy19.wav", nullptr },// TSFX_PEGBOY19 - { sfx_STREAM, "Sfx\\Towners\\Pegboy20.wav", nullptr },// TSFX_PEGBOY20 - { sfx_STREAM, "Sfx\\Towners\\Pegboy21.wav", nullptr },// TSFX_PEGBOY21 - { sfx_STREAM, "Sfx\\Towners\\Pegboy22.wav", nullptr },// TSFX_PEGBOY22 - { sfx_STREAM, "Sfx\\Towners\\Pegboy23.wav", nullptr },// TSFX_PEGBOY23 - { sfx_STREAM, "Sfx\\Towners\\Pegboy24.wav", nullptr },// TSFX_PEGBOY24 - { sfx_STREAM, "Sfx\\Towners\\Pegboy25.wav", nullptr },// TSFX_PEGBOY25 - { sfx_STREAM, "Sfx\\Towners\\Pegboy26.wav", nullptr },// TSFX_PEGBOY26 - { sfx_STREAM, "Sfx\\Towners\\Pegboy27.wav", nullptr },// TSFX_PEGBOY27 - { sfx_STREAM, "Sfx\\Towners\\Pegboy28.wav", nullptr },// TSFX_PEGBOY28 - { sfx_STREAM, "Sfx\\Towners\\Pegboy29.wav", nullptr },// TSFX_PEGBOY29 - { sfx_STREAM, "Sfx\\Towners\\Pegboy30.wav", nullptr },// TSFX_PEGBOY30 - { sfx_STREAM, "Sfx\\Towners\\Pegboy31.wav", nullptr },// TSFX_PEGBOY31 - { sfx_STREAM, "Sfx\\Towners\\Pegboy32.wav", nullptr },// TSFX_PEGBOY32 - { sfx_STREAM, "Sfx\\Towners\\Pegboy33.wav", nullptr },// TSFX_PEGBOY33 - { sfx_STREAM, "Sfx\\Towners\\Pegboy34.wav", nullptr },// TSFX_PEGBOY34 - { sfx_STREAM, "Sfx\\Towners\\Pegboy35.wav", nullptr },// TSFX_PEGBOY35 - { sfx_STREAM, "Sfx\\Towners\\Pegboy36.wav", nullptr },// TSFX_PEGBOY36 - { sfx_STREAM, "Sfx\\Towners\\Pegboy37.wav", nullptr },// TSFX_PEGBOY37 - { sfx_STREAM, "Sfx\\Towners\\Pegboy38.wav", nullptr },// TSFX_PEGBOY38 - { sfx_STREAM, "Sfx\\Towners\\Pegboy39.wav", nullptr },// TSFX_PEGBOY39 - { sfx_STREAM, "Sfx\\Towners\\Pegboy40.wav", nullptr },// TSFX_PEGBOY40 - { sfx_STREAM, "Sfx\\Towners\\Pegboy41.wav", nullptr },// TSFX_PEGBOY41 - { sfx_STREAM, "Sfx\\Towners\\Pegboy42.wav", nullptr },// TSFX_PEGBOY42 - { sfx_STREAM, "Sfx\\Towners\\Pegboy43.wav", nullptr },// TSFX_PEGBOY43 - { sfx_STREAM, "Sfx\\Towners\\Priest00.wav", nullptr },// TSFX_PRIEST0 - { sfx_STREAM, "Sfx\\Towners\\Priest01.wav", nullptr },// TSFX_PRIEST1 - { sfx_STREAM, "Sfx\\Towners\\Priest02.wav", nullptr },// TSFX_PRIEST2 - { sfx_STREAM, "Sfx\\Towners\\Priest03.wav", nullptr },// TSFX_PRIEST3 - { sfx_STREAM, "Sfx\\Towners\\Priest04.wav", nullptr },// TSFX_PRIEST4 - { sfx_STREAM, "Sfx\\Towners\\Priest05.wav", nullptr },// TSFX_PRIEST5 - { sfx_STREAM, "Sfx\\Towners\\Priest06.wav", nullptr },// TSFX_PRIEST6 - { sfx_STREAM, "Sfx\\Towners\\Priest07.wav", nullptr },// TSFX_PRIEST7 - { sfx_STREAM, "Sfx\\Towners\\Storyt00.wav", nullptr },// TSFX_STORY0 - { sfx_STREAM, "Sfx\\Towners\\Storyt01.wav", nullptr },// TSFX_STORY1 - { sfx_STREAM, "Sfx\\Towners\\Storyt02.wav", nullptr },// TSFX_STORY2 - { sfx_STREAM, "Sfx\\Towners\\Storyt03.wav", nullptr },// TSFX_STORY3 - { sfx_STREAM, "Sfx\\Towners\\Storyt04.wav", nullptr },// TSFX_STORY4 - { sfx_STREAM, "Sfx\\Towners\\Storyt05.wav", nullptr },// TSFX_STORY5 - { sfx_STREAM, "Sfx\\Towners\\Storyt06.wav", nullptr },// TSFX_STORY6 - { sfx_STREAM, "Sfx\\Towners\\Storyt07.wav", nullptr },// TSFX_STORY7 - { sfx_STREAM, "Sfx\\Towners\\Storyt08.wav", nullptr },// TSFX_STORY8 - { sfx_STREAM, "Sfx\\Towners\\Storyt09.wav", nullptr },// TSFX_STORY9 - { sfx_STREAM, "Sfx\\Towners\\Storyt10.wav", nullptr },// TSFX_STORY10 - { sfx_STREAM, "Sfx\\Towners\\Storyt11.wav", nullptr },// TSFX_STORY11 - { sfx_STREAM, "Sfx\\Towners\\Storyt12.wav", nullptr },// TSFX_STORY12 - { sfx_STREAM, "Sfx\\Towners\\Storyt13.wav", nullptr },// TSFX_STORY13 - { sfx_STREAM, "Sfx\\Towners\\Storyt14.wav", nullptr },// TSFX_STORY14 - { sfx_STREAM, "Sfx\\Towners\\Storyt15.wav", nullptr },// TSFX_STORY15 - { sfx_STREAM, "Sfx\\Towners\\Storyt16.wav", nullptr },// TSFX_STORY16 - { sfx_STREAM, "Sfx\\Towners\\Storyt17.wav", nullptr },// TSFX_STORY17 - { sfx_STREAM, "Sfx\\Towners\\Storyt18.wav", nullptr },// TSFX_STORY18 - { sfx_STREAM, "Sfx\\Towners\\Storyt19.wav", nullptr },// TSFX_STORY19 - { sfx_STREAM, "Sfx\\Towners\\Storyt20.wav", nullptr },// TSFX_STORY20 - { sfx_STREAM, "Sfx\\Towners\\Storyt21.wav", nullptr },// TSFX_STORY21 - { sfx_STREAM, "Sfx\\Towners\\Storyt22.wav", nullptr },// TSFX_STORY22 - { sfx_STREAM, "Sfx\\Towners\\Storyt23.wav", nullptr },// TSFX_STORY23 - { sfx_STREAM, "Sfx\\Towners\\Storyt24.wav", nullptr },// TSFX_STORY24 - { sfx_STREAM, "Sfx\\Towners\\Storyt25.wav", nullptr },// TSFX_STORY25 - { sfx_STREAM, "Sfx\\Towners\\Storyt26.wav", nullptr },// TSFX_STORY26 - { sfx_STREAM, "Sfx\\Towners\\Storyt27.wav", nullptr },// TSFX_STORY27 - { sfx_STREAM, "Sfx\\Towners\\Storyt28.wav", nullptr },// TSFX_STORY28 - { sfx_STREAM, "Sfx\\Towners\\Storyt29.wav", nullptr },// TSFX_STORY29 - { sfx_STREAM, "Sfx\\Towners\\Storyt30.wav", nullptr },// TSFX_STORY30 - { sfx_STREAM, "Sfx\\Towners\\Storyt31.wav", nullptr },// TSFX_STORY31 - { sfx_STREAM, "Sfx\\Towners\\Storyt32.wav", nullptr },// TSFX_STORY32 - { sfx_STREAM, "Sfx\\Towners\\Storyt33.wav", nullptr },// TSFX_STORY33 - { sfx_STREAM, "Sfx\\Towners\\Storyt34.wav", nullptr },// TSFX_STORY34 - { sfx_STREAM, "Sfx\\Towners\\Storyt35.wav", nullptr },// TSFX_STORY35 - { sfx_STREAM, "Sfx\\Towners\\Storyt36.wav", nullptr },// TSFX_STORY36 - { sfx_STREAM, "Sfx\\Towners\\Storyt37.wav", nullptr },// TSFX_STORY37 - { sfx_STREAM, "Sfx\\Towners\\Storyt38.wav", nullptr },// TSFX_STORY38 - { sfx_STREAM, "Sfx\\Towners\\Tavown00.wav", nullptr },// TSFX_TAVERN0 - { sfx_STREAM, "Sfx\\Towners\\Tavown01.wav", nullptr },// TSFX_TAVERN1 - { sfx_STREAM, "Sfx\\Towners\\Tavown02.wav", nullptr },// TSFX_TAVERN2 - { sfx_STREAM, "Sfx\\Towners\\Tavown03.wav", nullptr },// TSFX_TAVERN3 - { sfx_STREAM, "Sfx\\Towners\\Tavown04.wav", nullptr },// TSFX_TAVERN4 - { sfx_STREAM, "Sfx\\Towners\\Tavown05.wav", nullptr },// TSFX_TAVERN5 - { sfx_STREAM, "Sfx\\Towners\\Tavown06.wav", nullptr },// TSFX_TAVERN6 - { sfx_STREAM, "Sfx\\Towners\\Tavown07.wav", nullptr },// TSFX_TAVERN7 - { sfx_STREAM, "Sfx\\Towners\\Tavown08.wav", nullptr },// TSFX_TAVERN8 - { sfx_STREAM, "Sfx\\Towners\\Tavown09.wav", nullptr },// TSFX_TAVERN9 - { sfx_STREAM, "Sfx\\Towners\\Tavown10.wav", nullptr },// TSFX_TAVERN10 - { sfx_STREAM, "Sfx\\Towners\\Tavown11.wav", nullptr },// TSFX_TAVERN11 - { sfx_STREAM, "Sfx\\Towners\\Tavown12.wav", nullptr },// TSFX_TAVERN12 - { sfx_STREAM, "Sfx\\Towners\\Tavown13.wav", nullptr },// TSFX_TAVERN13 - { sfx_STREAM, "Sfx\\Towners\\Tavown14.wav", nullptr },// TSFX_TAVERN14 - { sfx_STREAM, "Sfx\\Towners\\Tavown15.wav", nullptr },// TSFX_TAVERN15 - { sfx_STREAM, "Sfx\\Towners\\Tavown16.wav", nullptr },// TSFX_TAVERN16 - { sfx_STREAM, "Sfx\\Towners\\Tavown17.wav", nullptr },// TSFX_TAVERN17 - { sfx_STREAM, "Sfx\\Towners\\Tavown18.wav", nullptr },// TSFX_TAVERN18 - { sfx_STREAM, "Sfx\\Towners\\Tavown19.wav", nullptr },// TSFX_TAVERN19 - { sfx_STREAM, "Sfx\\Towners\\Tavown20.wav", nullptr },// TSFX_TAVERN20 - { sfx_STREAM, "Sfx\\Towners\\Tavown21.wav", nullptr },// TSFX_TAVERN21 - { sfx_STREAM, "Sfx\\Towners\\Tavown22.wav", nullptr },// TSFX_TAVERN22 - { sfx_STREAM, "Sfx\\Towners\\Tavown23.wav", nullptr },// TSFX_TAVERN23 - { sfx_STREAM, "Sfx\\Towners\\Tavown24.wav", nullptr },// TSFX_TAVERN24 - { sfx_STREAM, "Sfx\\Towners\\Tavown25.wav", nullptr },// TSFX_TAVERN25 - { sfx_STREAM, "Sfx\\Towners\\Tavown26.wav", nullptr },// TSFX_TAVERN26 - { sfx_STREAM, "Sfx\\Towners\\Tavown27.wav", nullptr },// TSFX_TAVERN27 - { sfx_STREAM, "Sfx\\Towners\\Tavown28.wav", nullptr },// TSFX_TAVERN28 - { sfx_STREAM, "Sfx\\Towners\\Tavown29.wav", nullptr },// TSFX_TAVERN29 - { sfx_STREAM, "Sfx\\Towners\\Tavown30.wav", nullptr },// TSFX_TAVERN30 - { sfx_STREAM, "Sfx\\Towners\\Tavown31.wav", nullptr },// TSFX_TAVERN31 - { sfx_STREAM, "Sfx\\Towners\\Tavown32.wav", nullptr },// TSFX_TAVERN32 - { sfx_STREAM, "Sfx\\Towners\\Tavown33.wav", nullptr },// TSFX_TAVERN33 - { sfx_STREAM, "Sfx\\Towners\\Tavown34.wav", nullptr },// TSFX_TAVERN34 - { sfx_STREAM, "Sfx\\Towners\\Tavown35.wav", nullptr },// TSFX_TAVERN35 - { sfx_STREAM, "Sfx\\Towners\\Tavown36.wav", nullptr },// TSFX_TAVERN36 - { sfx_STREAM, "Sfx\\Towners\\Tavown37.wav", nullptr },// TSFX_TAVERN37 - { sfx_STREAM, "Sfx\\Towners\\Tavown38.wav", nullptr },// TSFX_TAVERN38 - { sfx_STREAM, "Sfx\\Towners\\Tavown39.wav", nullptr },// TSFX_TAVERN39 - { sfx_STREAM, "Sfx\\Towners\\Tavown40.wav", nullptr },// TSFX_TAVERN40 - { sfx_STREAM, "Sfx\\Towners\\Tavown41.wav", nullptr },// TSFX_TAVERN41 - { sfx_STREAM, "Sfx\\Towners\\Tavown42.wav", nullptr },// TSFX_TAVERN42 - { sfx_STREAM, "Sfx\\Towners\\Tavown43.wav", nullptr },// TSFX_TAVERN43 - { sfx_STREAM, "Sfx\\Towners\\Tavown44.wav", nullptr },// TSFX_TAVERN44 - { sfx_STREAM, "Sfx\\Towners\\Tavown45.wav", nullptr },// TSFX_TAVERN45 - { sfx_STREAM, "Sfx\\Towners\\Witch01.wav", nullptr },// TSFX_WITCH1 - { sfx_STREAM, "Sfx\\Towners\\Witch02.wav", nullptr },// TSFX_WITCH2 - { sfx_STREAM, "Sfx\\Towners\\Witch03.wav", nullptr },// TSFX_WITCH3 - { sfx_STREAM, "Sfx\\Towners\\Witch04.wav", nullptr },// TSFX_WITCH4 - { sfx_STREAM, "Sfx\\Towners\\Witch05.wav", nullptr },// TSFX_WITCH5 - { sfx_STREAM, "Sfx\\Towners\\Witch06.wav", nullptr },// TSFX_WITCH6 - { sfx_STREAM, "Sfx\\Towners\\Witch07.wav", nullptr },// TSFX_WITCH7 - { sfx_STREAM, "Sfx\\Towners\\Witch08.wav", nullptr },// TSFX_WITCH8 - { sfx_STREAM, "Sfx\\Towners\\Witch09.wav", nullptr },// TSFX_WITCH9 - { sfx_STREAM, "Sfx\\Towners\\Witch10.wav", nullptr },// TSFX_WITCH10 - { sfx_STREAM, "Sfx\\Towners\\Witch11.wav", nullptr },// TSFX_WITCH11 - { sfx_STREAM, "Sfx\\Towners\\Witch12.wav", nullptr },// TSFX_WITCH12 - { sfx_STREAM, "Sfx\\Towners\\Witch13.wav", nullptr },// TSFX_WITCH13 - { sfx_STREAM, "Sfx\\Towners\\Witch14.wav", nullptr },// TSFX_WITCH14 - { sfx_STREAM, "Sfx\\Towners\\Witch15.wav", nullptr },// TSFX_WITCH15 - { sfx_STREAM, "Sfx\\Towners\\Witch16.wav", nullptr },// TSFX_WITCH16 - { sfx_STREAM, "Sfx\\Towners\\Witch17.wav", nullptr },// TSFX_WITCH17 - { sfx_STREAM, "Sfx\\Towners\\Witch18.wav", nullptr },// TSFX_WITCH18 - { sfx_STREAM, "Sfx\\Towners\\Witch19.wav", nullptr },// TSFX_WITCH19 - { sfx_STREAM, "Sfx\\Towners\\Witch20.wav", nullptr },// TSFX_WITCH20 - { sfx_STREAM, "Sfx\\Towners\\Witch21.wav", nullptr },// TSFX_WITCH21 - { sfx_STREAM, "Sfx\\Towners\\Witch22.wav", nullptr },// TSFX_WITCH22 - { sfx_STREAM, "Sfx\\Towners\\Witch23.wav", nullptr },// TSFX_WITCH23 - { sfx_STREAM, "Sfx\\Towners\\Witch24.wav", nullptr },// TSFX_WITCH24 - { sfx_STREAM, "Sfx\\Towners\\Witch25.wav", nullptr },// TSFX_WITCH25 - { sfx_STREAM, "Sfx\\Towners\\Witch26.wav", nullptr },// TSFX_WITCH26 - { sfx_STREAM, "Sfx\\Towners\\Witch27.wav", nullptr },// TSFX_WITCH27 - { sfx_STREAM, "Sfx\\Towners\\Witch28.wav", nullptr },// TSFX_WITCH28 - { sfx_STREAM, "Sfx\\Towners\\Witch29.wav", nullptr },// TSFX_WITCH29 - { sfx_STREAM, "Sfx\\Towners\\Witch30.wav", nullptr },// TSFX_WITCH30 - { sfx_STREAM, "Sfx\\Towners\\Witch31.wav", nullptr },// TSFX_WITCH31 - { sfx_STREAM, "Sfx\\Towners\\Witch32.wav", nullptr },// TSFX_WITCH32 - { sfx_STREAM, "Sfx\\Towners\\Witch33.wav", nullptr },// TSFX_WITCH33 - { sfx_STREAM, "Sfx\\Towners\\Witch34.wav", nullptr },// TSFX_WITCH34 - { sfx_STREAM, "Sfx\\Towners\\Witch35.wav", nullptr },// TSFX_WITCH35 - { sfx_STREAM, "Sfx\\Towners\\Witch36.wav", nullptr },// TSFX_WITCH36 - { sfx_STREAM, "Sfx\\Towners\\Witch37.wav", nullptr },// TSFX_WITCH37 - { sfx_STREAM, "Sfx\\Towners\\Witch38.wav", nullptr },// TSFX_WITCH38 - { sfx_STREAM, "Sfx\\Towners\\Witch39.wav", nullptr },// TSFX_WITCH39 - { sfx_STREAM, "Sfx\\Towners\\Witch40.wav", nullptr },// TSFX_WITCH40 - { sfx_STREAM, "Sfx\\Towners\\Witch41.wav", nullptr },// TSFX_WITCH41 - { sfx_STREAM, "Sfx\\Towners\\Witch42.wav", nullptr },// TSFX_WITCH42 - { sfx_STREAM, "Sfx\\Towners\\Witch43.wav", nullptr },// TSFX_WITCH43 - { sfx_STREAM, "Sfx\\Towners\\Witch44.wav", nullptr },// TSFX_WITCH44 - { sfx_STREAM, "Sfx\\Towners\\Witch45.wav", nullptr },// TSFX_WITCH45 - { sfx_STREAM, "Sfx\\Towners\\Witch46.wav", nullptr },// TSFX_WITCH46 - { sfx_STREAM, "Sfx\\Towners\\Witch47.wav", nullptr },// TSFX_WITCH47 - { sfx_STREAM, "Sfx\\Towners\\Witch48.wav", nullptr },// TSFX_WITCH48 - { sfx_STREAM, "Sfx\\Towners\\Witch49.wav", nullptr },// TSFX_WITCH49 - { sfx_STREAM, "Sfx\\Towners\\Witch50.wav", nullptr },// TSFX_WITCH50 - { sfx_STREAM, "Sfx\\Towners\\Wound01.wav", nullptr },// TSFX_WOUND - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage01.wav", nullptr },// PS_MAGE1 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage02.wav", nullptr },// PS_MAGE2 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage03.wav", nullptr },// PS_MAGE3 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage04.wav", nullptr },// PS_MAGE4 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage05.wav", nullptr },// PS_MAGE5 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage06.wav", nullptr },// PS_MAGE6 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage07.wav", nullptr },// PS_MAGE7 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage08.wav", nullptr },// PS_MAGE8 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage09.wav", nullptr },// PS_MAGE9 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage10.wav", nullptr },// PS_MAGE10 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage11.wav", nullptr },// PS_MAGE11 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage12.wav", nullptr },// PS_MAGE12 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage13.wav", nullptr },// PS_MAGE13 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage14.wav", nullptr },// PS_MAGE14 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage15.wav", nullptr },// PS_MAGE15 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage16.wav", nullptr },// PS_MAGE16 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage17.wav", nullptr },// PS_MAGE17 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage18.wav", nullptr },// PS_MAGE18 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage19.wav", nullptr },// PS_MAGE19 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage20.wav", nullptr },// PS_MAGE20 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage21.wav", nullptr },// PS_MAGE21 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage22.wav", nullptr },// PS_MAGE22 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage23.wav", nullptr },// PS_MAGE23 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage24.wav", nullptr },// PS_MAGE24 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage25.wav", nullptr },// PS_MAGE25 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage26.wav", nullptr },// PS_MAGE26 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage27.wav", nullptr },// PS_MAGE27 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage28.wav", nullptr },// PS_MAGE28 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage29.wav", nullptr },// PS_MAGE29 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage30.wav", nullptr },// PS_MAGE30 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage31.wav", nullptr },// PS_MAGE31 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage32.wav", nullptr },// PS_MAGE32 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage33.wav", nullptr },// PS_MAGE33 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage34.wav", nullptr },// PS_MAGE34 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage35.wav", nullptr },// PS_MAGE35 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage36.wav", nullptr },// PS_MAGE36 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage37.wav", nullptr },// PS_MAGE37 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage38.wav", nullptr },// PS_MAGE38 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage39.wav", nullptr },// PS_MAGE39 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage40.wav", nullptr },// PS_MAGE40 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage41.wav", nullptr },// PS_MAGE41 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage42.wav", nullptr },// PS_MAGE42 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage43.wav", nullptr },// PS_MAGE43 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage44.wav", nullptr },// PS_MAGE44 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage45.wav", nullptr },// PS_MAGE45 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage46.wav", nullptr },// PS_MAGE46 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage47.wav", nullptr },// PS_MAGE47 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage48.wav", nullptr },// PS_MAGE48 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage49.wav", nullptr },// PS_MAGE49 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage50.wav", nullptr },// PS_MAGE50 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage51.wav", nullptr },// PS_MAGE51 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage52.wav", nullptr },// PS_MAGE52 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage53.wav", nullptr },// PS_MAGE53 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage54.wav", nullptr },// PS_MAGE54 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage55.wav", nullptr },// PS_MAGE55 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage56.wav", nullptr },// PS_MAGE56 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage57.wav", nullptr },// PS_MAGE57 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage58.wav", nullptr },// PS_MAGE58 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage59.wav", nullptr },// PS_MAGE59 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage60.wav", nullptr },// PS_MAGE60 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage61.wav", nullptr },// PS_MAGE61 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage62.wav", nullptr },// PS_MAGE62 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage63.wav", nullptr },// PS_MAGE63 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage64.wav", nullptr },// PS_MAGE64 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage65.wav", nullptr },// PS_MAGE65 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage66.wav", nullptr },// PS_MAGE66 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage67.wav", nullptr },// PS_MAGE67 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage68.wav", nullptr },// PS_MAGE68 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage69.wav", nullptr },// PS_MAGE69 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage69b.wav", nullptr },// PS_MAGE69B - { sfx_SORCERER, "Sfx\\Sorceror\\Mage70.wav", nullptr },// PS_MAGE70 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage71.wav", nullptr },// PS_MAGE71 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage72.wav", nullptr },// PS_MAGE72 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage73.wav", nullptr },// PS_MAGE73 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage74.wav", nullptr },// PS_MAGE74 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage75.wav", nullptr },// PS_MAGE75 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage76.wav", nullptr },// PS_MAGE76 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage77.wav", nullptr },// PS_MAGE77 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage78.wav", nullptr },// PS_MAGE78 - { sfx_SORCERER, "Sfx\\Sorceror\\Mage79.wav", nullptr },// PS_MAGE79 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage80.wav", nullptr },// PS_MAGE80 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage81.wav", nullptr },// PS_MAGE81 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage82.wav", nullptr },// PS_MAGE82 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage83.wav", nullptr },// PS_MAGE83 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage84.wav", nullptr },// PS_MAGE84 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage85.wav", nullptr },// PS_MAGE85 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage86.wav", nullptr },// PS_MAGE86 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage87.wav", nullptr },// PS_MAGE87 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage88.wav", nullptr },// PS_MAGE88 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage89.wav", nullptr },// PS_MAGE89 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage90.wav", nullptr },// PS_MAGE90 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage91.wav", nullptr },// PS_MAGE91 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage92.wav", nullptr },// PS_MAGE92 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage93.wav", nullptr },// PS_MAGE93 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage94.wav", nullptr },// PS_MAGE94 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage95.wav", nullptr },// PS_MAGE95 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage96.wav", nullptr },// PS_MAGE96 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage97.wav", nullptr },// PS_MAGE97 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage98.wav", nullptr },// PS_MAGE98 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage99.wav", nullptr },// PS_MAGE99 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage100.wav", nullptr },// PS_MAGE100 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage101.wav", nullptr },// PS_MAGE101 - { sfx_STREAM | sfx_SORCERER, "Sfx\\Sorceror\\Mage102.wav", nullptr },// PS_MAGE102 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue01.wav", nullptr },// PS_ROGUE1 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue02.wav", nullptr },// PS_ROGUE2 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue03.wav", nullptr },// PS_ROGUE3 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue04.wav", nullptr },// PS_ROGUE4 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue05.wav", nullptr },// PS_ROGUE5 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue06.wav", nullptr },// PS_ROGUE6 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue07.wav", nullptr },// PS_ROGUE7 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue08.wav", nullptr },// PS_ROGUE8 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue09.wav", nullptr },// PS_ROGUE9 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue10.wav", nullptr },// PS_ROGUE10 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue11.wav", nullptr },// PS_ROGUE11 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue12.wav", nullptr },// PS_ROGUE12 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue13.wav", nullptr },// PS_ROGUE13 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue14.wav", nullptr },// PS_ROGUE14 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue15.wav", nullptr },// PS_ROGUE15 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue16.wav", nullptr },// PS_ROGUE16 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue17.wav", nullptr },// PS_ROGUE17 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue18.wav", nullptr },// PS_ROGUE18 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue19.wav", nullptr },// PS_ROGUE19 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue20.wav", nullptr },// PS_ROGUE20 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue21.wav", nullptr },// PS_ROGUE21 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue22.wav", nullptr },// PS_ROGUE22 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue23.wav", nullptr },// PS_ROGUE23 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue24.wav", nullptr },// PS_ROGUE24 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue25.wav", nullptr },// PS_ROGUE25 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue26.wav", nullptr },// PS_ROGUE26 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue27.wav", nullptr },// PS_ROGUE27 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue28.wav", nullptr },// PS_ROGUE28 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue29.wav", nullptr },// PS_ROGUE29 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue30.wav", nullptr },// PS_ROGUE30 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue31.wav", nullptr },// PS_ROGUE31 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue32.wav", nullptr },// PS_ROGUE32 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue33.wav", nullptr },// PS_ROGUE33 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue34.wav", nullptr },// PS_ROGUE34 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue35.wav", nullptr },// PS_ROGUE35 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue36.wav", nullptr },// PS_ROGUE36 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue37.wav", nullptr },// PS_ROGUE37 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue38.wav", nullptr },// PS_ROGUE38 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue39.wav", nullptr },// PS_ROGUE39 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue40.wav", nullptr },// PS_ROGUE40 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue41.wav", nullptr },// PS_ROGUE41 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue42.wav", nullptr },// PS_ROGUE42 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue43.wav", nullptr },// PS_ROGUE43 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue44.wav", nullptr },// PS_ROGUE44 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue45.wav", nullptr },// PS_ROGUE45 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue46.wav", nullptr },// PS_ROGUE46 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue47.wav", nullptr },// PS_ROGUE47 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue48.wav", nullptr },// PS_ROGUE48 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue49.wav", nullptr },// PS_ROGUE49 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue50.wav", nullptr },// PS_ROGUE50 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue51.wav", nullptr },// PS_ROGUE51 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue52.wav", nullptr },// PS_ROGUE52 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue53.wav", nullptr },// PS_ROGUE53 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue54.wav", nullptr },// PS_ROGUE54 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue55.wav", nullptr },// PS_ROGUE55 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue56.wav", nullptr },// PS_ROGUE56 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue57.wav", nullptr },// PS_ROGUE57 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue58.wav", nullptr },// PS_ROGUE58 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue59.wav", nullptr },// PS_ROGUE59 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue60.wav", nullptr },// PS_ROGUE60 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue61.wav", nullptr },// PS_ROGUE61 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue62.wav", nullptr },// PS_ROGUE62 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue63.wav", nullptr },// PS_ROGUE63 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue64.wav", nullptr },// PS_ROGUE64 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue65.wav", nullptr },// PS_ROGUE65 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue66.wav", nullptr },// PS_ROGUE66 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue67.wav", nullptr },// PS_ROGUE67 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue68.wav", nullptr },// PS_ROGUE68 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue69.wav", nullptr },// PS_ROGUE69 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue69b.wav", nullptr },// PS_ROGUE69B - { sfx_ROGUE, "Sfx\\Rogue\\Rogue70.wav", nullptr },// PS_ROGUE70 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue71.wav", nullptr },// PS_ROGUE71 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue72.wav", nullptr },// PS_ROGUE72 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue73.wav", nullptr },// PS_ROGUE73 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue74.wav", nullptr },// PS_ROGUE74 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue75.wav", nullptr },// PS_ROGUE75 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue76.wav", nullptr },// PS_ROGUE76 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue77.wav", nullptr },// PS_ROGUE77 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue78.wav", nullptr },// PS_ROGUE78 - { sfx_ROGUE, "Sfx\\Rogue\\Rogue79.wav", nullptr },// PS_ROGUE79 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue80.wav", nullptr },// PS_ROGUE80 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue81.wav", nullptr },// PS_ROGUE81 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue82.wav", nullptr },// PS_ROGUE82 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue83.wav", nullptr },// PS_ROGUE83 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue84.wav", nullptr },// PS_ROGUE84 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue85.wav", nullptr },// PS_ROGUE85 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue86.wav", nullptr },// PS_ROGUE86 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue87.wav", nullptr },// PS_ROGUE87 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue88.wav", nullptr },// PS_ROGUE88 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue89.wav", nullptr },// PS_ROGUE89 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue90.wav", nullptr },// PS_ROGUE90 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue91.wav", nullptr },// PS_ROGUE91 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue92.wav", nullptr },// PS_ROGUE92 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue93.wav", nullptr },// PS_ROGUE93 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue94.wav", nullptr },// PS_ROGUE94 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue95.wav", nullptr },// PS_ROGUE95 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue96.wav", nullptr },// PS_ROGUE96 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue97.wav", nullptr },// PS_ROGUE97 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue98.wav", nullptr },// PS_ROGUE98 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue99.wav", nullptr },// PS_ROGUE99 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue100.wav", nullptr },// PS_ROGUE100 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue101.wav", nullptr },// PS_ROGUE101 - { sfx_STREAM | sfx_ROGUE, "Sfx\\Rogue\\Rogue102.wav", nullptr },// PS_ROGUE102 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior01.wav", nullptr },// PS_WARR1 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior02.wav", nullptr },// PS_WARR2 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior03.wav", nullptr },// PS_WARR3 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior04.wav", nullptr },// PS_WARR4 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior05.wav", nullptr },// PS_WARR5 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior06.wav", nullptr },// PS_WARR6 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior07.wav", nullptr },// PS_WARR7 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior08.wav", nullptr },// PS_WARR8 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior09.wav", nullptr },// PS_WARR9 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior10.wav", nullptr },// PS_WARR10 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior11.wav", nullptr },// PS_WARR11 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior12.wav", nullptr },// PS_WARR12 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior13.wav", nullptr },// PS_WARR13 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior14.wav", nullptr },// PS_WARR14 - { sfx_WARRIOR, "Sfx\\Warrior\\Wario14b.wav", nullptr },// PS_WARR14B - { sfx_WARRIOR, "Sfx\\Warrior\\Wario14c.wav", nullptr },// PS_WARR14C - { sfx_WARRIOR, "Sfx\\Warrior\\Warior15.wav", nullptr },// PS_WARR15 - { sfx_WARRIOR, "Sfx\\Warrior\\Wario15b.wav", nullptr },// PS_WARR15B - { sfx_WARRIOR, "Sfx\\Warrior\\Wario15c.wav", nullptr },// PS_WARR15C - { sfx_WARRIOR, "Sfx\\Warrior\\Warior16.wav", nullptr },// PS_WARR16 - { sfx_WARRIOR, "Sfx\\Warrior\\Wario16b.wav", nullptr },// PS_WARR16B - { sfx_WARRIOR, "Sfx\\Warrior\\Wario16c.wav", nullptr },// PS_WARR16C - { sfx_WARRIOR, "Sfx\\Warrior\\Warior17.wav", nullptr },// PS_WARR17 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior18.wav", nullptr },// PS_WARR18 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior19.wav", nullptr },// PS_WARR19 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior20.wav", nullptr },// PS_WARR20 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior21.wav", nullptr },// PS_WARR21 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior22.wav", nullptr },// PS_WARR22 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior23.wav", nullptr },// PS_WARR23 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior24.wav", nullptr },// PS_WARR24 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior25.wav", nullptr },// PS_WARR25 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior26.wav", nullptr },// PS_WARR26 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior27.wav", nullptr },// PS_WARR27 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior28.wav", nullptr },// PS_WARR28 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior29.wav", nullptr },// PS_WARR29 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior30.wav", nullptr },// PS_WARR30 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior31.wav", nullptr },// PS_WARR31 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior32.wav", nullptr },// PS_WARR32 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior33.wav", nullptr },// PS_WARR33 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior34.wav", nullptr },// PS_WARR34 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior35.wav", nullptr },// PS_WARR35 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior36.wav", nullptr },// PS_WARR36 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior37.wav", nullptr },// PS_WARR37 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior38.wav", nullptr },// PS_WARR38 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior39.wav", nullptr },// PS_WARR39 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior40.wav", nullptr },// PS_WARR40 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior41.wav", nullptr },// PS_WARR41 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior42.wav", nullptr },// PS_WARR42 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior43.wav", nullptr },// PS_WARR43 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior44.wav", nullptr },// PS_WARR44 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior45.wav", nullptr },// PS_WARR45 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior46.wav", nullptr },// PS_WARR46 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior47.wav", nullptr },// PS_WARR47 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior48.wav", nullptr },// PS_WARR48 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior49.wav", nullptr },// PS_WARR49 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior50.wav", nullptr },// PS_WARR50 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior51.wav", nullptr },// PS_WARR51 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior52.wav", nullptr },// PS_WARR52 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior53.wav", nullptr },// PS_WARR53 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior54.wav", nullptr },// PS_WARR54 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior55.wav", nullptr },// PS_WARR55 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior56.wav", nullptr },// PS_WARR56 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior57.wav", nullptr },// PS_WARR57 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior58.wav", nullptr },// PS_WARR58 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior59.wav", nullptr },// PS_WARR59 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior60.wav", nullptr },// PS_WARR60 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior61.wav", nullptr },// PS_WARR61 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior62.wav", nullptr },// PS_WARR62 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior63.wav", nullptr },// PS_WARR63 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior64.wav", nullptr },// PS_WARR64 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior65.wav", nullptr },// PS_WARR65 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior66.wav", nullptr },// PS_WARR66 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior67.wav", nullptr },// PS_WARR67 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior68.wav", nullptr },// PS_WARR68 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior69.wav", nullptr },// PS_WARR69 - { sfx_WARRIOR, "Sfx\\Warrior\\Wario69b.wav", nullptr },// PS_WARR69B - { sfx_WARRIOR, "Sfx\\Warrior\\Warior70.wav", nullptr },// PS_WARR70 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior71.wav", nullptr },// PS_WARR71 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior72.wav", nullptr },// PS_WARR72 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior73.wav", nullptr },// PS_WARR73 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior74.wav", nullptr },// PS_WARR74 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior75.wav", nullptr },// PS_WARR75 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior76.wav", nullptr },// PS_WARR76 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior77.wav", nullptr },// PS_WARR77 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior78.wav", nullptr },// PS_WARR78 - { sfx_WARRIOR, "Sfx\\Warrior\\Warior79.wav", nullptr },// PS_WARR79 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior80.wav", nullptr },// PS_WARR80 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior81.wav", nullptr },// PS_WARR81 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior82.wav", nullptr },// PS_WARR82 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior83.wav", nullptr },// PS_WARR83 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior84.wav", nullptr },// PS_WARR84 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior85.wav", nullptr },// PS_WARR85 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior86.wav", nullptr },// PS_WARR86 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior87.wav", nullptr },// PS_WARR87 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior88.wav", nullptr },// PS_WARR88 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior89.wav", nullptr },// PS_WARR89 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior90.wav", nullptr },// PS_WARR90 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior91.wav", nullptr },// PS_WARR91 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior92.wav", nullptr },// PS_WARR92 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior93.wav", nullptr },// PS_WARR93 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior94.wav", nullptr },// PS_WARR94 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior95.wav", nullptr },// PS_WARR95 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario95b.wav", nullptr },// PS_WARR95B - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario95c.wav", nullptr },// PS_WARR95C - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario95d.wav", nullptr },// PS_WARR95D - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario95e.wav", nullptr },// PS_WARR95E - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario95f.wav", nullptr },// PS_WARR95F - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario96b.wav", nullptr },// PS_WARR96B - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario97.wav", nullptr },// PS_WARR97 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario98.wav", nullptr },// PS_WARR98 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Warior99.wav", nullptr },// PS_WARR99 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario100.wav", nullptr },// PS_WARR100 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario101.wav", nullptr },// PS_WARR101 - { sfx_STREAM | sfx_WARRIOR, "Sfx\\Warrior\\Wario102.wav", nullptr },// PS_WARR102 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk01.wav", nullptr },// PS_MONK1 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK2 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK3 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK4 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK5 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK6 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK7 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk08.wav", nullptr },// PS_MONK8 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk09.wav", nullptr },// PS_MONK9 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk10.wav", nullptr },// PS_MONK10 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk11.wav", nullptr },// PS_MONK11 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk12.wav", nullptr },// PS_MONK12 - { sfx_MONK, "Sfx\\Monk\\Monk13.wav", nullptr },// PS_MONK13 - { sfx_MONK, "Sfx\\Monk\\Monk14.wav", nullptr },// PS_MONK14 - { sfx_MONK, "Sfx\\Monk\\Monk15.wav", nullptr },// PS_MONK15 - { sfx_MONK, "Sfx\\Monk\\Monk16.wav", nullptr },// PS_MONK16 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK17 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK18 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK19 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK20 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK21 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK22 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK23 - { sfx_MONK, "Sfx\\Monk\\Monk24.wav", nullptr },// PS_MONK24 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK25 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK26 - { sfx_MONK, "Sfx\\Monk\\Monk27.wav", nullptr },// PS_MONK27 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK28 - { sfx_MONK, "Sfx\\Monk\\Monk29.wav", nullptr },// PS_MONK29 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK30 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK31 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK32 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK33 - { sfx_MONK, "Sfx\\Monk\\Monk34.wav", nullptr },// PS_MONK34 - { sfx_MONK, "Sfx\\Monk\\Monk35.wav", nullptr },// PS_MONK35 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK36 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK37 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK38 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK39 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK40 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK41 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK42 - { sfx_MONK, "Sfx\\Monk\\Monk43.wav", nullptr },// PS_MONK43 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK44 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK45 - { sfx_MONK, "Sfx\\Monk\\Monk46.wav", nullptr },// PS_MONK46 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK47 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK48 - { sfx_MONK, "Sfx\\Monk\\Monk49.wav", nullptr },// PS_MONK49 - { sfx_MONK, "Sfx\\Monk\\Monk50.wav", nullptr },// PS_MONK50 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK51 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk52.wav", nullptr },// PS_MONK52 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK53 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk54.wav", nullptr },// PS_MONK54 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk55.wav", nullptr },// PS_MONK55 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk56.wav", nullptr },// PS_MONK56 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK57 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK58 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK59 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK60 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk61.wav", nullptr },// PS_MONK61 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk62.wav", nullptr },// PS_MONK62 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK63 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK64 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK65 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK66 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK67 - { sfx_MONK, "Sfx\\Monk\\Monk68.wav", nullptr },// PS_MONK68 - { sfx_MONK, "Sfx\\Monk\\Monk69.wav", nullptr },// PS_MONK69 - { sfx_MONK, "Sfx\\Monk\\Monk69b.wav", nullptr },// PS_MONK69B - { sfx_MONK, "Sfx\\Monk\\Monk70.wav", nullptr },// PS_MONK70 - { sfx_MONK, "Sfx\\Monk\\Monk71.wav", nullptr },// PS_MONK71 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK72 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK73 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK74 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK75 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK76 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK77 - { sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK78 - { sfx_MONK, "Sfx\\Monk\\Monk79.wav", nullptr },// PS_MONK79 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk80.wav", nullptr },// PS_MONK80 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK81 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk82.wav", nullptr },// PS_MONK82 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk83.wav", nullptr },// PS_MONK83 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK84 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK85 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK86 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk87.wav", nullptr },// PS_MONK87 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk88.wav", nullptr },// PS_MONK88 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk89.wav", nullptr },// PS_MONK89 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK90 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk91.wav", nullptr },// PS_MONK91 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk92.wav", nullptr },// PS_MONK92 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK93 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk94.wav", nullptr },// PS_MONK94 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk95.wav", nullptr },// PS_MONK95 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk96.wav", nullptr },// PS_MONK96 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk97.wav", nullptr },// PS_MONK97 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk98.wav", nullptr },// PS_MONK98 - { sfx_STREAM | sfx_MONK, "Sfx\\Monk\\Monk99.wav", nullptr },// PS_MONK99 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK100 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK101 - { sfx_STREAM | sfx_MONK, "Sfx\\Misc\\blank.wav", nullptr },// PS_MONK102 - { sfx_STREAM, "Sfx\\Narrator\\Nar01.wav", nullptr },// PS_NAR1 - { sfx_STREAM, "Sfx\\Narrator\\Nar02.wav", nullptr },// PS_NAR2 - { sfx_STREAM, "Sfx\\Narrator\\Nar03.wav", nullptr },// PS_NAR3 - { sfx_STREAM, "Sfx\\Narrator\\Nar04.wav", nullptr },// PS_NAR4 - { sfx_STREAM, "Sfx\\Narrator\\Nar05.wav", nullptr },// PS_NAR5 - { sfx_STREAM, "Sfx\\Narrator\\Nar06.wav", nullptr },// PS_NAR6 - { sfx_STREAM, "Sfx\\Narrator\\Nar07.wav", nullptr },// PS_NAR7 - { sfx_STREAM, "Sfx\\Narrator\\Nar08.wav", nullptr },// PS_NAR8 - { sfx_STREAM, "Sfx\\Narrator\\Nar09.wav", nullptr },// PS_NAR9 - { sfx_STREAM, "Sfx\\Misc\\Lvl16int.wav", nullptr },// PS_DIABLVLINT - { sfx_STREAM, "Sfx\\Monsters\\Butcher.wav", nullptr },// USFX_CLEAVER - { sfx_STREAM, "Sfx\\Monsters\\Garbud01.wav", nullptr },// USFX_GARBUD1 - { sfx_STREAM, "Sfx\\Monsters\\Garbud02.wav", nullptr },// USFX_GARBUD2 - { sfx_STREAM, "Sfx\\Monsters\\Garbud03.wav", nullptr },// USFX_GARBUD3 - { sfx_STREAM, "Sfx\\Monsters\\Garbud04.wav", nullptr },// USFX_GARBUD4 - { sfx_STREAM, "Sfx\\Monsters\\Izual01.wav", nullptr },// USFX_IZUAL1 - { sfx_STREAM, "Sfx\\Monsters\\Lach01.wav", nullptr },// USFX_LACH1 - { sfx_STREAM, "Sfx\\Monsters\\Lach02.wav", nullptr },// USFX_LACH2 - { sfx_STREAM, "Sfx\\Monsters\\Lach03.wav", nullptr },// USFX_LACH3 - { sfx_STREAM, "Sfx\\Monsters\\Laz01.wav", nullptr },// USFX_LAZ1 - { sfx_STREAM, "Sfx\\Monsters\\Laz02.wav", nullptr },// USFX_LAZ2 - { sfx_STREAM, "Sfx\\Monsters\\Sking01.wav", nullptr },// USFX_SKING1 - { sfx_STREAM, "Sfx\\Monsters\\Snot01.wav", nullptr },// USFX_SNOT1 - { sfx_STREAM, "Sfx\\Monsters\\Snot02.wav", nullptr },// USFX_SNOT2 - { sfx_STREAM, "Sfx\\Monsters\\Snot03.wav", nullptr },// USFX_SNOT3 - { sfx_STREAM, "Sfx\\Monsters\\Warlrd01.wav", nullptr },// USFX_WARLRD1 - { sfx_STREAM, "Sfx\\Monsters\\Wlock01.wav", nullptr },// USFX_WLOCK1 - { sfx_STREAM, "Sfx\\Monsters\\Zhar01.wav", nullptr },// USFX_ZHAR1 - { sfx_STREAM, "Sfx\\Monsters\\Zhar02.wav", nullptr },// USFX_ZHAR2 - { sfx_STREAM, "Sfx\\Monsters\\DiabloD.wav", nullptr },// USFX_DIABLOD - { sfx_STREAM, "Sfx\\Hellfire\\Farmer1.wav", nullptr },// TSFX_FARMER1 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer2.wav", nullptr },// TSFX_FARMER2 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer2A.wav", nullptr },// TSFX_FARMER2A - { sfx_STREAM, "Sfx\\Hellfire\\Farmer3.wav", nullptr },// TSFX_FARMER3 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer4.wav", nullptr },// TSFX_FARMER4 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer5.wav", nullptr },// TSFX_FARMER5 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer6.wav", nullptr },// TSFX_FARMER6 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer7.wav", nullptr },// TSFX_FARMER7 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer8.wav", nullptr },// TSFX_FARMER8 - { sfx_STREAM, "Sfx\\Hellfire\\Farmer9.wav", nullptr },// TSFX_FARMER9 - { sfx_STREAM, "Sfx\\Hellfire\\TEDDYBR1.wav", nullptr },// TSFX_TEDDYBR1 - { sfx_STREAM, "Sfx\\Hellfire\\TEDDYBR2.wav", nullptr },// TSFX_TEDDYBR2 - { sfx_STREAM, "Sfx\\Hellfire\\TEDDYBR3.wav", nullptr },// TSFX_TEDDYBR3 - { sfx_STREAM, "Sfx\\Hellfire\\TEDDYBR4.wav", nullptr },// TSFX_TEDDYBR4 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER1.wav", nullptr },// USFX_DEFILER1 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER2.wav", nullptr },// USFX_DEFILER2 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER3.wav", nullptr },// USFX_DEFILER3 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER4.wav", nullptr },// USFX_DEFILER4 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER8.wav", nullptr },// USFX_DEFILER8 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER6.wav", nullptr },// USFX_DEFILER6 - { sfx_STREAM, "Sfx\\Hellfire\\DEFILER7.wav", nullptr },// USFX_DEFILER7 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL1.wav", nullptr },// USFX_NAKRUL1 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL2.wav", nullptr },// USFX_NAKRUL2 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL3.wav", nullptr },// USFX_NAKRUL3 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL4.wav", nullptr },// USFX_NAKRUL4 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL5.wav", nullptr },// USFX_NAKRUL5 - { sfx_STREAM, "Sfx\\Hellfire\\NAKRUL6.wav", nullptr },// USFX_NAKRUL6 - { sfx_STREAM, "Sfx\\Hellfire\\NARATR3.wav", nullptr },// PS_NARATR3 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT1.wav", nullptr },// TSFX_COWSUT1 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT2.wav", nullptr },// TSFX_COWSUT2 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT3.wav", nullptr },// TSFX_COWSUT3 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT4.wav", nullptr },// TSFX_COWSUT4 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT4A.wav", nullptr },// TSFX_COWSUT4A - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT5.wav", nullptr },// TSFX_COWSUT5 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT6.wav", nullptr },// TSFX_COWSUT6 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT7.wav", nullptr },// TSFX_COWSUT7 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT8.wav", nullptr },// TSFX_COWSUT8 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT9.wav", nullptr },// TSFX_COWSUT9 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT10.wav", nullptr },// TSFX_COWSUT10 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT11.wav", nullptr },// TSFX_COWSUT11 - { sfx_STREAM, "Sfx\\Hellfire\\COWSUT12.wav", nullptr },// TSFX_COWSUT12 - { sfx_STREAM, "Sfx\\Hellfire\\Skljrn1.wav", nullptr },// USFX_SKLJRN1 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr6.wav", nullptr },// PS_NARATR6 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr7.wav", nullptr },// PS_NARATR7 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr8.wav", nullptr },// PS_NARATR8 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr5.wav", nullptr },// PS_NARATR5 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr9.wav", nullptr },// PS_NARATR9 - { sfx_STREAM, "Sfx\\Hellfire\\Naratr4.wav", nullptr },// PS_NARATR4 - { sfx_STREAM, "Sfx\\Hellfire\\TRADER1.wav", nullptr },// TSFX_TRADER1 - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\Cropen.wav", nullptr },// IS_CROPEN - { sfx_MISC | sfx_HELLFIRE, "Sfx\\Items\\Crclos.wav", nullptr },// IS_CRCLOS + { sfx_MISC | sfx_HELLFIRE, "sfx\\towners\\cow7.wav", nullptr },// TSFX_COW7 + { sfx_MISC | sfx_HELLFIRE, "sfx\\towners\\cow8.wav", nullptr },// TSFX_COW8 + { sfx_STREAM, "sfx\\towners\\deadguy2.wav", nullptr },// TSFX_DEADGUY + { sfx_STREAM, "sfx\\towners\\drunk01.wav", nullptr },// TSFX_DRUNK1 + { sfx_STREAM, "sfx\\towners\\drunk02.wav", nullptr },// TSFX_DRUNK2 + { sfx_STREAM, "sfx\\towners\\drunk03.wav", nullptr },// TSFX_DRUNK3 + { sfx_STREAM, "sfx\\towners\\drunk04.wav", nullptr },// TSFX_DRUNK4 + { sfx_STREAM, "sfx\\towners\\drunk05.wav", nullptr },// TSFX_DRUNK5 + { sfx_STREAM, "sfx\\towners\\drunk06.wav", nullptr },// TSFX_DRUNK6 + { sfx_STREAM, "sfx\\towners\\drunk07.wav", nullptr },// TSFX_DRUNK7 + { sfx_STREAM, "sfx\\towners\\drunk08.wav", nullptr },// TSFX_DRUNK8 + { sfx_STREAM, "sfx\\towners\\drunk09.wav", nullptr },// TSFX_DRUNK9 + { sfx_STREAM, "sfx\\towners\\drunk10.wav", nullptr },// TSFX_DRUNK10 + { sfx_STREAM, "sfx\\towners\\drunk11.wav", nullptr },// TSFX_DRUNK11 + { sfx_STREAM, "sfx\\towners\\drunk12.wav", nullptr },// TSFX_DRUNK12 + { sfx_STREAM, "sfx\\towners\\drunk13.wav", nullptr },// TSFX_DRUNK13 + { sfx_STREAM, "sfx\\towners\\drunk14.wav", nullptr },// TSFX_DRUNK14 + { sfx_STREAM, "sfx\\towners\\drunk15.wav", nullptr },// TSFX_DRUNK15 + { sfx_STREAM, "sfx\\towners\\drunk16.wav", nullptr },// TSFX_DRUNK16 + { sfx_STREAM, "sfx\\towners\\drunk17.wav", nullptr },// TSFX_DRUNK17 + { sfx_STREAM, "sfx\\towners\\drunk18.wav", nullptr },// TSFX_DRUNK18 + { sfx_STREAM, "sfx\\towners\\drunk19.wav", nullptr },// TSFX_DRUNK19 + { sfx_STREAM, "sfx\\towners\\drunk20.wav", nullptr },// TSFX_DRUNK20 + { sfx_STREAM, "sfx\\towners\\drunk21.wav", nullptr },// TSFX_DRUNK21 + { sfx_STREAM, "sfx\\towners\\drunk22.wav", nullptr },// TSFX_DRUNK22 + { sfx_STREAM, "sfx\\towners\\drunk23.wav", nullptr },// TSFX_DRUNK23 + { sfx_STREAM, "sfx\\towners\\drunk24.wav", nullptr },// TSFX_DRUNK24 + { sfx_STREAM, "sfx\\towners\\drunk25.wav", nullptr },// TSFX_DRUNK25 + { sfx_STREAM, "sfx\\towners\\drunk26.wav", nullptr },// TSFX_DRUNK26 + { sfx_STREAM, "sfx\\towners\\drunk27.wav", nullptr },// TSFX_DRUNK27 + { sfx_STREAM, "sfx\\towners\\drunk28.wav", nullptr },// TSFX_DRUNK28 + { sfx_STREAM, "sfx\\towners\\drunk29.wav", nullptr },// TSFX_DRUNK29 + { sfx_STREAM, "sfx\\towners\\drunk30.wav", nullptr },// TSFX_DRUNK30 + { sfx_STREAM, "sfx\\towners\\drunk31.wav", nullptr },// TSFX_DRUNK31 + { sfx_STREAM, "sfx\\towners\\drunk32.wav", nullptr },// TSFX_DRUNK32 + { sfx_STREAM, "sfx\\towners\\drunk33.wav", nullptr },// TSFX_DRUNK33 + { sfx_STREAM, "sfx\\towners\\drunk34.wav", nullptr },// TSFX_DRUNK34 + { sfx_STREAM, "sfx\\towners\\drunk35.wav", nullptr },// TSFX_DRUNK35 + { sfx_STREAM, "sfx\\towners\\healer01.wav", nullptr },// TSFX_HEALER1 + { sfx_STREAM, "sfx\\towners\\healer02.wav", nullptr },// TSFX_HEALER2 + { sfx_STREAM, "sfx\\towners\\healer03.wav", nullptr },// TSFX_HEALER3 + { sfx_STREAM, "sfx\\towners\\healer04.wav", nullptr },// TSFX_HEALER4 + { sfx_STREAM, "sfx\\towners\\healer05.wav", nullptr },// TSFX_HEALER5 + { sfx_STREAM, "sfx\\towners\\healer06.wav", nullptr },// TSFX_HEALER6 + { sfx_STREAM, "sfx\\towners\\healer07.wav", nullptr },// TSFX_HEALER7 + { sfx_STREAM, "sfx\\towners\\healer08.wav", nullptr },// TSFX_HEALER8 + { sfx_STREAM, "sfx\\towners\\healer09.wav", nullptr },// TSFX_HEALER9 + { sfx_STREAM, "sfx\\towners\\healer10.wav", nullptr },// TSFX_HEALER10 + { sfx_STREAM, "sfx\\towners\\healer11.wav", nullptr },// TSFX_HEALER11 + { sfx_STREAM, "sfx\\towners\\healer12.wav", nullptr },// TSFX_HEALER12 + { sfx_STREAM, "sfx\\towners\\healer13.wav", nullptr },// TSFX_HEALER13 + { sfx_STREAM, "sfx\\towners\\healer14.wav", nullptr },// TSFX_HEALER14 + { sfx_STREAM, "sfx\\towners\\healer15.wav", nullptr },// TSFX_HEALER15 + { sfx_STREAM, "sfx\\towners\\healer16.wav", nullptr },// TSFX_HEALER16 + { sfx_STREAM, "sfx\\towners\\healer17.wav", nullptr },// TSFX_HEALER17 + { sfx_STREAM, "sfx\\towners\\healer18.wav", nullptr },// TSFX_HEALER18 + { sfx_STREAM, "sfx\\towners\\healer19.wav", nullptr },// TSFX_HEALER19 + { sfx_STREAM, "sfx\\towners\\healer20.wav", nullptr },// TSFX_HEALER20 + { sfx_STREAM, "sfx\\towners\\healer21.wav", nullptr },// TSFX_HEALER21 + { sfx_STREAM, "sfx\\towners\\healer22.wav", nullptr },// TSFX_HEALER22 + { sfx_STREAM, "sfx\\towners\\healer23.wav", nullptr },// TSFX_HEALER23 + { sfx_STREAM, "sfx\\towners\\healer24.wav", nullptr },// TSFX_HEALER24 + { sfx_STREAM, "sfx\\towners\\healer25.wav", nullptr },// TSFX_HEALER25 + { sfx_STREAM, "sfx\\towners\\healer26.wav", nullptr },// TSFX_HEALER26 + { sfx_STREAM, "sfx\\towners\\healer27.wav", nullptr },// TSFX_HEALER27 + { sfx_STREAM, "sfx\\towners\\healer28.wav", nullptr },// TSFX_HEALER28 + { sfx_STREAM, "sfx\\towners\\healer29.wav", nullptr },// TSFX_HEALER29 + { sfx_STREAM, "sfx\\towners\\healer30.wav", nullptr },// TSFX_HEALER30 + { sfx_STREAM, "sfx\\towners\\healer31.wav", nullptr },// TSFX_HEALER31 + { sfx_STREAM, "sfx\\towners\\healer32.wav", nullptr },// TSFX_HEALER32 + { sfx_STREAM, "sfx\\towners\\healer33.wav", nullptr },// TSFX_HEALER33 + { sfx_STREAM, "sfx\\towners\\healer34.wav", nullptr },// TSFX_HEALER34 + { sfx_STREAM, "sfx\\towners\\healer35.wav", nullptr },// TSFX_HEALER35 + { sfx_STREAM, "sfx\\towners\\healer36.wav", nullptr },// TSFX_HEALER36 + { sfx_STREAM, "sfx\\towners\\healer37.wav", nullptr },// TSFX_HEALER37 + { sfx_STREAM, "sfx\\towners\\healer38.wav", nullptr },// TSFX_HEALER38 + { sfx_STREAM, "sfx\\towners\\healer39.wav", nullptr },// TSFX_HEALER39 + { sfx_STREAM, "sfx\\towners\\healer40.wav", nullptr },// TSFX_HEALER40 + { sfx_STREAM, "sfx\\towners\\healer41.wav", nullptr },// TSFX_HEALER41 + { sfx_STREAM, "sfx\\towners\\healer42.wav", nullptr },// TSFX_HEALER42 + { sfx_STREAM, "sfx\\towners\\healer43.wav", nullptr },// TSFX_HEALER43 + { sfx_STREAM, "sfx\\towners\\healer44.wav", nullptr },// TSFX_HEALER44 + { sfx_STREAM, "sfx\\towners\\healer45.wav", nullptr },// TSFX_HEALER45 + { sfx_STREAM, "sfx\\towners\\healer46.wav", nullptr },// TSFX_HEALER46 + { sfx_STREAM, "sfx\\towners\\healer47.wav", nullptr },// TSFX_HEALER47 + { sfx_STREAM, "sfx\\towners\\pegboy01.wav", nullptr },// TSFX_PEGBOY1 + { sfx_STREAM, "sfx\\towners\\pegboy02.wav", nullptr },// TSFX_PEGBOY2 + { sfx_STREAM, "sfx\\towners\\pegboy03.wav", nullptr },// TSFX_PEGBOY3 + { sfx_STREAM, "sfx\\towners\\pegboy04.wav", nullptr },// TSFX_PEGBOY4 + { sfx_STREAM, "sfx\\towners\\pegboy05.wav", nullptr },// TSFX_PEGBOY5 + { sfx_STREAM, "sfx\\towners\\pegboy06.wav", nullptr },// TSFX_PEGBOY6 + { sfx_STREAM, "sfx\\towners\\pegboy07.wav", nullptr },// TSFX_PEGBOY7 + { sfx_STREAM, "sfx\\towners\\pegboy08.wav", nullptr },// TSFX_PEGBOY8 + { sfx_STREAM, "sfx\\towners\\pegboy09.wav", nullptr },// TSFX_PEGBOY9 + { sfx_STREAM, "sfx\\towners\\pegboy10.wav", nullptr },// TSFX_PEGBOY10 + { sfx_STREAM, "sfx\\towners\\pegboy11.wav", nullptr },// TSFX_PEGBOY11 + { sfx_STREAM, "sfx\\towners\\pegboy12.wav", nullptr },// TSFX_PEGBOY12 + { sfx_STREAM, "sfx\\towners\\pegboy13.wav", nullptr },// TSFX_PEGBOY13 + { sfx_STREAM, "sfx\\towners\\pegboy14.wav", nullptr },// TSFX_PEGBOY14 + { sfx_STREAM, "sfx\\towners\\pegboy15.wav", nullptr },// TSFX_PEGBOY15 + { sfx_STREAM, "sfx\\towners\\pegboy16.wav", nullptr },// TSFX_PEGBOY16 + { sfx_STREAM, "sfx\\towners\\pegboy17.wav", nullptr },// TSFX_PEGBOY17 + { sfx_STREAM, "sfx\\towners\\pegboy18.wav", nullptr },// TSFX_PEGBOY18 + { sfx_STREAM, "sfx\\towners\\pegboy19.wav", nullptr },// TSFX_PEGBOY19 + { sfx_STREAM, "sfx\\towners\\pegboy20.wav", nullptr },// TSFX_PEGBOY20 + { sfx_STREAM, "sfx\\towners\\pegboy21.wav", nullptr },// TSFX_PEGBOY21 + { sfx_STREAM, "sfx\\towners\\pegboy22.wav", nullptr },// TSFX_PEGBOY22 + { sfx_STREAM, "sfx\\towners\\pegboy23.wav", nullptr },// TSFX_PEGBOY23 + { sfx_STREAM, "sfx\\towners\\pegboy24.wav", nullptr },// TSFX_PEGBOY24 + { sfx_STREAM, "sfx\\towners\\pegboy25.wav", nullptr },// TSFX_PEGBOY25 + { sfx_STREAM, "sfx\\towners\\pegboy26.wav", nullptr },// TSFX_PEGBOY26 + { sfx_STREAM, "sfx\\towners\\pegboy27.wav", nullptr },// TSFX_PEGBOY27 + { sfx_STREAM, "sfx\\towners\\pegboy28.wav", nullptr },// TSFX_PEGBOY28 + { sfx_STREAM, "sfx\\towners\\pegboy29.wav", nullptr },// TSFX_PEGBOY29 + { sfx_STREAM, "sfx\\towners\\pegboy30.wav", nullptr },// TSFX_PEGBOY30 + { sfx_STREAM, "sfx\\towners\\pegboy31.wav", nullptr },// TSFX_PEGBOY31 + { sfx_STREAM, "sfx\\towners\\pegboy32.wav", nullptr },// TSFX_PEGBOY32 + { sfx_STREAM, "sfx\\towners\\pegboy33.wav", nullptr },// TSFX_PEGBOY33 + { sfx_STREAM, "sfx\\towners\\pegboy34.wav", nullptr },// TSFX_PEGBOY34 + { sfx_STREAM, "sfx\\towners\\pegboy35.wav", nullptr },// TSFX_PEGBOY35 + { sfx_STREAM, "sfx\\towners\\pegboy36.wav", nullptr },// TSFX_PEGBOY36 + { sfx_STREAM, "sfx\\towners\\pegboy37.wav", nullptr },// TSFX_PEGBOY37 + { sfx_STREAM, "sfx\\towners\\pegboy38.wav", nullptr },// TSFX_PEGBOY38 + { sfx_STREAM, "sfx\\towners\\pegboy39.wav", nullptr },// TSFX_PEGBOY39 + { sfx_STREAM, "sfx\\towners\\pegboy40.wav", nullptr },// TSFX_PEGBOY40 + { sfx_STREAM, "sfx\\towners\\pegboy41.wav", nullptr },// TSFX_PEGBOY41 + { sfx_STREAM, "sfx\\towners\\pegboy42.wav", nullptr },// TSFX_PEGBOY42 + { sfx_STREAM, "sfx\\towners\\pegboy43.wav", nullptr },// TSFX_PEGBOY43 + { sfx_STREAM, "sfx\\towners\\priest00.wav", nullptr },// TSFX_PRIEST0 + { sfx_STREAM, "sfx\\towners\\priest01.wav", nullptr },// TSFX_PRIEST1 + { sfx_STREAM, "sfx\\towners\\priest02.wav", nullptr },// TSFX_PRIEST2 + { sfx_STREAM, "sfx\\towners\\priest03.wav", nullptr },// TSFX_PRIEST3 + { sfx_STREAM, "sfx\\towners\\priest04.wav", nullptr },// TSFX_PRIEST4 + { sfx_STREAM, "sfx\\towners\\priest05.wav", nullptr },// TSFX_PRIEST5 + { sfx_STREAM, "sfx\\towners\\priest06.wav", nullptr },// TSFX_PRIEST6 + { sfx_STREAM, "sfx\\towners\\priest07.wav", nullptr },// TSFX_PRIEST7 + { sfx_STREAM, "sfx\\towners\\storyt00.wav", nullptr },// TSFX_STORY0 + { sfx_STREAM, "sfx\\towners\\storyt01.wav", nullptr },// TSFX_STORY1 + { sfx_STREAM, "sfx\\towners\\storyt02.wav", nullptr },// TSFX_STORY2 + { sfx_STREAM, "sfx\\towners\\storyt03.wav", nullptr },// TSFX_STORY3 + { sfx_STREAM, "sfx\\towners\\storyt04.wav", nullptr },// TSFX_STORY4 + { sfx_STREAM, "sfx\\towners\\storyt05.wav", nullptr },// TSFX_STORY5 + { sfx_STREAM, "sfx\\towners\\storyt06.wav", nullptr },// TSFX_STORY6 + { sfx_STREAM, "sfx\\towners\\storyt07.wav", nullptr },// TSFX_STORY7 + { sfx_STREAM, "sfx\\towners\\storyt08.wav", nullptr },// TSFX_STORY8 + { sfx_STREAM, "sfx\\towners\\storyt09.wav", nullptr },// TSFX_STORY9 + { sfx_STREAM, "sfx\\towners\\storyt10.wav", nullptr },// TSFX_STORY10 + { sfx_STREAM, "sfx\\towners\\storyt11.wav", nullptr },// TSFX_STORY11 + { sfx_STREAM, "sfx\\towners\\storyt12.wav", nullptr },// TSFX_STORY12 + { sfx_STREAM, "sfx\\towners\\storyt13.wav", nullptr },// TSFX_STORY13 + { sfx_STREAM, "sfx\\towners\\storyt14.wav", nullptr },// TSFX_STORY14 + { sfx_STREAM, "sfx\\towners\\storyt15.wav", nullptr },// TSFX_STORY15 + { sfx_STREAM, "sfx\\towners\\storyt16.wav", nullptr },// TSFX_STORY16 + { sfx_STREAM, "sfx\\towners\\storyt17.wav", nullptr },// TSFX_STORY17 + { sfx_STREAM, "sfx\\towners\\storyt18.wav", nullptr },// TSFX_STORY18 + { sfx_STREAM, "sfx\\towners\\storyt19.wav", nullptr },// TSFX_STORY19 + { sfx_STREAM, "sfx\\towners\\storyt20.wav", nullptr },// TSFX_STORY20 + { sfx_STREAM, "sfx\\towners\\storyt21.wav", nullptr },// TSFX_STORY21 + { sfx_STREAM, "sfx\\towners\\storyt22.wav", nullptr },// TSFX_STORY22 + { sfx_STREAM, "sfx\\towners\\storyt23.wav", nullptr },// TSFX_STORY23 + { sfx_STREAM, "sfx\\towners\\storyt24.wav", nullptr },// TSFX_STORY24 + { sfx_STREAM, "sfx\\towners\\storyt25.wav", nullptr },// TSFX_STORY25 + { sfx_STREAM, "sfx\\towners\\storyt26.wav", nullptr },// TSFX_STORY26 + { sfx_STREAM, "sfx\\towners\\storyt27.wav", nullptr },// TSFX_STORY27 + { sfx_STREAM, "sfx\\towners\\storyt28.wav", nullptr },// TSFX_STORY28 + { sfx_STREAM, "sfx\\towners\\storyt29.wav", nullptr },// TSFX_STORY29 + { sfx_STREAM, "sfx\\towners\\storyt30.wav", nullptr },// TSFX_STORY30 + { sfx_STREAM, "sfx\\towners\\storyt31.wav", nullptr },// TSFX_STORY31 + { sfx_STREAM, "sfx\\towners\\storyt32.wav", nullptr },// TSFX_STORY32 + { sfx_STREAM, "sfx\\towners\\storyt33.wav", nullptr },// TSFX_STORY33 + { sfx_STREAM, "sfx\\towners\\storyt34.wav", nullptr },// TSFX_STORY34 + { sfx_STREAM, "sfx\\towners\\storyt35.wav", nullptr },// TSFX_STORY35 + { sfx_STREAM, "sfx\\towners\\storyt36.wav", nullptr },// TSFX_STORY36 + { sfx_STREAM, "sfx\\towners\\storyt37.wav", nullptr },// TSFX_STORY37 + { sfx_STREAM, "sfx\\towners\\storyt38.wav", nullptr },// TSFX_STORY38 + { sfx_STREAM, "sfx\\towners\\tavown00.wav", nullptr },// TSFX_TAVERN0 + { sfx_STREAM, "sfx\\towners\\tavown01.wav", nullptr },// TSFX_TAVERN1 + { sfx_STREAM, "sfx\\towners\\tavown02.wav", nullptr },// TSFX_TAVERN2 + { sfx_STREAM, "sfx\\towners\\tavown03.wav", nullptr },// TSFX_TAVERN3 + { sfx_STREAM, "sfx\\towners\\tavown04.wav", nullptr },// TSFX_TAVERN4 + { sfx_STREAM, "sfx\\towners\\tavown05.wav", nullptr },// TSFX_TAVERN5 + { sfx_STREAM, "sfx\\towners\\tavown06.wav", nullptr },// TSFX_TAVERN6 + { sfx_STREAM, "sfx\\towners\\tavown07.wav", nullptr },// TSFX_TAVERN7 + { sfx_STREAM, "sfx\\towners\\tavown08.wav", nullptr },// TSFX_TAVERN8 + { sfx_STREAM, "sfx\\towners\\tavown09.wav", nullptr },// TSFX_TAVERN9 + { sfx_STREAM, "sfx\\towners\\tavown10.wav", nullptr },// TSFX_TAVERN10 + { sfx_STREAM, "sfx\\towners\\tavown11.wav", nullptr },// TSFX_TAVERN11 + { sfx_STREAM, "sfx\\towners\\tavown12.wav", nullptr },// TSFX_TAVERN12 + { sfx_STREAM, "sfx\\towners\\tavown13.wav", nullptr },// TSFX_TAVERN13 + { sfx_STREAM, "sfx\\towners\\tavown14.wav", nullptr },// TSFX_TAVERN14 + { sfx_STREAM, "sfx\\towners\\tavown15.wav", nullptr },// TSFX_TAVERN15 + { sfx_STREAM, "sfx\\towners\\tavown16.wav", nullptr },// TSFX_TAVERN16 + { sfx_STREAM, "sfx\\towners\\tavown17.wav", nullptr },// TSFX_TAVERN17 + { sfx_STREAM, "sfx\\towners\\tavown18.wav", nullptr },// TSFX_TAVERN18 + { sfx_STREAM, "sfx\\towners\\tavown19.wav", nullptr },// TSFX_TAVERN19 + { sfx_STREAM, "sfx\\towners\\tavown20.wav", nullptr },// TSFX_TAVERN20 + { sfx_STREAM, "sfx\\towners\\tavown21.wav", nullptr },// TSFX_TAVERN21 + { sfx_STREAM, "sfx\\towners\\tavown22.wav", nullptr },// TSFX_TAVERN22 + { sfx_STREAM, "sfx\\towners\\tavown23.wav", nullptr },// TSFX_TAVERN23 + { sfx_STREAM, "sfx\\towners\\tavown24.wav", nullptr },// TSFX_TAVERN24 + { sfx_STREAM, "sfx\\towners\\tavown25.wav", nullptr },// TSFX_TAVERN25 + { sfx_STREAM, "sfx\\towners\\tavown26.wav", nullptr },// TSFX_TAVERN26 + { sfx_STREAM, "sfx\\towners\\tavown27.wav", nullptr },// TSFX_TAVERN27 + { sfx_STREAM, "sfx\\towners\\tavown28.wav", nullptr },// TSFX_TAVERN28 + { sfx_STREAM, "sfx\\towners\\tavown29.wav", nullptr },// TSFX_TAVERN29 + { sfx_STREAM, "sfx\\towners\\tavown30.wav", nullptr },// TSFX_TAVERN30 + { sfx_STREAM, "sfx\\towners\\tavown31.wav", nullptr },// TSFX_TAVERN31 + { sfx_STREAM, "sfx\\towners\\tavown32.wav", nullptr },// TSFX_TAVERN32 + { sfx_STREAM, "sfx\\towners\\tavown33.wav", nullptr },// TSFX_TAVERN33 + { sfx_STREAM, "sfx\\towners\\tavown34.wav", nullptr },// TSFX_TAVERN34 + { sfx_STREAM, "sfx\\towners\\tavown35.wav", nullptr },// TSFX_TAVERN35 + { sfx_STREAM, "sfx\\towners\\tavown36.wav", nullptr },// TSFX_TAVERN36 + { sfx_STREAM, "sfx\\towners\\tavown37.wav", nullptr },// TSFX_TAVERN37 + { sfx_STREAM, "sfx\\towners\\tavown38.wav", nullptr },// TSFX_TAVERN38 + { sfx_STREAM, "sfx\\towners\\tavown39.wav", nullptr },// TSFX_TAVERN39 + { sfx_STREAM, "sfx\\towners\\tavown40.wav", nullptr },// TSFX_TAVERN40 + { sfx_STREAM, "sfx\\towners\\tavown41.wav", nullptr },// TSFX_TAVERN41 + { sfx_STREAM, "sfx\\towners\\tavown42.wav", nullptr },// TSFX_TAVERN42 + { sfx_STREAM, "sfx\\towners\\tavown43.wav", nullptr },// TSFX_TAVERN43 + { sfx_STREAM, "sfx\\towners\\tavown44.wav", nullptr },// TSFX_TAVERN44 + { sfx_STREAM, "sfx\\towners\\tavown45.wav", nullptr },// TSFX_TAVERN45 + { sfx_STREAM, "sfx\\towners\\witch01.wav", nullptr },// TSFX_WITCH1 + { sfx_STREAM, "sfx\\towners\\witch02.wav", nullptr },// TSFX_WITCH2 + { sfx_STREAM, "sfx\\towners\\witch03.wav", nullptr },// TSFX_WITCH3 + { sfx_STREAM, "sfx\\towners\\witch04.wav", nullptr },// TSFX_WITCH4 + { sfx_STREAM, "sfx\\towners\\witch05.wav", nullptr },// TSFX_WITCH5 + { sfx_STREAM, "sfx\\towners\\witch06.wav", nullptr },// TSFX_WITCH6 + { sfx_STREAM, "sfx\\towners\\witch07.wav", nullptr },// TSFX_WITCH7 + { sfx_STREAM, "sfx\\towners\\witch08.wav", nullptr },// TSFX_WITCH8 + { sfx_STREAM, "sfx\\towners\\witch09.wav", nullptr },// TSFX_WITCH9 + { sfx_STREAM, "sfx\\towners\\witch10.wav", nullptr },// TSFX_WITCH10 + { sfx_STREAM, "sfx\\towners\\witch11.wav", nullptr },// TSFX_WITCH11 + { sfx_STREAM, "sfx\\towners\\witch12.wav", nullptr },// TSFX_WITCH12 + { sfx_STREAM, "sfx\\towners\\witch13.wav", nullptr },// TSFX_WITCH13 + { sfx_STREAM, "sfx\\towners\\witch14.wav", nullptr },// TSFX_WITCH14 + { sfx_STREAM, "sfx\\towners\\witch15.wav", nullptr },// TSFX_WITCH15 + { sfx_STREAM, "sfx\\towners\\witch16.wav", nullptr },// TSFX_WITCH16 + { sfx_STREAM, "sfx\\towners\\witch17.wav", nullptr },// TSFX_WITCH17 + { sfx_STREAM, "sfx\\towners\\witch18.wav", nullptr },// TSFX_WITCH18 + { sfx_STREAM, "sfx\\towners\\witch19.wav", nullptr },// TSFX_WITCH19 + { sfx_STREAM, "sfx\\towners\\witch20.wav", nullptr },// TSFX_WITCH20 + { sfx_STREAM, "sfx\\towners\\witch21.wav", nullptr },// TSFX_WITCH21 + { sfx_STREAM, "sfx\\towners\\witch22.wav", nullptr },// TSFX_WITCH22 + { sfx_STREAM, "sfx\\towners\\witch23.wav", nullptr },// TSFX_WITCH23 + { sfx_STREAM, "sfx\\towners\\witch24.wav", nullptr },// TSFX_WITCH24 + { sfx_STREAM, "sfx\\towners\\witch25.wav", nullptr },// TSFX_WITCH25 + { sfx_STREAM, "sfx\\towners\\witch26.wav", nullptr },// TSFX_WITCH26 + { sfx_STREAM, "sfx\\towners\\witch27.wav", nullptr },// TSFX_WITCH27 + { sfx_STREAM, "sfx\\towners\\witch28.wav", nullptr },// TSFX_WITCH28 + { sfx_STREAM, "sfx\\towners\\witch29.wav", nullptr },// TSFX_WITCH29 + { sfx_STREAM, "sfx\\towners\\witch30.wav", nullptr },// TSFX_WITCH30 + { sfx_STREAM, "sfx\\towners\\witch31.wav", nullptr },// TSFX_WITCH31 + { sfx_STREAM, "sfx\\towners\\witch32.wav", nullptr },// TSFX_WITCH32 + { sfx_STREAM, "sfx\\towners\\witch33.wav", nullptr },// TSFX_WITCH33 + { sfx_STREAM, "sfx\\towners\\witch34.wav", nullptr },// TSFX_WITCH34 + { sfx_STREAM, "sfx\\towners\\witch35.wav", nullptr },// TSFX_WITCH35 + { sfx_STREAM, "sfx\\towners\\witch36.wav", nullptr },// TSFX_WITCH36 + { sfx_STREAM, "sfx\\towners\\witch37.wav", nullptr },// TSFX_WITCH37 + { sfx_STREAM, "sfx\\towners\\witch38.wav", nullptr },// TSFX_WITCH38 + { sfx_STREAM, "sfx\\towners\\witch39.wav", nullptr },// TSFX_WITCH39 + { sfx_STREAM, "sfx\\towners\\witch40.wav", nullptr },// TSFX_WITCH40 + { sfx_STREAM, "sfx\\towners\\witch41.wav", nullptr },// TSFX_WITCH41 + { sfx_STREAM, "sfx\\towners\\witch42.wav", nullptr },// TSFX_WITCH42 + { sfx_STREAM, "sfx\\towners\\witch43.wav", nullptr },// TSFX_WITCH43 + { sfx_STREAM, "sfx\\towners\\witch44.wav", nullptr },// TSFX_WITCH44 + { sfx_STREAM, "sfx\\towners\\witch45.wav", nullptr },// TSFX_WITCH45 + { sfx_STREAM, "sfx\\towners\\witch46.wav", nullptr },// TSFX_WITCH46 + { sfx_STREAM, "sfx\\towners\\witch47.wav", nullptr },// TSFX_WITCH47 + { sfx_STREAM, "sfx\\towners\\witch48.wav", nullptr },// TSFX_WITCH48 + { sfx_STREAM, "sfx\\towners\\witch49.wav", nullptr },// TSFX_WITCH49 + { sfx_STREAM, "sfx\\towners\\witch50.wav", nullptr },// TSFX_WITCH50 + { sfx_STREAM, "sfx\\towners\\wound01.wav", nullptr },// TSFX_WOUND + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage01.wav", nullptr },// PS_MAGE1 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage02.wav", nullptr },// PS_MAGE2 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage03.wav", nullptr },// PS_MAGE3 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage04.wav", nullptr },// PS_MAGE4 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage05.wav", nullptr },// PS_MAGE5 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage06.wav", nullptr },// PS_MAGE6 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage07.wav", nullptr },// PS_MAGE7 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage08.wav", nullptr },// PS_MAGE8 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage09.wav", nullptr },// PS_MAGE9 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage10.wav", nullptr },// PS_MAGE10 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage11.wav", nullptr },// PS_MAGE11 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage12.wav", nullptr },// PS_MAGE12 + { sfx_SORCERER, "sfx\\sorceror\\mage13.wav", nullptr },// PS_MAGE13 + { sfx_SORCERER, "sfx\\sorceror\\mage14.wav", nullptr },// PS_MAGE14 + { sfx_SORCERER, "sfx\\sorceror\\mage15.wav", nullptr },// PS_MAGE15 + { sfx_SORCERER, "sfx\\sorceror\\mage16.wav", nullptr },// PS_MAGE16 + { sfx_SORCERER, "sfx\\sorceror\\mage17.wav", nullptr },// PS_MAGE17 + { sfx_SORCERER, "sfx\\sorceror\\mage18.wav", nullptr },// PS_MAGE18 + { sfx_SORCERER, "sfx\\sorceror\\mage19.wav", nullptr },// PS_MAGE19 + { sfx_SORCERER, "sfx\\sorceror\\mage20.wav", nullptr },// PS_MAGE20 + { sfx_SORCERER, "sfx\\sorceror\\mage21.wav", nullptr },// PS_MAGE21 + { sfx_SORCERER, "sfx\\sorceror\\mage22.wav", nullptr },// PS_MAGE22 + { sfx_SORCERER, "sfx\\sorceror\\mage23.wav", nullptr },// PS_MAGE23 + { sfx_SORCERER, "sfx\\sorceror\\mage24.wav", nullptr },// PS_MAGE24 + { sfx_SORCERER, "sfx\\sorceror\\mage25.wav", nullptr },// PS_MAGE25 + { sfx_SORCERER, "sfx\\sorceror\\mage26.wav", nullptr },// PS_MAGE26 + { sfx_SORCERER, "sfx\\sorceror\\mage27.wav", nullptr },// PS_MAGE27 + { sfx_SORCERER, "sfx\\sorceror\\mage28.wav", nullptr },// PS_MAGE28 + { sfx_SORCERER, "sfx\\sorceror\\mage29.wav", nullptr },// PS_MAGE29 + { sfx_SORCERER, "sfx\\sorceror\\mage30.wav", nullptr },// PS_MAGE30 + { sfx_SORCERER, "sfx\\sorceror\\mage31.wav", nullptr },// PS_MAGE31 + { sfx_SORCERER, "sfx\\sorceror\\mage32.wav", nullptr },// PS_MAGE32 + { sfx_SORCERER, "sfx\\sorceror\\mage33.wav", nullptr },// PS_MAGE33 + { sfx_SORCERER, "sfx\\sorceror\\mage34.wav", nullptr },// PS_MAGE34 + { sfx_SORCERER, "sfx\\sorceror\\mage35.wav", nullptr },// PS_MAGE35 + { sfx_SORCERER, "sfx\\sorceror\\mage36.wav", nullptr },// PS_MAGE36 + { sfx_SORCERER, "sfx\\sorceror\\mage37.wav", nullptr },// PS_MAGE37 + { sfx_SORCERER, "sfx\\sorceror\\mage38.wav", nullptr },// PS_MAGE38 + { sfx_SORCERER, "sfx\\sorceror\\mage39.wav", nullptr },// PS_MAGE39 + { sfx_SORCERER, "sfx\\sorceror\\mage40.wav", nullptr },// PS_MAGE40 + { sfx_SORCERER, "sfx\\sorceror\\mage41.wav", nullptr },// PS_MAGE41 + { sfx_SORCERER, "sfx\\sorceror\\mage42.wav", nullptr },// PS_MAGE42 + { sfx_SORCERER, "sfx\\sorceror\\mage43.wav", nullptr },// PS_MAGE43 + { sfx_SORCERER, "sfx\\sorceror\\mage44.wav", nullptr },// PS_MAGE44 + { sfx_SORCERER, "sfx\\sorceror\\mage45.wav", nullptr },// PS_MAGE45 + { sfx_SORCERER, "sfx\\sorceror\\mage46.wav", nullptr },// PS_MAGE46 + { sfx_SORCERER, "sfx\\sorceror\\mage47.wav", nullptr },// PS_MAGE47 + { sfx_SORCERER, "sfx\\sorceror\\mage48.wav", nullptr },// PS_MAGE48 + { sfx_SORCERER, "sfx\\sorceror\\mage49.wav", nullptr },// PS_MAGE49 + { sfx_SORCERER, "sfx\\sorceror\\mage50.wav", nullptr },// PS_MAGE50 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage51.wav", nullptr },// PS_MAGE51 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage52.wav", nullptr },// PS_MAGE52 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage53.wav", nullptr },// PS_MAGE53 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage54.wav", nullptr },// PS_MAGE54 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage55.wav", nullptr },// PS_MAGE55 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage56.wav", nullptr },// PS_MAGE56 + { sfx_SORCERER, "sfx\\sorceror\\mage57.wav", nullptr },// PS_MAGE57 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage58.wav", nullptr },// PS_MAGE58 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage59.wav", nullptr },// PS_MAGE59 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage60.wav", nullptr },// PS_MAGE60 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage61.wav", nullptr },// PS_MAGE61 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage62.wav", nullptr },// PS_MAGE62 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage63.wav", nullptr },// PS_MAGE63 + { sfx_SORCERER, "sfx\\sorceror\\mage64.wav", nullptr },// PS_MAGE64 + { sfx_SORCERER, "sfx\\sorceror\\mage65.wav", nullptr },// PS_MAGE65 + { sfx_SORCERER, "sfx\\sorceror\\mage66.wav", nullptr },// PS_MAGE66 + { sfx_SORCERER, "sfx\\sorceror\\mage67.wav", nullptr },// PS_MAGE67 + { sfx_SORCERER, "sfx\\sorceror\\mage68.wav", nullptr },// PS_MAGE68 + { sfx_SORCERER, "sfx\\sorceror\\mage69.wav", nullptr },// PS_MAGE69 + { sfx_SORCERER, "sfx\\sorceror\\mage69b.wav", nullptr },// PS_MAGE69B + { sfx_SORCERER, "sfx\\sorceror\\mage70.wav", nullptr },// PS_MAGE70 + { sfx_SORCERER, "sfx\\sorceror\\mage71.wav", nullptr },// PS_MAGE71 + { sfx_SORCERER, "sfx\\sorceror\\mage72.wav", nullptr },// PS_MAGE72 + { sfx_SORCERER, "sfx\\sorceror\\mage73.wav", nullptr },// PS_MAGE73 + { sfx_SORCERER, "sfx\\sorceror\\mage74.wav", nullptr },// PS_MAGE74 + { sfx_SORCERER, "sfx\\sorceror\\mage75.wav", nullptr },// PS_MAGE75 + { sfx_SORCERER, "sfx\\sorceror\\mage76.wav", nullptr },// PS_MAGE76 + { sfx_SORCERER, "sfx\\sorceror\\mage77.wav", nullptr },// PS_MAGE77 + { sfx_SORCERER, "sfx\\sorceror\\mage78.wav", nullptr },// PS_MAGE78 + { sfx_SORCERER, "sfx\\sorceror\\mage79.wav", nullptr },// PS_MAGE79 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage80.wav", nullptr },// PS_MAGE80 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage81.wav", nullptr },// PS_MAGE81 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage82.wav", nullptr },// PS_MAGE82 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage83.wav", nullptr },// PS_MAGE83 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage84.wav", nullptr },// PS_MAGE84 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage85.wav", nullptr },// PS_MAGE85 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage86.wav", nullptr },// PS_MAGE86 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage87.wav", nullptr },// PS_MAGE87 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage88.wav", nullptr },// PS_MAGE88 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage89.wav", nullptr },// PS_MAGE89 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage90.wav", nullptr },// PS_MAGE90 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage91.wav", nullptr },// PS_MAGE91 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage92.wav", nullptr },// PS_MAGE92 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage93.wav", nullptr },// PS_MAGE93 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage94.wav", nullptr },// PS_MAGE94 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage95.wav", nullptr },// PS_MAGE95 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage96.wav", nullptr },// PS_MAGE96 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage97.wav", nullptr },// PS_MAGE97 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage98.wav", nullptr },// PS_MAGE98 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage99.wav", nullptr },// PS_MAGE99 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage100.wav", nullptr },// PS_MAGE100 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage101.wav", nullptr },// PS_MAGE101 + { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage102.wav", nullptr },// PS_MAGE102 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue01.wav", nullptr },// PS_ROGUE1 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue02.wav", nullptr },// PS_ROGUE2 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue03.wav", nullptr },// PS_ROGUE3 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue04.wav", nullptr },// PS_ROGUE4 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue05.wav", nullptr },// PS_ROGUE5 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue06.wav", nullptr },// PS_ROGUE6 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue07.wav", nullptr },// PS_ROGUE7 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue08.wav", nullptr },// PS_ROGUE8 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue09.wav", nullptr },// PS_ROGUE9 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue10.wav", nullptr },// PS_ROGUE10 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue11.wav", nullptr },// PS_ROGUE11 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue12.wav", nullptr },// PS_ROGUE12 + { sfx_ROGUE, "sfx\\rogue\\rogue13.wav", nullptr },// PS_ROGUE13 + { sfx_ROGUE, "sfx\\rogue\\rogue14.wav", nullptr },// PS_ROGUE14 + { sfx_ROGUE, "sfx\\rogue\\rogue15.wav", nullptr },// PS_ROGUE15 + { sfx_ROGUE, "sfx\\rogue\\rogue16.wav", nullptr },// PS_ROGUE16 + { sfx_ROGUE, "sfx\\rogue\\rogue17.wav", nullptr },// PS_ROGUE17 + { sfx_ROGUE, "sfx\\rogue\\rogue18.wav", nullptr },// PS_ROGUE18 + { sfx_ROGUE, "sfx\\rogue\\rogue19.wav", nullptr },// PS_ROGUE19 + { sfx_ROGUE, "sfx\\rogue\\rogue20.wav", nullptr },// PS_ROGUE20 + { sfx_ROGUE, "sfx\\rogue\\rogue21.wav", nullptr },// PS_ROGUE21 + { sfx_ROGUE, "sfx\\rogue\\rogue22.wav", nullptr },// PS_ROGUE22 + { sfx_ROGUE, "sfx\\rogue\\rogue23.wav", nullptr },// PS_ROGUE23 + { sfx_ROGUE, "sfx\\rogue\\rogue24.wav", nullptr },// PS_ROGUE24 + { sfx_ROGUE, "sfx\\rogue\\rogue25.wav", nullptr },// PS_ROGUE25 + { sfx_ROGUE, "sfx\\rogue\\rogue26.wav", nullptr },// PS_ROGUE26 + { sfx_ROGUE, "sfx\\rogue\\rogue27.wav", nullptr },// PS_ROGUE27 + { sfx_ROGUE, "sfx\\rogue\\rogue28.wav", nullptr },// PS_ROGUE28 + { sfx_ROGUE, "sfx\\rogue\\rogue29.wav", nullptr },// PS_ROGUE29 + { sfx_ROGUE, "sfx\\rogue\\rogue30.wav", nullptr },// PS_ROGUE30 + { sfx_ROGUE, "sfx\\rogue\\rogue31.wav", nullptr },// PS_ROGUE31 + { sfx_ROGUE, "sfx\\rogue\\rogue32.wav", nullptr },// PS_ROGUE32 + { sfx_ROGUE, "sfx\\rogue\\rogue33.wav", nullptr },// PS_ROGUE33 + { sfx_ROGUE, "sfx\\rogue\\rogue34.wav", nullptr },// PS_ROGUE34 + { sfx_ROGUE, "sfx\\rogue\\rogue35.wav", nullptr },// PS_ROGUE35 + { sfx_ROGUE, "sfx\\rogue\\rogue36.wav", nullptr },// PS_ROGUE36 + { sfx_ROGUE, "sfx\\rogue\\rogue37.wav", nullptr },// PS_ROGUE37 + { sfx_ROGUE, "sfx\\rogue\\rogue38.wav", nullptr },// PS_ROGUE38 + { sfx_ROGUE, "sfx\\rogue\\rogue39.wav", nullptr },// PS_ROGUE39 + { sfx_ROGUE, "sfx\\rogue\\rogue40.wav", nullptr },// PS_ROGUE40 + { sfx_ROGUE, "sfx\\rogue\\rogue41.wav", nullptr },// PS_ROGUE41 + { sfx_ROGUE, "sfx\\rogue\\rogue42.wav", nullptr },// PS_ROGUE42 + { sfx_ROGUE, "sfx\\rogue\\rogue43.wav", nullptr },// PS_ROGUE43 + { sfx_ROGUE, "sfx\\rogue\\rogue44.wav", nullptr },// PS_ROGUE44 + { sfx_ROGUE, "sfx\\rogue\\rogue45.wav", nullptr },// PS_ROGUE45 + { sfx_ROGUE, "sfx\\rogue\\rogue46.wav", nullptr },// PS_ROGUE46 + { sfx_ROGUE, "sfx\\rogue\\rogue47.wav", nullptr },// PS_ROGUE47 + { sfx_ROGUE, "sfx\\rogue\\rogue48.wav", nullptr },// PS_ROGUE48 + { sfx_ROGUE, "sfx\\rogue\\rogue49.wav", nullptr },// PS_ROGUE49 + { sfx_ROGUE, "sfx\\rogue\\rogue50.wav", nullptr },// PS_ROGUE50 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue51.wav", nullptr },// PS_ROGUE51 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue52.wav", nullptr },// PS_ROGUE52 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue53.wav", nullptr },// PS_ROGUE53 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue54.wav", nullptr },// PS_ROGUE54 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue55.wav", nullptr },// PS_ROGUE55 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue56.wav", nullptr },// PS_ROGUE56 + { sfx_ROGUE, "sfx\\rogue\\rogue57.wav", nullptr },// PS_ROGUE57 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue58.wav", nullptr },// PS_ROGUE58 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue59.wav", nullptr },// PS_ROGUE59 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue60.wav", nullptr },// PS_ROGUE60 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue61.wav", nullptr },// PS_ROGUE61 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue62.wav", nullptr },// PS_ROGUE62 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue63.wav", nullptr },// PS_ROGUE63 + { sfx_ROGUE, "sfx\\rogue\\rogue64.wav", nullptr },// PS_ROGUE64 + { sfx_ROGUE, "sfx\\rogue\\rogue65.wav", nullptr },// PS_ROGUE65 + { sfx_ROGUE, "sfx\\rogue\\rogue66.wav", nullptr },// PS_ROGUE66 + { sfx_ROGUE, "sfx\\rogue\\rogue67.wav", nullptr },// PS_ROGUE67 + { sfx_ROGUE, "sfx\\rogue\\rogue68.wav", nullptr },// PS_ROGUE68 + { sfx_ROGUE, "sfx\\rogue\\rogue69.wav", nullptr },// PS_ROGUE69 + { sfx_ROGUE, "sfx\\rogue\\rogue69b.wav", nullptr },// PS_ROGUE69B + { sfx_ROGUE, "sfx\\rogue\\rogue70.wav", nullptr },// PS_ROGUE70 + { sfx_ROGUE, "sfx\\rogue\\rogue71.wav", nullptr },// PS_ROGUE71 + { sfx_ROGUE, "sfx\\rogue\\rogue72.wav", nullptr },// PS_ROGUE72 + { sfx_ROGUE, "sfx\\rogue\\rogue73.wav", nullptr },// PS_ROGUE73 + { sfx_ROGUE, "sfx\\rogue\\rogue74.wav", nullptr },// PS_ROGUE74 + { sfx_ROGUE, "sfx\\rogue\\rogue75.wav", nullptr },// PS_ROGUE75 + { sfx_ROGUE, "sfx\\rogue\\rogue76.wav", nullptr },// PS_ROGUE76 + { sfx_ROGUE, "sfx\\rogue\\rogue77.wav", nullptr },// PS_ROGUE77 + { sfx_ROGUE, "sfx\\rogue\\rogue78.wav", nullptr },// PS_ROGUE78 + { sfx_ROGUE, "sfx\\rogue\\rogue79.wav", nullptr },// PS_ROGUE79 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue80.wav", nullptr },// PS_ROGUE80 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue81.wav", nullptr },// PS_ROGUE81 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue82.wav", nullptr },// PS_ROGUE82 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue83.wav", nullptr },// PS_ROGUE83 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue84.wav", nullptr },// PS_ROGUE84 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue85.wav", nullptr },// PS_ROGUE85 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue86.wav", nullptr },// PS_ROGUE86 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue87.wav", nullptr },// PS_ROGUE87 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue88.wav", nullptr },// PS_ROGUE88 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue89.wav", nullptr },// PS_ROGUE89 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue90.wav", nullptr },// PS_ROGUE90 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue91.wav", nullptr },// PS_ROGUE91 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue92.wav", nullptr },// PS_ROGUE92 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue93.wav", nullptr },// PS_ROGUE93 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue94.wav", nullptr },// PS_ROGUE94 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue95.wav", nullptr },// PS_ROGUE95 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue96.wav", nullptr },// PS_ROGUE96 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue97.wav", nullptr },// PS_ROGUE97 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue98.wav", nullptr },// PS_ROGUE98 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue99.wav", nullptr },// PS_ROGUE99 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue100.wav", nullptr },// PS_ROGUE100 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue101.wav", nullptr },// PS_ROGUE101 + { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue102.wav", nullptr },// PS_ROGUE102 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior01.wav", nullptr },// PS_WARR1 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior02.wav", nullptr },// PS_WARR2 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior03.wav", nullptr },// PS_WARR3 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior04.wav", nullptr },// PS_WARR4 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior05.wav", nullptr },// PS_WARR5 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior06.wav", nullptr },// PS_WARR6 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior07.wav", nullptr },// PS_WARR7 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior08.wav", nullptr },// PS_WARR8 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior09.wav", nullptr },// PS_WARR9 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior10.wav", nullptr },// PS_WARR10 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior11.wav", nullptr },// PS_WARR11 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior12.wav", nullptr },// PS_WARR12 + { sfx_WARRIOR, "sfx\\warrior\\warior13.wav", nullptr },// PS_WARR13 + { sfx_WARRIOR, "sfx\\warrior\\warior14.wav", nullptr },// PS_WARR14 + { sfx_WARRIOR, "sfx\\warrior\\wario14b.wav", nullptr },// PS_WARR14B + { sfx_WARRIOR, "sfx\\warrior\\wario14c.wav", nullptr },// PS_WARR14C + { sfx_WARRIOR, "sfx\\warrior\\warior15.wav", nullptr },// PS_WARR15 + { sfx_WARRIOR, "sfx\\warrior\\wario15b.wav", nullptr },// PS_WARR15B + { sfx_WARRIOR, "sfx\\warrior\\wario15c.wav", nullptr },// PS_WARR15C + { sfx_WARRIOR, "sfx\\warrior\\warior16.wav", nullptr },// PS_WARR16 + { sfx_WARRIOR, "sfx\\warrior\\wario16b.wav", nullptr },// PS_WARR16B + { sfx_WARRIOR, "sfx\\warrior\\wario16c.wav", nullptr },// PS_WARR16C + { sfx_WARRIOR, "sfx\\warrior\\warior17.wav", nullptr },// PS_WARR17 + { sfx_WARRIOR, "sfx\\warrior\\warior18.wav", nullptr },// PS_WARR18 + { sfx_WARRIOR, "sfx\\warrior\\warior19.wav", nullptr },// PS_WARR19 + { sfx_WARRIOR, "sfx\\warrior\\warior20.wav", nullptr },// PS_WARR20 + { sfx_WARRIOR, "sfx\\warrior\\warior21.wav", nullptr },// PS_WARR21 + { sfx_WARRIOR, "sfx\\warrior\\warior22.wav", nullptr },// PS_WARR22 + { sfx_WARRIOR, "sfx\\warrior\\warior23.wav", nullptr },// PS_WARR23 + { sfx_WARRIOR, "sfx\\warrior\\warior24.wav", nullptr },// PS_WARR24 + { sfx_WARRIOR, "sfx\\warrior\\warior25.wav", nullptr },// PS_WARR25 + { sfx_WARRIOR, "sfx\\warrior\\warior26.wav", nullptr },// PS_WARR26 + { sfx_WARRIOR, "sfx\\warrior\\warior27.wav", nullptr },// PS_WARR27 + { sfx_WARRIOR, "sfx\\warrior\\warior28.wav", nullptr },// PS_WARR28 + { sfx_WARRIOR, "sfx\\warrior\\warior29.wav", nullptr },// PS_WARR29 + { sfx_WARRIOR, "sfx\\warrior\\warior30.wav", nullptr },// PS_WARR30 + { sfx_WARRIOR, "sfx\\warrior\\warior31.wav", nullptr },// PS_WARR31 + { sfx_WARRIOR, "sfx\\warrior\\warior32.wav", nullptr },// PS_WARR32 + { sfx_WARRIOR, "sfx\\warrior\\warior33.wav", nullptr },// PS_WARR33 + { sfx_WARRIOR, "sfx\\warrior\\warior34.wav", nullptr },// PS_WARR34 + { sfx_WARRIOR, "sfx\\warrior\\warior35.wav", nullptr },// PS_WARR35 + { sfx_WARRIOR, "sfx\\warrior\\warior36.wav", nullptr },// PS_WARR36 + { sfx_WARRIOR, "sfx\\warrior\\warior37.wav", nullptr },// PS_WARR37 + { sfx_WARRIOR, "sfx\\warrior\\warior38.wav", nullptr },// PS_WARR38 + { sfx_WARRIOR, "sfx\\warrior\\warior39.wav", nullptr },// PS_WARR39 + { sfx_WARRIOR, "sfx\\warrior\\warior40.wav", nullptr },// PS_WARR40 + { sfx_WARRIOR, "sfx\\warrior\\warior41.wav", nullptr },// PS_WARR41 + { sfx_WARRIOR, "sfx\\warrior\\warior42.wav", nullptr },// PS_WARR42 + { sfx_WARRIOR, "sfx\\warrior\\warior43.wav", nullptr },// PS_WARR43 + { sfx_WARRIOR, "sfx\\warrior\\warior44.wav", nullptr },// PS_WARR44 + { sfx_WARRIOR, "sfx\\warrior\\warior45.wav", nullptr },// PS_WARR45 + { sfx_WARRIOR, "sfx\\warrior\\warior46.wav", nullptr },// PS_WARR46 + { sfx_WARRIOR, "sfx\\warrior\\warior47.wav", nullptr },// PS_WARR47 + { sfx_WARRIOR, "sfx\\warrior\\warior48.wav", nullptr },// PS_WARR48 + { sfx_WARRIOR, "sfx\\warrior\\warior49.wav", nullptr },// PS_WARR49 + { sfx_WARRIOR, "sfx\\warrior\\warior50.wav", nullptr },// PS_WARR50 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior51.wav", nullptr },// PS_WARR51 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior52.wav", nullptr },// PS_WARR52 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior53.wav", nullptr },// PS_WARR53 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior54.wav", nullptr },// PS_WARR54 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior55.wav", nullptr },// PS_WARR55 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior56.wav", nullptr },// PS_WARR56 + { sfx_WARRIOR, "sfx\\warrior\\warior57.wav", nullptr },// PS_WARR57 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior58.wav", nullptr },// PS_WARR58 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior59.wav", nullptr },// PS_WARR59 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior60.wav", nullptr },// PS_WARR60 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior61.wav", nullptr },// PS_WARR61 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior62.wav", nullptr },// PS_WARR62 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior63.wav", nullptr },// PS_WARR63 + { sfx_WARRIOR, "sfx\\warrior\\warior64.wav", nullptr },// PS_WARR64 + { sfx_WARRIOR, "sfx\\warrior\\warior65.wav", nullptr },// PS_WARR65 + { sfx_WARRIOR, "sfx\\warrior\\warior66.wav", nullptr },// PS_WARR66 + { sfx_WARRIOR, "sfx\\warrior\\warior67.wav", nullptr },// PS_WARR67 + { sfx_WARRIOR, "sfx\\warrior\\warior68.wav", nullptr },// PS_WARR68 + { sfx_WARRIOR, "sfx\\warrior\\warior69.wav", nullptr },// PS_WARR69 + { sfx_WARRIOR, "sfx\\warrior\\wario69b.wav", nullptr },// PS_WARR69B + { sfx_WARRIOR, "sfx\\warrior\\warior70.wav", nullptr },// PS_WARR70 + { sfx_WARRIOR, "sfx\\warrior\\warior71.wav", nullptr },// PS_WARR71 + { sfx_WARRIOR, "sfx\\warrior\\warior72.wav", nullptr },// PS_WARR72 + { sfx_WARRIOR, "sfx\\warrior\\warior73.wav", nullptr },// PS_WARR73 + { sfx_WARRIOR, "sfx\\warrior\\warior74.wav", nullptr },// PS_WARR74 + { sfx_WARRIOR, "sfx\\warrior\\warior75.wav", nullptr },// PS_WARR75 + { sfx_WARRIOR, "sfx\\warrior\\warior76.wav", nullptr },// PS_WARR76 + { sfx_WARRIOR, "sfx\\warrior\\warior77.wav", nullptr },// PS_WARR77 + { sfx_WARRIOR, "sfx\\warrior\\warior78.wav", nullptr },// PS_WARR78 + { sfx_WARRIOR, "sfx\\warrior\\warior79.wav", nullptr },// PS_WARR79 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior80.wav", nullptr },// PS_WARR80 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior81.wav", nullptr },// PS_WARR81 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior82.wav", nullptr },// PS_WARR82 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior83.wav", nullptr },// PS_WARR83 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior84.wav", nullptr },// PS_WARR84 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior85.wav", nullptr },// PS_WARR85 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior86.wav", nullptr },// PS_WARR86 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior87.wav", nullptr },// PS_WARR87 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior88.wav", nullptr },// PS_WARR88 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior89.wav", nullptr },// PS_WARR89 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior90.wav", nullptr },// PS_WARR90 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior91.wav", nullptr },// PS_WARR91 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior92.wav", nullptr },// PS_WARR92 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior93.wav", nullptr },// PS_WARR93 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior94.wav", nullptr },// PS_WARR94 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior95.wav", nullptr },// PS_WARR95 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95b.wav", nullptr },// PS_WARR95B + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95c.wav", nullptr },// PS_WARR95C + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95d.wav", nullptr },// PS_WARR95D + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95e.wav", nullptr },// PS_WARR95E + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95f.wav", nullptr },// PS_WARR95F + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario96b.wav", nullptr },// PS_WARR96B + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario97.wav", nullptr },// PS_WARR97 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario98.wav", nullptr },// PS_WARR98 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior99.wav", nullptr },// PS_WARR99 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario100.wav", nullptr },// PS_WARR100 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario101.wav", nullptr },// PS_WARR101 + { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario102.wav", nullptr },// PS_WARR102 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk01.wav", nullptr },// PS_MONK1 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK2 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK3 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK4 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK5 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK6 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK7 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk08.wav", nullptr },// PS_MONK8 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk09.wav", nullptr },// PS_MONK9 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk10.wav", nullptr },// PS_MONK10 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk11.wav", nullptr },// PS_MONK11 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk12.wav", nullptr },// PS_MONK12 + { sfx_MONK, "sfx\\monk\\monk13.wav", nullptr },// PS_MONK13 + { sfx_MONK, "sfx\\monk\\monk14.wav", nullptr },// PS_MONK14 + { sfx_MONK, "sfx\\monk\\monk15.wav", nullptr },// PS_MONK15 + { sfx_MONK, "sfx\\monk\\monk16.wav", nullptr },// PS_MONK16 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK17 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK18 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK19 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK20 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK21 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK22 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK23 + { sfx_MONK, "sfx\\monk\\monk24.wav", nullptr },// PS_MONK24 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK25 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK26 + { sfx_MONK, "sfx\\monk\\monk27.wav", nullptr },// PS_MONK27 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK28 + { sfx_MONK, "sfx\\monk\\monk29.wav", nullptr },// PS_MONK29 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK30 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK31 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK32 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK33 + { sfx_MONK, "sfx\\monk\\monk34.wav", nullptr },// PS_MONK34 + { sfx_MONK, "sfx\\monk\\monk35.wav", nullptr },// PS_MONK35 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK36 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK37 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK38 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK39 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK40 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK41 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK42 + { sfx_MONK, "sfx\\monk\\monk43.wav", nullptr },// PS_MONK43 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK44 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK45 + { sfx_MONK, "sfx\\monk\\monk46.wav", nullptr },// PS_MONK46 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK47 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK48 + { sfx_MONK, "sfx\\monk\\monk49.wav", nullptr },// PS_MONK49 + { sfx_MONK, "sfx\\monk\\monk50.wav", nullptr },// PS_MONK50 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK51 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk52.wav", nullptr },// PS_MONK52 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK53 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk54.wav", nullptr },// PS_MONK54 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk55.wav", nullptr },// PS_MONK55 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk56.wav", nullptr },// PS_MONK56 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK57 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK58 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK59 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK60 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk61.wav", nullptr },// PS_MONK61 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk62.wav", nullptr },// PS_MONK62 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK63 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK64 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK65 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK66 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK67 + { sfx_MONK, "sfx\\monk\\monk68.wav", nullptr },// PS_MONK68 + { sfx_MONK, "sfx\\monk\\monk69.wav", nullptr },// PS_MONK69 + { sfx_MONK, "sfx\\monk\\monk69b.wav", nullptr },// PS_MONK69B + { sfx_MONK, "sfx\\monk\\monk70.wav", nullptr },// PS_MONK70 + { sfx_MONK, "sfx\\monk\\monk71.wav", nullptr },// PS_MONK71 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK72 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK73 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK74 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK75 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK76 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK77 + { sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK78 + { sfx_MONK, "sfx\\monk\\monk79.wav", nullptr },// PS_MONK79 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk80.wav", nullptr },// PS_MONK80 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK81 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk82.wav", nullptr },// PS_MONK82 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk83.wav", nullptr },// PS_MONK83 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK84 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK85 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK86 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk87.wav", nullptr },// PS_MONK87 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk88.wav", nullptr },// PS_MONK88 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk89.wav", nullptr },// PS_MONK89 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK90 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk91.wav", nullptr },// PS_MONK91 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk92.wav", nullptr },// PS_MONK92 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK93 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk94.wav", nullptr },// PS_MONK94 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk95.wav", nullptr },// PS_MONK95 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk96.wav", nullptr },// PS_MONK96 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk97.wav", nullptr },// PS_MONK97 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk98.wav", nullptr },// PS_MONK98 + { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk99.wav", nullptr },// PS_MONK99 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK100 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK101 + { sfx_STREAM | sfx_MONK, "sfx\\misc\\blank.wav", nullptr },// PS_MONK102 + { sfx_STREAM, "sfx\\narrator\\nar01.wav", nullptr },// PS_NAR1 + { sfx_STREAM, "sfx\\narrator\\nar02.wav", nullptr },// PS_NAR2 + { sfx_STREAM, "sfx\\narrator\\nar03.wav", nullptr },// PS_NAR3 + { sfx_STREAM, "sfx\\narrator\\nar04.wav", nullptr },// PS_NAR4 + { sfx_STREAM, "sfx\\narrator\\nar05.wav", nullptr },// PS_NAR5 + { sfx_STREAM, "sfx\\narrator\\nar06.wav", nullptr },// PS_NAR6 + { sfx_STREAM, "sfx\\narrator\\nar07.wav", nullptr },// PS_NAR7 + { sfx_STREAM, "sfx\\narrator\\nar08.wav", nullptr },// PS_NAR8 + { sfx_STREAM, "sfx\\narrator\\nar09.wav", nullptr },// PS_NAR9 + { sfx_STREAM, "sfx\\misc\\lvl16int.wav", nullptr },// PS_DIABLVLINT + { sfx_STREAM, "sfx\\monsters\\butcher.wav", nullptr },// USFX_CLEAVER + { sfx_STREAM, "sfx\\monsters\\garbud01.wav", nullptr },// USFX_GARBUD1 + { sfx_STREAM, "sfx\\monsters\\garbud02.wav", nullptr },// USFX_GARBUD2 + { sfx_STREAM, "sfx\\monsters\\garbud03.wav", nullptr },// USFX_GARBUD3 + { sfx_STREAM, "sfx\\monsters\\garbud04.wav", nullptr },// USFX_GARBUD4 + { sfx_STREAM, "sfx\\monsters\\izual01.wav", nullptr },// USFX_IZUAL1 + { sfx_STREAM, "sfx\\monsters\\lach01.wav", nullptr },// USFX_LACH1 + { sfx_STREAM, "sfx\\monsters\\lach02.wav", nullptr },// USFX_LACH2 + { sfx_STREAM, "sfx\\monsters\\lach03.wav", nullptr },// USFX_LACH3 + { sfx_STREAM, "sfx\\monsters\\laz01.wav", nullptr },// USFX_LAZ1 + { sfx_STREAM, "sfx\\monsters\\laz02.wav", nullptr },// USFX_LAZ2 + { sfx_STREAM, "sfx\\monsters\\sking01.wav", nullptr },// USFX_SKING1 + { sfx_STREAM, "sfx\\monsters\\snot01.wav", nullptr },// USFX_SNOT1 + { sfx_STREAM, "sfx\\monsters\\snot02.wav", nullptr },// USFX_SNOT2 + { sfx_STREAM, "sfx\\monsters\\snot03.wav", nullptr },// USFX_SNOT3 + { sfx_STREAM, "sfx\\monsters\\warlrd01.wav", nullptr },// USFX_WARLRD1 + { sfx_STREAM, "sfx\\monsters\\wlock01.wav", nullptr },// USFX_WLOCK1 + { sfx_STREAM, "sfx\\monsters\\zhar01.wav", nullptr },// USFX_ZHAR1 + { sfx_STREAM, "sfx\\monsters\\zhar02.wav", nullptr },// USFX_ZHAR2 + { sfx_STREAM, "sfx\\monsters\\diablod.wav", nullptr },// USFX_DIABLOD + { sfx_STREAM, "sfx\\hellfire\\farmer1.wav", nullptr },// TSFX_FARMER1 + { sfx_STREAM, "sfx\\hellfire\\farmer2.wav", nullptr },// TSFX_FARMER2 + { sfx_STREAM, "sfx\\hellfire\\farmer2a.wav", nullptr },// TSFX_FARMER2A + { sfx_STREAM, "sfx\\hellfire\\farmer3.wav", nullptr },// TSFX_FARMER3 + { sfx_STREAM, "sfx\\hellfire\\farmer4.wav", nullptr },// TSFX_FARMER4 + { sfx_STREAM, "sfx\\hellfire\\farmer5.wav", nullptr },// TSFX_FARMER5 + { sfx_STREAM, "sfx\\hellfire\\farmer6.wav", nullptr },// TSFX_FARMER6 + { sfx_STREAM, "sfx\\hellfire\\farmer7.wav", nullptr },// TSFX_FARMER7 + { sfx_STREAM, "sfx\\hellfire\\farmer8.wav", nullptr },// TSFX_FARMER8 + { sfx_STREAM, "sfx\\hellfire\\farmer9.wav", nullptr },// TSFX_FARMER9 + { sfx_STREAM, "sfx\\hellfire\\teddybr1.wav", nullptr },// TSFX_TEDDYBR1 + { sfx_STREAM, "sfx\\hellfire\\teddybr2.wav", nullptr },// TSFX_TEDDYBR2 + { sfx_STREAM, "sfx\\hellfire\\teddybr3.wav", nullptr },// TSFX_TEDDYBR3 + { sfx_STREAM, "sfx\\hellfire\\teddybr4.wav", nullptr },// TSFX_TEDDYBR4 + { sfx_STREAM, "sfx\\hellfire\\defiler1.wav", nullptr },// USFX_DEFILER1 + { sfx_STREAM, "sfx\\hellfire\\defiler2.wav", nullptr },// USFX_DEFILER2 + { sfx_STREAM, "sfx\\hellfire\\defiler3.wav", nullptr },// USFX_DEFILER3 + { sfx_STREAM, "sfx\\hellfire\\defiler4.wav", nullptr },// USFX_DEFILER4 + { sfx_STREAM, "sfx\\hellfire\\defiler8.wav", nullptr },// USFX_DEFILER8 + { sfx_STREAM, "sfx\\hellfire\\defiler6.wav", nullptr },// USFX_DEFILER6 + { sfx_STREAM, "sfx\\hellfire\\defiler7.wav", nullptr },// USFX_DEFILER7 + { sfx_STREAM, "sfx\\hellfire\\nakrul1.wav", nullptr },// USFX_NAKRUL1 + { sfx_STREAM, "sfx\\hellfire\\nakrul2.wav", nullptr },// USFX_NAKRUL2 + { sfx_STREAM, "sfx\\hellfire\\nakrul3.wav", nullptr },// USFX_NAKRUL3 + { sfx_STREAM, "sfx\\hellfire\\nakrul4.wav", nullptr },// USFX_NAKRUL4 + { sfx_STREAM, "sfx\\hellfire\\nakrul5.wav", nullptr },// USFX_NAKRUL5 + { sfx_STREAM, "sfx\\hellfire\\nakrul6.wav", nullptr },// USFX_NAKRUL6 + { sfx_STREAM, "sfx\\hellfire\\naratr3.wav", nullptr },// PS_NARATR3 + { sfx_STREAM, "sfx\\hellfire\\cowsut1.wav", nullptr },// TSFX_COWSUT1 + { sfx_STREAM, "sfx\\hellfire\\cowsut2.wav", nullptr },// TSFX_COWSUT2 + { sfx_STREAM, "sfx\\hellfire\\cowsut3.wav", nullptr },// TSFX_COWSUT3 + { sfx_STREAM, "sfx\\hellfire\\cowsut4.wav", nullptr },// TSFX_COWSUT4 + { sfx_STREAM, "sfx\\hellfire\\cowsut4a.wav", nullptr },// TSFX_COWSUT4A + { sfx_STREAM, "sfx\\hellfire\\cowsut5.wav", nullptr },// TSFX_COWSUT5 + { sfx_STREAM, "sfx\\hellfire\\cowsut6.wav", nullptr },// TSFX_COWSUT6 + { sfx_STREAM, "sfx\\hellfire\\cowsut7.wav", nullptr },// TSFX_COWSUT7 + { sfx_STREAM, "sfx\\hellfire\\cowsut8.wav", nullptr },// TSFX_COWSUT8 + { sfx_STREAM, "sfx\\hellfire\\cowsut9.wav", nullptr },// TSFX_COWSUT9 + { sfx_STREAM, "sfx\\hellfire\\cowsut10.wav", nullptr },// TSFX_COWSUT10 + { sfx_STREAM, "sfx\\hellfire\\cowsut11.wav", nullptr },// TSFX_COWSUT11 + { sfx_STREAM, "sfx\\hellfire\\cowsut12.wav", nullptr },// TSFX_COWSUT12 + { sfx_STREAM, "sfx\\hellfire\\skljrn1.wav", nullptr },// USFX_SKLJRN1 + { sfx_STREAM, "sfx\\hellfire\\naratr6.wav", nullptr },// PS_NARATR6 + { sfx_STREAM, "sfx\\hellfire\\naratr7.wav", nullptr },// PS_NARATR7 + { sfx_STREAM, "sfx\\hellfire\\naratr8.wav", nullptr },// PS_NARATR8 + { sfx_STREAM, "sfx\\hellfire\\naratr5.wav", nullptr },// PS_NARATR5 + { sfx_STREAM, "sfx\\hellfire\\naratr9.wav", nullptr },// PS_NARATR9 + { sfx_STREAM, "sfx\\hellfire\\naratr4.wav", nullptr },// PS_NARATR4 + { sfx_STREAM, "sfx\\hellfire\\trader1.wav", nullptr },// TSFX_TRADER1 + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\cropen.wav", nullptr },// IS_CROPEN + { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\crclos.wav", nullptr },// IS_CRCLOS // clang-format on }; diff --git a/Source/engine/palette.cpp b/Source/engine/palette.cpp index 657b64cea..8506827f1 100644 --- a/Source/engine/palette.cpp +++ b/Source/engine/palette.cpp @@ -248,13 +248,13 @@ void LoadRndLvlPal(dungeon_type l) return; if (l == DTYPE_TOWN) { - LoadPalette("Levels\\TownData\\Town.pal"); + LoadPalette("levels\\towndata\\town.pal"); return; } int rv = GenerateRnd(4) + 1; if (l == DTYPE_CRYPT) { - LoadPalette("NLevels\\L5Data\\L5Base.PAL"); + LoadPalette("nlevels\\l5data\\l5base.pal"); return; } @@ -263,9 +263,9 @@ void LoadRndLvlPal(dungeon_type l) if (!*sgOptions.Graphics.alternateNestArt) { rv++; } - *fmt::format_to(szFileName, FMT_COMPILE(R"(NLevels\L{0}Data\L{0}Base{1}.PAL)"), 6, rv) = '\0'; + *fmt::format_to(szFileName, FMT_COMPILE(R"(nlevels\l{0}data\l{0}base{1}.pal)"), 6, rv) = '\0'; } else { - *fmt::format_to(szFileName, FMT_COMPILE(R"(Levels\L{0}Data\L{0}_{1}.PAL)"), l, rv) = '\0'; + *fmt::format_to(szFileName, FMT_COMPILE(R"(levels\l{0}data\l{0}_{1}.pal)"), l, rv) = '\0'; } LoadPalette(szFileName); } diff --git a/Source/engine/render/text_render.cpp b/Source/engine/render/text_render.cpp index 280d09136..3860846ee 100644 --- a/Source/engine/render/text_render.cpp +++ b/Source/engine/render/text_render.cpp @@ -413,7 +413,7 @@ int DoDrawString(const Surface &out, string_view text, Rectangle rect, Point &ch void LoadSmallSelectionSpinner() { - pSPentSpn2Cels = LoadCel("Data\\PentSpn2.CEL", 12); + pSPentSpn2Cels = LoadCel("data\\pentspn2.cel", 12); } void UnloadFonts() diff --git a/Source/engine/sound.cpp b/Source/engine/sound.cpp index 2596a9bfe..c6582ec29 100644 --- a/Source/engine/sound.cpp +++ b/Source/engine/sound.cpp @@ -117,25 +117,25 @@ SoundSample *DuplicateSound(const SoundSample &sound) /** Maps from track ID to track name in spawn. */ const char *const SpawnMusicTracks[NUM_MUSIC] = { - "Music\\sTowne.wav", - "Music\\sLvlA.wav", - "Music\\sLvlA.wav", - "Music\\sLvlA.wav", - "Music\\sLvlA.wav", - "Music\\DLvlF.wav", - "Music\\DLvlE.wav", - "Music\\sintro.wav", + "music\\stowne.wav", + "music\\slvla.wav", + "music\\slvla.wav", + "music\\slvla.wav", + "music\\slvla.wav", + "music\\dlvlf.wav", + "music\\dlvle.wav", + "music\\sintro.wav", }; /** Maps from track ID to track name. */ const char *const MusicTracks[NUM_MUSIC] = { - "Music\\DTowne.wav", - "Music\\DLvlA.wav", - "Music\\DLvlB.wav", - "Music\\DLvlC.wav", - "Music\\DLvlD.wav", - "Music\\DLvlF.wav", - "Music\\DLvlE.wav", - "Music\\Dintro.wav", + "music\\dtowne.wav", + "music\\dlvla.wav", + "music\\dlvlb.wav", + "music\\dlvlc.wav", + "music\\dlvld.wav", + "music\\dlvlf.wav", + "music\\dlvle.wav", + "music\\dintro.wav", }; int CapVolume(int volume) diff --git a/Source/engine/trn.cpp b/Source/engine/trn.cpp index 0ed971ebb..ae34e5414 100644 --- a/Source/engine/trn.cpp +++ b/Source/engine/trn.cpp @@ -32,22 +32,22 @@ std::optional> GetClassTRN(Player &player) switch (player._pClass) { case HeroClass::Warrior: - path = "PlrGFX\\warrior.TRN"; + path = "plrgfx\\warrior.trn"; break; case HeroClass::Rogue: - path = "PlrGFX\\rogue.TRN"; + path = "plrgfx\\rogue.trn"; break; case HeroClass::Sorcerer: - path = "PlrGFX\\sorcerer.TRN"; + path = "plrgfx\\sorcerer.trn"; break; case HeroClass::Monk: - path = "PlrGFX\\monk.TRN"; + path = "plrgfx\\monk.trn"; break; case HeroClass::Bard: - path = "PlrGFX\\bard.TRN"; + path = "plrgfx\\bard.trn"; break; case HeroClass::Barbarian: - path = "PlrGFX\\barbarian.TRN"; + path = "plrgfx\\barbarian.trn"; break; } diff --git a/Source/gmenu.cpp b/Source/gmenu.cpp index 5edcc97a5..78615aa83 100644 --- a/Source/gmenu.cpp +++ b/Source/gmenu.cpp @@ -195,12 +195,12 @@ void gmenu_init_menu() return; if (gbIsHellfire) - sgpLogo = LoadCel("Data\\hf_logo3.CEL", 430); + sgpLogo = LoadCel("data\\hf_logo3.cel", 430); else - sgpLogo = LoadCel("Data\\Diabsmal.CEL", 296); - PentSpin_cel = LoadCel("Data\\PentSpin.CEL", 48); - option_cel = LoadCel("Data\\option.CEL", 27); - optbar_cel = LoadCel("Data\\optbar.CEL", 287); + sgpLogo = LoadCel("data\\diabsmal.cel", 296); + PentSpin_cel = LoadCel("data\\pentspin.cel", 48); + option_cel = LoadCel("data\\option.cel", 27); + optbar_cel = LoadCel("data\\optbar.cel", 287); } bool gmenu_is_active() diff --git a/Source/interfac.cpp b/Source/interfac.cpp index f1454103d..9cfcad54e 100644 --- a/Source/interfac.cpp +++ b/Source/interfac.cpp @@ -106,60 +106,60 @@ void LoadCutsceneBackground(interface_mode uMsg) switch (PickCutscene(uMsg)) { case CutStart: ArtCutsceneWidescreen = LoadOptionalClx("gendata\\cutstartw.pcx"); - celPath = "Gendata\\Cutstart.cel"; - palPath = "Gendata\\Cutstart.pal"; + celPath = "gendata\\cutstart.cel"; + palPath = "gendata\\cutstart.pal"; progress_id = 1; break; case CutTown: - celPath = "Gendata\\Cuttt.cel"; - palPath = "Gendata\\Cuttt.pal"; + celPath = "gendata\\cuttt.cel"; + palPath = "gendata\\cuttt.pal"; progress_id = 1; break; case CutLevel1: - celPath = "Gendata\\Cutl1d.cel"; - palPath = "Gendata\\Cutl1d.pal"; + celPath = "gendata\\cutl1d.cel"; + palPath = "gendata\\cutl1d.pal"; progress_id = 0; break; case CutLevel2: - celPath = "Gendata\\Cut2.cel"; - palPath = "Gendata\\Cut2.pal"; + celPath = "gendata\\cut2.cel"; + palPath = "gendata\\cut2.pal"; progress_id = 2; break; case CutLevel3: - celPath = "Gendata\\Cut3.cel"; - palPath = "Gendata\\Cut3.pal"; + celPath = "gendata\\cut3.cel"; + palPath = "gendata\\cut3.pal"; progress_id = 1; break; case CutLevel4: - celPath = "Gendata\\Cut4.cel"; - palPath = "Gendata\\Cut4.pal"; + celPath = "gendata\\cut4.cel"; + palPath = "gendata\\cut4.pal"; progress_id = 1; break; case CutLevel5: - celPath = "Nlevels\\Cutl5.cel"; - palPath = "Nlevels\\Cutl5.pal"; + celPath = "nlevels\\cutl5.cel"; + palPath = "nlevels\\cutl5.pal"; progress_id = 1; break; case CutLevel6: - celPath = "Nlevels\\Cutl6.cel"; - palPath = "Nlevels\\Cutl6.pal"; + celPath = "nlevels\\cutl6.cel"; + palPath = "nlevels\\cutl6.pal"; progress_id = 1; break; case CutPortal: ArtCutsceneWidescreen = LoadOptionalClx("gendata\\cutportlw.pcx"); - celPath = "Gendata\\Cutportl.cel"; - palPath = "Gendata\\Cutportl.pal"; + celPath = "gendata\\cutportl.cel"; + palPath = "gendata\\cutportl.pal"; progress_id = 1; break; case CutPortalRed: ArtCutsceneWidescreen = LoadOptionalClx("gendata\\cutportrw.pcx"); - celPath = "Gendata\\Cutportr.cel"; - palPath = "Gendata\\Cutportr.pal"; + celPath = "gendata\\cutportr.cel"; + palPath = "gendata\\cutportr.pal"; progress_id = 1; break; case CutGate: - celPath = "Gendata\\Cutgate.cel"; - palPath = "Gendata\\Cutgate.pal"; + celPath = "gendata\\cutgate.cel"; + palPath = "gendata\\cutgate.pal"; progress_id = 1; break; } diff --git a/Source/inv.cpp b/Source/inv.cpp index 138b220f1..ce380c0f2 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1070,17 +1070,17 @@ void InitInv() switch (MyPlayer->_pClass) { case HeroClass::Warrior: case HeroClass::Barbarian: - pInvCels = LoadCel("Data\\Inv\\Inv.CEL", static_cast(SidePanelSize.width)); + pInvCels = LoadCel("data\\inv\\inv.cel", static_cast(SidePanelSize.width)); break; case HeroClass::Rogue: case HeroClass::Bard: - pInvCels = LoadCel("Data\\Inv\\Inv_rog.CEL", static_cast(SidePanelSize.width)); + pInvCels = LoadCel("data\\inv\\inv_rog.cel", static_cast(SidePanelSize.width)); break; case HeroClass::Sorcerer: - pInvCels = LoadCel("Data\\Inv\\Inv_Sor.CEL", static_cast(SidePanelSize.width)); + pInvCels = LoadCel("data\\inv\\inv_sor.cel", static_cast(SidePanelSize.width)); break; case HeroClass::Monk: - pInvCels = LoadCel(!gbIsSpawn ? "Data\\Inv\\Inv_Sor.CEL" : "Data\\Inv\\Inv.CEL", static_cast(SidePanelSize.width)); + pInvCels = LoadCel(!gbIsSpawn ? "data\\inv\\inv_sor.cel" : "data\\inv\\inv.cel", static_cast(SidePanelSize.width)); break; } } diff --git a/Source/items.cpp b/Source/items.cpp index 6cf602392..b49de7c43 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -181,41 +181,41 @@ char OilNames[10][25] = { /** Map of item type .cel file names. */ const char *const ItemDropNames[] = { - "Armor2", - "Axe", - "FBttle", - "Bow", - "GoldFlip", - "Helmut", - "Mace", - "Shield", - "SwrdFlip", - "Rock", - "Cleaver", - "Staff", - "Ring", - "CrownF", - "LArmor", - "WShield", - "Scroll", - "FPlateAr", - "FBook", - "Food", - "FBttleBB", - "FBttleDY", - "FBttleOR", - "FBttleBR", - "FBttleBL", - "FBttleBY", - "FBttleWH", - "FBttleDB", - "FEar", - "FBrain", - "FMush", - "Innsign", - "Bldstn", - "Fanvil", - "FLazStaf", + "armor2", + "axe", + "fbttle", + "bow", + "goldflip", + "helmut", + "mace", + "shield", + "swrdflip", + "rock", + "cleaver", + "staff", + "ring", + "crownf", + "larmor", + "wshield", + "scroll", + "fplatear", + "fbook", + "food", + "fbttlebb", + "fbttledy", + "fbttleor", + "fbttlebr", + "fbttlebl", + "fbttleby", + "fbttlewh", + "fbttledb", + "fear", + "fbrain", + "fmush", + "innsign", + "bldstn", + "fanvil", + "flazstaf", "bombs1", "halfps1", "wholeps1", @@ -2318,7 +2318,7 @@ void InitItemGFX() int itemTypes = gbIsHellfire ? ITEMTYPES : 35; for (int i = 0; i < itemTypes; i++) { - *BufCopy(arglist, "Items\\", ItemDropNames[i], ".CEL") = '\0'; + *BufCopy(arglist, "items\\", ItemDropNames[i], ".cel") = '\0'; itemanims[i] = LoadCel(arglist, ItemAnimWidth); } memset(UniqueItemFlags, 0, sizeof(UniqueItemFlags)); diff --git a/Source/levels/crypt.cpp b/Source/levels/crypt.cpp index 807a3f598..8a6412e89 100644 --- a/Source/levels/crypt.cpp +++ b/Source/levels/crypt.cpp @@ -684,7 +684,7 @@ void SetCryptRoom() IsUberRoomOpened = false; IsUberLeverActivated = false; - auto dunData = LoadFileInMem("NLevels\\L5Data\\uberroom.dun"); + auto dunData = LoadFileInMem("nlevels\\l5data\\uberroom.dun"); SetPiece = { position, { dunData[0], dunData[1] } }; @@ -695,7 +695,7 @@ void SetCornerRoom() { Point position = SelectChamber(); - auto dunData = LoadFileInMem("NLevels\\L5Data\\cornerstone.dun"); + auto dunData = LoadFileInMem("nlevels\\l5data\\cornerstone.dun"); SetPiece = { position, { dunData[0], dunData[1] } }; diff --git a/Source/levels/drlg_l1.cpp b/Source/levels/drlg_l1.cpp index 4e2ee668c..bb612a2b0 100644 --- a/Source/levels/drlg_l1.cpp +++ b/Source/levels/drlg_l1.cpp @@ -382,11 +382,11 @@ void FillFloor() void LoadQuestSetPieces() { if (Quests[Q_BUTCHER].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L1Data\\rnd6.DUN"); + pSetPiece = LoadFileInMem("levels\\l1data\\rnd6.dun"); } else if (Quests[Q_SKELKING].IsAvailable() && !gbIsMultiplayer) { - pSetPiece = LoadFileInMem("Levels\\L1Data\\SKngDO.DUN"); + pSetPiece = LoadFileInMem("levels\\l1data\\skngdo.dun"); } else if (Quests[Q_LTBANNER].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L1Data\\Banner2.DUN"); + pSetPiece = LoadFileInMem("levels\\l1data\\banner2.dun"); } } diff --git a/Source/levels/drlg_l2.cpp b/Source/levels/drlg_l2.cpp index 883ae70c5..a5e337d65 100644 --- a/Source/levels/drlg_l2.cpp +++ b/Source/levels/drlg_l2.cpp @@ -1616,11 +1616,11 @@ void PlaceMiniSetRandom1x1(uint8_t search, uint8_t replace, int rndper) void LoadQuestSetPieces() { if (Quests[Q_BLIND].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L2Data\\Blind1.DUN"); + pSetPiece = LoadFileInMem("levels\\l2data\\blind1.dun"); } else if (Quests[Q_BLOOD].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L2Data\\Blood1.DUN"); + pSetPiece = LoadFileInMem("levels\\l2data\\blood1.dun"); } else if (Quests[Q_SCHAMB].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L2Data\\Bonestr2.DUN"); + pSetPiece = LoadFileInMem("levels\\l2data\\bonestr2.dun"); } } diff --git a/Source/levels/drlg_l3.cpp b/Source/levels/drlg_l3.cpp index 2dfecbb2c..d8c8d034d 100644 --- a/Source/levels/drlg_l3.cpp +++ b/Source/levels/drlg_l3.cpp @@ -1793,7 +1793,7 @@ void Fence() void LoadQuestSetPieces() { if (Quests[Q_ANVIL].IsAvailable()) - pSetPiece = LoadFileInMem("Levels\\L3Data\\Anvil.DUN"); + pSetPiece = LoadFileInMem("levels\\l3data\\anvil.dun"); } bool PlaceAnvil() diff --git a/Source/levels/drlg_l4.cpp b/Source/levels/drlg_l4.cpp index e82ea2f2e..55fd030be 100644 --- a/Source/levels/drlg_l4.cpp +++ b/Source/levels/drlg_l4.cpp @@ -159,9 +159,9 @@ void ApplyShadowsPatterns() void LoadQuestSetPieces() { if (Quests[Q_WARLORD].IsAvailable()) { - pSetPiece = LoadFileInMem("Levels\\L4Data\\Warlord.DUN"); + pSetPiece = LoadFileInMem("levels\\l4data\\warlord.dun"); } else if (currlevel == 15 && gbIsMultiplayer) { - pSetPiece = LoadFileInMem("Levels\\L4Data\\Vile1.DUN"); + pSetPiece = LoadFileInMem("levels\\l4data\\vile1.dun"); } } @@ -939,22 +939,22 @@ void ProtectQuads() void LoadDiabQuads(bool preflag) { { - auto dunData = LoadFileInMem("Levels\\L4Data\\diab1.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\diab1.dun"); DiabloQuad1 = L4Hold + Displacement { 4, 4 }; PlaceDunTiles(dunData.get(), DiabloQuad1, 6); } { - auto dunData = LoadFileInMem(preflag ? "Levels\\L4Data\\diab2b.DUN" : "Levels\\L4Data\\diab2a.DUN"); + auto dunData = LoadFileInMem(preflag ? "levels\\l4data\\diab2b.dun" : "levels\\l4data\\diab2a.dun"); DiabloQuad2 = { 27 - L4Hold.x, 1 + L4Hold.y }; PlaceDunTiles(dunData.get(), DiabloQuad2, 6); } { - auto dunData = LoadFileInMem(preflag ? "Levels\\L4Data\\diab3b.DUN" : "Levels\\L4Data\\diab3a.DUN"); + auto dunData = LoadFileInMem(preflag ? "levels\\l4data\\diab3b.dun" : "levels\\l4data\\diab3a.dun"); DiabloQuad3 = { 1 + L4Hold.x, 27 - L4Hold.y }; PlaceDunTiles(dunData.get(), DiabloQuad3, 6); } { - auto dunData = LoadFileInMem(preflag ? "Levels\\L4Data\\diab4b.DUN" : "Levels\\L4Data\\diab4a.DUN"); + auto dunData = LoadFileInMem(preflag ? "levels\\l4data\\diab4b.dun" : "levels\\l4data\\diab4a.dun"); DiabloQuad4 = { 28 - L4Hold.x, 28 - L4Hold.y }; PlaceDunTiles(dunData.get(), DiabloQuad4, 6); } diff --git a/Source/levels/gendung.cpp b/Source/levels/gendung.cpp index 5cbe65553..3e1a69ff6 100644 --- a/Source/levels/gendung.cpp +++ b/Source/levels/gendung.cpp @@ -58,20 +58,20 @@ std::unique_ptr LoadMinData(size_t &tileCount) switch (leveltype) { case DTYPE_TOWN: if (gbIsHellfire) - return LoadFileInMem("NLevels\\TownData\\Town.MIN", &tileCount); - return LoadFileInMem("Levels\\TownData\\Town.MIN", &tileCount); + return LoadFileInMem("nlevels\\towndata\\town.min", &tileCount); + return LoadFileInMem("levels\\towndata\\town.min", &tileCount); case DTYPE_CATHEDRAL: - return LoadFileInMem("Levels\\L1Data\\L1.MIN", &tileCount); + return LoadFileInMem("levels\\l1data\\l1.min", &tileCount); case DTYPE_CATACOMBS: - return LoadFileInMem("Levels\\L2Data\\L2.MIN", &tileCount); + return LoadFileInMem("levels\\l2data\\l2.min", &tileCount); case DTYPE_CAVES: - return LoadFileInMem("Levels\\L3Data\\L3.MIN", &tileCount); + return LoadFileInMem("levels\\l3data\\l3.min", &tileCount); case DTYPE_HELL: - return LoadFileInMem("Levels\\L4Data\\L4.MIN", &tileCount); + return LoadFileInMem("levels\\l4data\\l4.min", &tileCount); case DTYPE_NEST: - return LoadFileInMem("NLevels\\L6Data\\L6.MIN", &tileCount); + return LoadFileInMem("nlevels\\l6data\\l6.min", &tileCount); case DTYPE_CRYPT: - return LoadFileInMem("NLevels\\L5Data\\L5.MIN", &tileCount); + return LoadFileInMem("nlevels\\l5data\\l5.min", &tileCount); default: app_fatal("LoadMinData"); } @@ -416,28 +416,28 @@ void LoadLevelSOLData() switch (leveltype) { case DTYPE_TOWN: if (gbIsHellfire) - LoadFileInMem("NLevels\\TownData\\Town.SOL", SOLData); + LoadFileInMem("nlevels\\towndata\\town.sol", SOLData); else - LoadFileInMem("Levels\\TownData\\Town.SOL", SOLData); + LoadFileInMem("levels\\towndata\\town.sol", SOLData); break; case DTYPE_CATHEDRAL: - LoadFileInMem("Levels\\L1Data\\L1.SOL", SOLData); + LoadFileInMem("levels\\l1data\\l1.sol", SOLData); break; case DTYPE_CATACOMBS: - LoadFileInMem("Levels\\L2Data\\L2.SOL", SOLData); + LoadFileInMem("levels\\l2data\\l2.sol", SOLData); break; case DTYPE_CAVES: - LoadFileInMem("Levels\\L3Data\\L3.SOL", SOLData); + LoadFileInMem("levels\\l3data\\l3.sol", SOLData); break; case DTYPE_HELL: - LoadFileInMem("Levels\\L4Data\\L4.SOL", SOLData); + LoadFileInMem("levels\\l4data\\l4.sol", SOLData); SOLData[210] = TileProperties::None; // Tile is incorrectly marked as being solid break; case DTYPE_NEST: - LoadFileInMem("NLevels\\L6Data\\L6.SOL", SOLData); + LoadFileInMem("nlevels\\l6data\\l6.sol", SOLData); break; case DTYPE_CRYPT: - LoadFileInMem("NLevels\\L5Data\\L5.SOL", SOLData); + LoadFileInMem("nlevels\\l5data\\l5.sol", SOLData); break; default: app_fatal("LoadLevelSOLData"); diff --git a/Source/levels/setmaps.cpp b/Source/levels/setmaps.cpp index 958f81fa0..33ad72394 100644 --- a/Source/levels/setmaps.cpp +++ b/Source/levels/setmaps.cpp @@ -74,18 +74,18 @@ void LoadSetMap() Quests[Q_SKELKING]._qactive = QUEST_ACTIVE; Quests[Q_SKELKING]._qvar1 = 1; } - LoadPreL1Dungeon("Levels\\L1Data\\SklKng1.DUN"); - LoadL1Dungeon("Levels\\L1Data\\SklKng2.DUN", { 83, 45 }); - SetMapTransparency("Levels\\L1Data\\SklKngT.dun"); - LoadPalette("Levels\\L1Data\\L1_2.pal"); + LoadPreL1Dungeon("levels\\l1data\\sklkng1.dun"); + LoadL1Dungeon("levels\\l1data\\sklkng2.dun", { 83, 45 }); + SetMapTransparency("levels\\l1data\\sklkngt.dun"); + LoadPalette("levels\\l1data\\l1_2.pal"); AddSKingObjs(); InitSKingTriggers(); break; case SL_BONECHAMB: - LoadPreL2Dungeon("Levels\\L2Data\\Bonecha2.DUN"); - LoadL2Dungeon("Levels\\L2Data\\Bonecha1.DUN", { 69, 39 }); - SetMapTransparency("Levels\\L2Data\\BonechaT.dun"); - LoadPalette("Levels\\L2Data\\L2_2.pal"); + LoadPreL2Dungeon("levels\\l2data\\bonecha2.dun"); + LoadL2Dungeon("levels\\l2data\\bonecha1.dun", { 69, 39 }); + SetMapTransparency("levels\\l2data\\bonechat.dun"); + LoadPalette("levels\\l2data\\l2_2.pal"); AddSChamObjs(); InitSChambTriggers(); break; @@ -94,8 +94,8 @@ void LoadSetMap() case SL_POISONWATER: if (Quests[Q_PWATER]._qactive == QUEST_INIT) Quests[Q_PWATER]._qactive = QUEST_ACTIVE; - LoadL3Dungeon("Levels\\L3Data\\Foulwatr.DUN", { 31, 83 }); - LoadPalette("Levels\\L3Data\\L3pfoul.pal"); + LoadL3Dungeon("levels\\l3data\\foulwatr.dun", { 31, 83 }); + LoadPalette("levels\\l3data\\l3pfoul.pal"); InitPWaterTriggers(); break; case SL_VILEBETRAYER: @@ -104,10 +104,10 @@ void LoadSetMap() } else if (Quests[Q_BETRAYER]._qactive == QUEST_ACTIVE) { Quests[Q_BETRAYER]._qvar2 = 3; } - LoadPreL1Dungeon("Levels\\L1Data\\Vile1.DUN"); - LoadL1Dungeon("Levels\\L1Data\\Vile2.DUN", { 35, 36 }); - SetMapTransparency("Levels\\L1Data\\Vile1.DUN"); - LoadPalette("Levels\\L1Data\\L1_2.pal"); + LoadPreL1Dungeon("levels\\l1data\\vile1.dun"); + LoadL1Dungeon("levels\\l1data\\vile2.dun", { 35, 36 }); + SetMapTransparency("levels\\l1data\\vile1.dun"); + LoadPalette("levels\\l1data\\l1_2.pal"); AddVileObjs(); InitNoTriggers(); break; diff --git a/Source/levels/town.cpp b/Source/levels/town.cpp index 8c57b7dd4..8bd8f9fe7 100644 --- a/Source/levels/town.cpp +++ b/Source/levels/town.cpp @@ -193,10 +193,10 @@ void DrlgTPass3() } } - FillSector("Levels\\TownData\\Sector1s.DUN", 46, 46); - FillSector("Levels\\TownData\\Sector2s.DUN", 46, 0); - FillSector("Levels\\TownData\\Sector3s.DUN", 0, 46); - FillSector("Levels\\TownData\\Sector4s.DUN", 0, 0); + FillSector("levels\\towndata\\sector1s.dun", 46, 46); + FillSector("levels\\towndata\\sector2s.dun", 46, 0); + FillSector("levels\\towndata\\sector3s.dun", 0, 46); + FillSector("levels\\towndata\\sector4s.dun", 0, 0); if (!IsWarpOpen(DTYPE_CATACOMBS)) { FillTile(48, 20, 320); diff --git a/Source/lighting.cpp b/Source/lighting.cpp index 9ebe627d4..273bd0096 100644 --- a/Source/lighting.cpp +++ b/Source/lighting.cpp @@ -448,10 +448,10 @@ void MakeLightTable() tbl += 240; } - LoadFileInMem("PlrGFX\\Infra.TRN", tbl, 256); + LoadFileInMem("plrgfx\\infra.trn", tbl, 256); tbl += 256; - LoadFileInMem("PlrGFX\\Stone.TRN", tbl, 256); + LoadFileInMem("plrgfx\\stone.trn", tbl, 256); tbl += 256; for (int i = 0; i < 8; i++) { diff --git a/Source/minitext.cpp b/Source/minitext.cpp index 84fa8d080..a6324b32d 100644 --- a/Source/minitext.cpp +++ b/Source/minitext.cpp @@ -126,7 +126,7 @@ void FreeQuestText() void InitQuestText() { - pTextBoxCels = LoadCel("Data\\TextBox.CEL", 591); + pTextBoxCels = LoadCel("data\\textbox.cel", 591); } void InitQTextMsg(_speech_id m) diff --git a/Source/misdat.cpp b/Source/misdat.cpp index c180709ea..ca19a0b07 100644 --- a/Source/misdat.cpp +++ b/Source/misdat.cpp @@ -130,52 +130,52 @@ MissileData MissilesData[] = { MissileFileData MissileSpriteData[] = { // clang-format off // name, animName, animFAmt, flags, animDelay[16], animLen[16], animWidth, animWidth2 - { "Arrows", MFILE_ARROWS, 1, MissileDataFlags::NotAnimated, { 0 }, { 16 }, 96, 16 }, - { "Fireba", MFILE_FIREBA, 16, MissileDataFlags::None, { 0 }, { 14 }, 96, 16 }, - { "Guard", MFILE_GUARD, 3, MissileDataFlags::None, { 1 }, { 15, 14, 3 }, 96, 16 }, - { "Lghning", MFILE_LGHNING, 1, MissileDataFlags::None, { 0 }, { 8 }, 96, 16 }, - { "Firewal", MFILE_FIREWAL, 2, MissileDataFlags::None, { 0 }, { 13, 11 }, 128, 32 }, - { "MagBlos", MFILE_MAGBLOS, 1, MissileDataFlags::None, { 1 }, { 10 }, 128, 32 }, - { "Portal", MFILE_PORTAL, 2, MissileDataFlags::None, { 0, 1 }, { 16 }, 96, 16 }, - { "Bluexfr", MFILE_BLUEXFR, 1, MissileDataFlags::None, { 0 }, { 19 }, 160, 48 }, - { "Bluexbk", MFILE_BLUEXBK, 1, MissileDataFlags::None, { 0 }, { 19 }, 160, 48 }, - { "Manashld", MFILE_MANASHLD, 1, MissileDataFlags::NotAnimated, { 0 }, { 1 }, 96, 16 }, + { "arrows", MFILE_ARROWS, 1, MissileDataFlags::NotAnimated, { 0 }, { 16 }, 96, 16 }, + { "fireba", MFILE_FIREBA, 16, MissileDataFlags::None, { 0 }, { 14 }, 96, 16 }, + { "guard", MFILE_GUARD, 3, MissileDataFlags::None, { 1 }, { 15, 14, 3 }, 96, 16 }, + { "lghning", MFILE_LGHNING, 1, MissileDataFlags::None, { 0 }, { 8 }, 96, 16 }, + { "firewal", MFILE_FIREWAL, 2, MissileDataFlags::None, { 0 }, { 13, 11 }, 128, 32 }, + { "magblos", MFILE_MAGBLOS, 1, MissileDataFlags::None, { 1 }, { 10 }, 128, 32 }, + { "portal", MFILE_PORTAL, 2, MissileDataFlags::None, { 0, 1 }, { 16 }, 96, 16 }, + { "bluexfr", MFILE_BLUEXFR, 1, MissileDataFlags::None, { 0 }, { 19 }, 160, 48 }, + { "bluexbk", MFILE_BLUEXBK, 1, MissileDataFlags::None, { 0 }, { 19 }, 160, 48 }, + { "manashld", MFILE_MANASHLD, 1, MissileDataFlags::NotAnimated, { 0 }, { 1 }, 96, 16 }, { {}, MFILE_BLOOD, 4, MissileDataFlags::None, { 0 }, { 15 }, 96, 16 }, { {}, MFILE_BONE, 3, MissileDataFlags::None, { 2 }, { 8 }, 128, 32 }, { {}, MFILE_METLHIT, 3, MissileDataFlags::None, { 2 }, { 10 }, 96, 16 }, - { "Farrow", MFILE_FARROW, 16, MissileDataFlags::None, { 0 }, { 4 }, 96, 16 }, - { "Doom", MFILE_DOOM, 9, MissileDataFlags::MonsterOwned, { 1 }, { 15 }, 96, 16 }, + { "farrow", MFILE_FARROW, 16, MissileDataFlags::None, { 0 }, { 4 }, 96, 16 }, + { "doom", MFILE_DOOM, 9, MissileDataFlags::MonsterOwned, { 1 }, { 15 }, 96, 16 }, { {}, MFILE_0F, 1, MissileDataFlags::MonsterOwned, { 0 }, { 0 }, 0, 0 }, { {}, MFILE_BLODBUR, 2, MissileDataFlags::None, { 2 }, { 8 }, 128, 32 }, - { "Newexp", MFILE_NEWEXP, 1, MissileDataFlags::None, { 1 }, { 15 }, 96, 16 }, - { "Shatter1", MFILE_SHATTER1, 1, MissileDataFlags::None, { 1 }, { 12 }, 128, 32 }, - { "Bigexp", MFILE_BIGEXP, 1, MissileDataFlags::None, { 0 }, { 15 }, 160, 48 }, - { "Inferno", MFILE_INFERNO, 1, MissileDataFlags::None, { 0 }, { 20 }, 96, 16 }, - { "Thinlght", MFILE_THINLGHT, 1, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, - { "Flare", MFILE_FLARE, 1, MissileDataFlags::None, { 0 }, { 16 }, 128, 32 }, - { "Flareexp", MFILE_FLAREEXP, 1, MissileDataFlags::None, { 0 }, { 7 }, 128, 32 }, - { "Magball", MFILE_MAGBALL, 8, MissileDataFlags::MonsterOwned, { 1 }, { 16 }, 128, 32 }, - { "Krull", MFILE_KRULL, 1, MissileDataFlags::MonsterOwned, { 0 }, { 14 }, 96, 16 }, - { "Miniltng", MFILE_MINILTNG, 1, MissileDataFlags::None, { 1 }, { 8 }, 64, 0 }, - { "Holy", MFILE_HOLY, 16, MissileDataFlags::None, { 1, 0 }, { 14 }, 96, 16 }, - { "Holyexpl", MFILE_HOLYEXPL, 1, MissileDataFlags::None, { 0 }, { 8 }, 160, 48 }, - { "Larrow", MFILE_LARROW, 16, MissileDataFlags::None, { 0 }, { 4 }, 96, 16 }, + { "newexp", MFILE_NEWEXP, 1, MissileDataFlags::None, { 1 }, { 15 }, 96, 16 }, + { "shatter1", MFILE_SHATTER1, 1, MissileDataFlags::None, { 1 }, { 12 }, 128, 32 }, + { "bigexp", MFILE_BIGEXP, 1, MissileDataFlags::None, { 0 }, { 15 }, 160, 48 }, + { "inferno", MFILE_INFERNO, 1, MissileDataFlags::None, { 0 }, { 20 }, 96, 16 }, + { "thinlght", MFILE_THINLGHT, 1, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, + { "flare", MFILE_FLARE, 1, MissileDataFlags::None, { 0 }, { 16 }, 128, 32 }, + { "flareexp", MFILE_FLAREEXP, 1, MissileDataFlags::None, { 0 }, { 7 }, 128, 32 }, + { "magball", MFILE_MAGBALL, 8, MissileDataFlags::MonsterOwned, { 1 }, { 16 }, 128, 32 }, + { "krull", MFILE_KRULL, 1, MissileDataFlags::MonsterOwned, { 0 }, { 14 }, 96, 16 }, + { "miniltng", MFILE_MINILTNG, 1, MissileDataFlags::None, { 1 }, { 8 }, 64, 0 }, + { "holy", MFILE_HOLY, 16, MissileDataFlags::None, { 1, 0 }, { 14 }, 96, 16 }, + { "holyexpl", MFILE_HOLYEXPL, 1, MissileDataFlags::None, { 0 }, { 8 }, 160, 48 }, + { "larrow", MFILE_LARROW, 16, MissileDataFlags::None, { 0 }, { 4 }, 96, 16 }, { {}, MFILE_FIRARWEX, 1, MissileDataFlags::None, { 0 }, { 6 }, 64, 0 }, - { "Acidbf", MFILE_ACIDBF, 16, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, - { "Acidspla", MFILE_ACIDSPLA, 1, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, - { "Acidpud", MFILE_ACIDPUD, 2, MissileDataFlags::MonsterOwned, { 0 }, { 9, 4 }, 96, 16 }, + { "acidbf", MFILE_ACIDBF, 16, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, + { "acidspla", MFILE_ACIDSPLA, 1, MissileDataFlags::MonsterOwned, { 0 }, { 8 }, 96, 16 }, + { "acidpud", MFILE_ACIDPUD, 2, MissileDataFlags::MonsterOwned, { 0 }, { 9, 4 }, 96, 16 }, { {}, MFILE_ETHRSHLD, 1, MissileDataFlags::None, { 0 }, { 1 }, 96, 16 }, - { "Firerun", MFILE_FIRERUN, 8, MissileDataFlags::None, { 1 }, { 12 }, 96, 16 }, - { "Ressur1", MFILE_RESSUR1, 1, MissileDataFlags::None, { 0 }, { 16 }, 96, 16 }, - { "Sklball", MFILE_SKLBALL, 9, MissileDataFlags::None, { 1 }, { 16, 16, 16, 16, 16, 16, 16, 16, 8 }, 96, 16 }, - { "Rportal", MFILE_RPORTAL, 2, MissileDataFlags::None, { 0 }, { 16 }, 96, 16 }, - { "Fireplar", MFILE_FIREPLAR, 1, MissileDataFlags::MonsterOwned, { 1 }, { 17 }, 160, 48 }, - { "Scubmisb", MFILE_SCUBMISB, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, - { "Scbsexpb", MFILE_SCBSEXPB, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, - { "Scubmisc", MFILE_SCUBMISC, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, - { "Scbsexpc", MFILE_SCBSEXPC, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, - { "Scubmisd", MFILE_SCUBMISD, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, - { "Scbsexpd", MFILE_SCBSEXPD, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, + { "firerun", MFILE_FIRERUN, 8, MissileDataFlags::None, { 1 }, { 12 }, 96, 16 }, + { "ressur1", MFILE_RESSUR1, 1, MissileDataFlags::None, { 0 }, { 16 }, 96, 16 }, + { "sklball", MFILE_SKLBALL, 9, MissileDataFlags::None, { 1 }, { 16, 16, 16, 16, 16, 16, 16, 16, 8 }, 96, 16 }, + { "rportal", MFILE_RPORTAL, 2, MissileDataFlags::None, { 0 }, { 16 }, 96, 16 }, + { "fireplar", MFILE_FIREPLAR, 1, MissileDataFlags::MonsterOwned, { 1 }, { 17 }, 160, 48 }, + { "scubmisb", MFILE_SCUBMISB, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, + { "scbsexpb", MFILE_SCBSEXPB, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, + { "scubmisc", MFILE_SCUBMISC, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, + { "scbsexpc", MFILE_SCBSEXPC, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, + { "scubmisd", MFILE_SCUBMISD, 1, MissileDataFlags::MonsterOwned, { 0 }, { 16 }, 96, 16 }, + { "scbsexpd", MFILE_SCBSEXPD, 1, MissileDataFlags::MonsterOwned, { 0 }, { 6 }, 128, 32 }, { "spawns", MFILE_SPAWNS, 8, MissileDataFlags::MonsterOwned, { 0 }, { 9 }, 96, 16 }, { "reflect", MFILE_REFLECT, 1, MissileDataFlags::NotAnimated, { 0 }, { 1 }, 160, 64 }, { "ms_ora", MFILE_LICH, 16, MissileDataFlags::MonsterOwned, { 0 }, { 15 }, 96, 8 }, @@ -236,7 +236,7 @@ void MissileFileData::LoadGFX() if (name.empty()) return; - FileNameGenerator pathGenerator({ "Missiles\\", name }, ".CL2"); + FileNameGenerator pathGenerator({ "missiles\\", name }, ".cl2"); if (animFAmt == 1) { sprites.emplace(OwnedClxSpriteListOrSheet { LoadCl2(pathGenerator(), animWidth) }); } else { diff --git a/Source/monstdat.cpp b/Source/monstdat.cpp index 049e46fb1..4a24e48d8 100644 --- a/Source/monstdat.cpp +++ b/Source/monstdat.cpp @@ -28,145 +28,145 @@ const MonsterData MonstersData[] = { // _monster_id name, assetsSuffix, soundSuffix, trnFile, availability, width, image, hasSpecial, hasSpecialSound, frames[6], rate[6], minDunLvl, maxDunLvl, level, hitPointsMinimum, hitPointsMaximum, ai, abilityFlags, intelligence, toHit, animFrameNum, minDamage, maxDamage, toHitSpecial, animFrameNumSpecial, minDamageSpecial, maxDamageSpecial, armorClass, monsterClass, resistance, resistanceHell, selectionType, treasure, exp // TRANSLATORS: Monster Block start -/* MT_NZOMBIE */ { P_("monster", "Zombie"), "Zombie\\Zombie", nullptr, nullptr, MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 1, 2, 1, 4, 7, AI_ZOMBIE, 0 , 0, 10, 8, 2, 5, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 54 }, -/* MT_BZOMBIE */ { P_("monster", "Ghoul"), "Zombie\\Zombie", nullptr, "Zombie\\Bluered", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 2, 7, 11, AI_ZOMBIE, 0 , 1, 10, 8, 3, 10, 0, 0, 0, 0, 10, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 58 }, -/* MT_GZOMBIE */ { P_("monster", "Rotting Carcass"), "Zombie\\Zombie", nullptr, "Zombie\\Grey", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 4, 15, 25, AI_ZOMBIE, 0 , 2, 25, 8, 5, 15, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 136 }, -/* MT_YZOMBIE */ { P_("monster", "Black Death"), "Zombie\\Zombie", nullptr, "Zombie\\Yellow", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 3, 5, 6, 25, 40, AI_ZOMBIE, 0 , 3, 30, 8, 6, 22, 0, 0, 0, 0, 20, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 240 }, -/* MT_RFALLSP */ { P_("monster", "Fallen One"), "FalSpear\\Phall", nullptr, "FalSpear\\FallenT", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 1, 2, 1, 1, 4, AI_FALLEN, 0 , 0, 15, 7, 1, 3, 0, 5, 0, 0, 0, MonsterClass::Animal, 0 , 0 , 3, 0, 46 }, -/* MT_DFALLSP */ { P_("monster", "Carver"), "FalSpear\\Phall", nullptr, "FalSpear\\Dark", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 2, 3, 3, 4, 8, AI_FALLEN, 0 , 2, 20, 7, 2, 5, 0, 5, 0, 0, 5, MonsterClass::Animal, 0 , 0 , 3, 0, 80 }, -/* MT_YFALLSP */ { P_("monster", "Devil Kin"), "FalSpear\\Phall", nullptr, nullptr, MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 2, 4, 5, 12, 24, AI_FALLEN, 0 , 2, 25, 7, 3, 7, 0, 5, 0, 0, 10, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 155 }, -/* MT_BFALLSP */ { P_("monster", "Dark One"), "FalSpear\\Phall", nullptr, "FalSpear\\Blue", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 7, 20, 36, AI_FALLEN, 0 , 3, 30, 7, 4, 8, 0, 5, 0, 0, 15, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 255 }, -/* MT_WSKELAX */ { P_("monster", "Skeleton"), "SkelAxe\\SklAx", nullptr, "SkelAxe\\White", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 5, 1, 1, 1, 1, 1 }, 1, 2, 1, 2, 4, AI_SKELSD, 0 , 0, 20, 8, 1, 4, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 64 }, -/* MT_TSKELAX */ { P_("monster", "Corpse Axe"), "SkelAxe\\SklAx", nullptr, "SkelAxe\\Skelt", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 2, 4, 7, AI_SKELSD, 0 , 1, 25, 8, 3, 5, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 68 }, -/* MT_RSKELAX */ { P_("monster", "Burning Dead"), "SkelAxe\\SklAx", nullptr, nullptr, MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 2, 1, 1, 1, 1, 1 }, 2, 4, 4, 8, 12, AI_SKELSD, 0 , 2, 30, 8, 3, 7, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 154 }, -/* MT_XSKELAX */ { P_("monster", "Horror"), "SkelAxe\\SklAx", nullptr, "SkelAxe\\Black", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 6, 12, 20, AI_SKELSD, 0 , 3, 35, 8, 4, 9, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 264 }, -/* MT_RFALLSD */ { P_("monster", "Fallen One"), "FalSword\\Fall", nullptr, "FalSword\\FallenT", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 1, 2, 1, 2, 5, AI_FALLEN, 0 , 0, 15, 8, 1, 4, 0, 5, 0, 0, 10, MonsterClass::Animal, 0 , 0 , 3, 0, 52 }, -/* MT_DFALLSD */ { P_("monster", "Carver"), "FalSword\\Fall", nullptr, "FalSword\\Dark", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 2, 3, 3, 5, 9, AI_FALLEN, 0 , 1, 20, 8, 2, 7, 0, 5, 0, 0, 15, MonsterClass::Animal, 0 , 0 , 3, 0, 90 }, -/* MT_YFALLSD */ { P_("monster", "Devil Kin"), "FalSword\\Fall", nullptr, nullptr, MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 2, 4, 5, 16, 24, AI_FALLEN, 0 , 2, 25, 8, 4, 10, 0, 5, 0, 0, 20, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 180 }, -/* MT_BFALLSD */ { P_("monster", "Dark One"), "FalSword\\Fall", nullptr, "FalSword\\Blue", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 7, 24, 36, AI_FALLEN, 0 , 3, 30, 8, 4, 12, 0, 5, 0, 0, 25, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 280 }, -/* MT_NSCAV */ { P_("monster", "Scavenger"), "Scav\\Scav", nullptr, nullptr, MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 1, 3, 2, 3, 6, AI_SCAV, 0 , 0, 20, 7, 1, 5, 0, 0, 0, 0, 10, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 80 }, -/* MT_BSCAV */ { P_("monster", "Plague Eater"), "Scav\\Scav", nullptr, "Scav\\ScavBr", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 2, 4, 4, 12, 24, AI_SCAV, 0 , 1, 30, 7, 1, 8, 0, 0, 0, 0, 20, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 188 }, -/* MT_WSCAV */ { P_("monster", "Shadow Beast"), "Scav\\Scav", nullptr, "Scav\\ScavBe", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 3, 5, 6, 24, 36, AI_SCAV, 0 , 2, 35, 7, 3, 12, 0, 0, 0, 0, 25, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 375 }, -/* MT_YSCAV */ { P_("monster", "Bone Gasher"), "Scav\\Scav", nullptr, "Scav\\ScavW", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 4, 6, 8, 28, 40, AI_SCAV, 0 , 3, 35, 7, 5, 15, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC , RESIST_LIGHTNING , 3, 0, 552 }, -/* MT_WSKELBW */ { P_("monster", "Skeleton"), "SkelBow\\SklBw", nullptr, "SkelBow\\White", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 3, 2, 4, AI_SKELBOW, 0 , 0, 15, 12, 1, 2, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 110 }, -/* MT_TSKELBW */ { P_("monster", "Corpse Bow"), "SkelBow\\SklBw", nullptr, "SkelBow\\Skelt", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 5, 8, 16, AI_SKELBOW, 0 , 1, 25, 12, 1, 4, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 210 }, -/* MT_RSKELBW */ { P_("monster", "Burning Dead"), "SkelBow\\SklBw", nullptr, nullptr, MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 2, 1, 1, 1, 1, 1 }, 3, 5, 7, 10, 24, AI_SKELBOW, 0 , 2, 30, 12, 1, 6, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 364 }, -/* MT_XSKELBW */ { P_("monster", "Horror"), "SkelBow\\SklBw", nullptr, "SkelBow\\Black", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 3, 1, 1, 1, 1, 1 }, 4, 6, 9, 15, 45, AI_SKELBOW, 0 , 3, 35, 12, 2, 9, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 594 }, -/* MT_WSKELSD */ { P_("monster", "Skeleton Captain"), "SkelSd\\SklSr", nullptr, "SkelSd\\White", MonsterAvailability::Always, 128, 575, true, true, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 1, 3, 2, 3, 6, AI_SKELSD, 0 , 0, 20, 8, 2, 7, 0, 0, 0, 0, 10, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 90 }, -/* MT_TSKELSD */ { P_("monster", "Corpse Captain"), "SkelSd\\SklSr", nullptr, "SkelSd\\Skelt", MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 4, 12, 20, AI_SKELSD, 0 , 1, 30, 8, 3, 9, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 200 }, -/* MT_RSKELSD */ { P_("monster", "Burning Dead Captain"), "SkelSd\\SklSr", nullptr, nullptr, MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 3, 5, 6, 16, 30, AI_SKELSD, 0 , 2, 35, 8, 4, 10, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 393 }, -/* MT_XSKELSD */ { P_("monster", "Horror Captain"), "SkelSd\\SklSr", nullptr, "SkelSd\\Black", MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 4, 6, 8, 35, 50, AI_SKELSD, MFLAG_SEARCH , 3, 40, 8, 5, 14, 0, 0, 0, 0, 30, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 604 }, -/* MT_INVILORD*/ { P_("monster", "Invisible Lord"), "TSneak\\TSneak", nullptr, nullptr, MonsterAvailability::Never, 128, 800, false, false, { 13, 13, 15, 11, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 14, 278, 278, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 65, 8, 16, 30, 0, 0, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 2000 }, -/* MT_SNEAK */ { P_("monster", "Hidden"), "Sneak\\Sneak", nullptr, nullptr, MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 2, 5, 5, 8, 24, AI_SNEAK, MFLAG_HIDDEN , 0, 35, 8, 3, 6, 0, 0, 0, 0, 25, MonsterClass::Demon, 0 , 0 , 3, 0, 278 }, -/* MT_STALKER */ { P_("monster", "Stalker"), "Sneak\\Sneak", nullptr, "Sneak\\Sneakv2", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 5, 7, 9, 30, 45, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 1, 40, 8, 8, 16, 0, 0, 0, 0, 30, MonsterClass::Demon, 0 , 0 , 3, 0, 630 }, -/* MT_UNSEEN */ { P_("monster", "Unseen"), "Sneak\\Sneak", nullptr, "Sneak\\Sneakv3", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 6, 8, 11, 35, 50, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 2, 45, 8, 12, 20, 0, 0, 0, 0, 30, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 935 }, -/* MT_ILLWEAV */ { P_("monster", "Illusion Weaver"), "Sneak\\Sneak", nullptr, "Sneak\\Sneakv1", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 13, 40, 60, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 3, 60, 8, 16, 24, 0, 0, 0, 0, 30, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 1500 }, -/* MT_LRDSAYTR*/ { P_("monster", "Satyr Lord"), "GoatLord\\GoatL", "newsfx\\Satyr", nullptr, MonsterAvailability::Retail, 160, 800, false, false, { 13, 13, 14, 9, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 28, 160, 200, AI_SKELSD, MFLAG_SEARCH , 3, 90, 8, 20, 30, 0, 0, 0, 0, 70, MonsterClass::Animal, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 2800 }, -/* MT_NGOATMC */ { P_("monster", "Flesh Clan"), "GoatMace\\Goat", nullptr, nullptr, MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 4, 6, 8, 30, 45, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 50, 8, 4, 10, 0, 0, 0, 0, 40, MonsterClass::Demon, 0 , 0 , 3, 0, 460 }, -/* MT_BGOATMC */ { P_("monster", "Stone Clan"), "GoatMace\\Goat", nullptr, "GoatMace\\Beige", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 5, 7, 10, 40, 55, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 60, 8, 6, 12, 0, 0, 0, 0, 40, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 685 }, -/* MT_RGOATMC */ { P_("monster", "Fire Clan"), "GoatMace\\Goat", nullptr, "GoatMace\\Red", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 6, 8, 12, 50, 65, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 70, 8, 8, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, RESIST_FIRE , IMMUNE_FIRE , 3, 0, 906 }, -/* MT_GGOATMC */ { P_("monster", "Night Clan"), "GoatMace\\Goat", nullptr, "GoatMace\\Gray", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 7, 9, 14, 55, 70, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 80, 8, 10, 20, 15, 0, 30, 30, 50, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 1190 }, -/* MT_FIEND */ { P_("monster", "Fiend"), "Bat\\Bat", nullptr, "Bat\\red", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 2, 3, 3, 3, 6, AI_BAT, 0 , 0, 35, 5, 1, 6, 0, 0, 0, 0, 0, MonsterClass::Animal, 0 , 0 , 6, T_NODROP, 102 }, -/* MT_BLINK */ { P_("monster", "Blink"), "Bat\\Bat", nullptr, nullptr, MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 3, 5, 7, 12, 28, AI_BAT, 0 , 1, 45, 5, 1, 8, 0, 0, 0, 0, 15, MonsterClass::Animal, 0 , 0 , 6, T_NODROP, 340 }, -/* MT_GLOOM */ { P_("monster", "Gloom"), "Bat\\Bat", nullptr, "Bat\\grey", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 4, 6, 9, 28, 36, AI_BAT, MFLAG_SEARCH , 2, 70, 5, 4, 12, 0, 0, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 6, T_NODROP, 509 }, -/* MT_FAMILIAR*/ { P_("monster", "Familiar"), "Bat\\Bat", nullptr, "Bat\\orange", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 13, 20, 35, AI_BAT, MFLAG_SEARCH , 3, 50, 5, 4, 16, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 6, T_NODROP, 448 }, -/* MT_NGOATBW */ { P_("monster", "Flesh Clan"), "GoatBow\\GoatB", nullptr, nullptr, MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 4, 6, 8, 20, 35, AI_GOATBOW, MFLAG_CAN_OPEN_DOOR, 0, 35, 13, 1, 7, 0, 0, 0, 0, 35, MonsterClass::Demon, 0 , 0 , 3, 0, 448 }, -/* MT_BGOATBW */ { P_("monster", "Stone Clan"), "GoatBow\\GoatB", nullptr, "GoatBow\\Beige", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 5, 7, 10, 30, 40, AI_GOATBOW, MFLAG_CAN_OPEN_DOOR, 1, 40, 13, 2, 9, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 645 }, -/* MT_RGOATBW */ { P_("monster", "Fire Clan"), "GoatBow\\GoatB", nullptr, "GoatBow\\Red", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 6, 8, 12, 40, 50, AI_GOATBOW, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 45, 13, 3, 11, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_FIRE , IMMUNE_FIRE , 3, 0, 822 }, -/* MT_GGOATBW */ { P_("monster", "Night Clan"), "GoatBow\\GoatB", nullptr, "GoatBow\\Gray", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 7, 9, 14, 50, 65, AI_GOATBOW, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 50, 13, 4, 13, 15, 0, 0, 0, 40, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 1092 }, -/* MT_NACID */ { P_("monster", "Acid Beast"), "Acid\\Acid", nullptr, nullptr, MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 11, 40, 66, AI_ACID, 0 , 0, 40, 8, 4, 12, 25, 8, 0, 0, 30, MonsterClass::Animal, IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_ACID , 3, 0, 846 }, -/* MT_RACID */ { P_("monster", "Poison Spitter"), "Acid\\Acid", nullptr, "Acid\\AcidBlk", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 8, 10, 15, 60, 85, AI_ACID, 0 , 1, 45, 8, 4, 16, 25, 8, 0, 0, 30, MonsterClass::Animal, IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_ACID , 3, 0, 1248 }, -/* MT_BACID */ { P_("monster", "Pit Beast"), "Acid\\Acid", nullptr, "Acid\\AcidB", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 10, 12, 21, 80, 110, AI_ACID, 0 , 2, 55, 8, 8, 18, 35, 8, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | IMMUNE_ACID , IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_ACID , 3, 0, 2060 }, -/* MT_XACID */ { P_("monster", "Lava Maw"), "Acid\\Acid", nullptr, "Acid\\AcidR", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 12, 14, 25, 100, 150, AI_ACID, 0 , 3, 65, 8, 10, 20, 40, 8, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_ACID , 3, 0, 2940 }, -/* MT_SKING */ { P_("monster", "Skeleton King"), "SKing\\SKing", nullptr, "SkelAxe\\White", MonsterAvailability::Never, 160, 1010, true, true, { 8, 6, 16, 6, 16, 6 }, { 2, 1, 1, 1, 1, 2 }, 4, 4, 9, 140, 140, AI_SKELKING, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 60, 8, 6, 16, 0, 0, 0, 0, 70, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, Uniq(UITEM_SKCROWN), 570 }, -/* MT_CLEAVER */ { P_("monster", "The Butcher"), "FatC\\FatC", nullptr, nullptr, MonsterAvailability::Never, 128, 980, false, false, { 10, 8, 12, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 1, 1, 1, 320, 320, AI_CLEAVER, 0 , 3, 50, 8, 6, 12, 0, 0, 0, 0, 50, MonsterClass::Demon, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, Uniq(UITEM_CLEAVER), 710 }, -/* MT_FAT */ { P_("monster", "Overlord"), "Fat\\Fat", nullptr, nullptr, MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 5, 7, 10, 60, 80, AI_FAT, 0 , 0, 55, 8, 6, 12, 0, 0, 0, 0, 55, MonsterClass::Demon, 0 , RESIST_FIRE , 3, 0, 635 }, -/* MT_MUDMAN, */ { P_("monster", "Mud Man"), "Fat\\Fat", nullptr, "Fat\\Blue", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 7, 9, 14, 100, 125, AI_FAT, MFLAG_SEARCH , 1, 60, 8, 8, 16, 0, 0, 0, 0, 60, MonsterClass::Demon, 0 , IMMUNE_LIGHTNING , 3, 0, 1165 }, -/* MT_TOAD */ { P_("monster", "Toad Demon"), "Fat\\Fat", nullptr, "Fat\\FatB", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 8, 10, 16, 135, 160, AI_FAT, MFLAG_SEARCH , 2, 70, 8, 8, 16, 40, 0, 8, 20, 65, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 1380 }, -/* MT_FLAYED */ { P_("monster", "Flayed One"), "Fat\\Fat", nullptr, "Fat\\FatF", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 10, 12, 20, 160, 200, AI_FAT, MFLAG_SEARCH , 3, 85, 8, 10, 20, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 2058 }, -/* MT_WYRM */ { P_("monster", "Wyrm"), "Worm\\Worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 5, 7, 11, 60, 90, AI_SKELSD, 0 , 0, 40, 8, 4, 10, 0, 0, 0, 0, 25, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 660 }, -/* MT_CAVSLUG */ { P_("monster", "Cave Slug"), "Worm\\Worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 13, 75, 110, AI_SKELSD, 0 , 1, 50, 8, 6, 13, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 994 }, -/* MT_DVLWYRM */ { P_("monster", "Devil Wyrm"), "Worm\\Worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 7, 9, 15, 100, 140, AI_SKELSD, 0 , 2, 55, 8, 8, 16, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | RESIST_FIRE , 3, 0, 1320 }, -/* MT_DEVOUR */ { P_("monster", "Devourer"), "Worm\\Worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 8, 10, 17, 125, 200, AI_SKELSD, 0 , 3, 60, 8, 10, 20, 0, 0, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | RESIST_FIRE , 3, 0, 1827 }, -/* MT_NMAGMA */ { P_("monster", "Magma Demon"), "Magma\\Magma", nullptr, nullptr, MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 8, 9, 13, 50, 70, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 45, 4, 2, 10, 50, 13, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1076 }, -/* MT_YMAGMA */ { P_("monster", "Blood Stone"), "Magma\\Magma", nullptr, "Magma\\Yellow", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 14, 55, 75, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 50, 4, 2, 12, 50, 14, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1309 }, -/* MT_BMAGMA */ { P_("monster", "Hell Stone"), "Magma\\Magma", nullptr, "Magma\\Blue", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 16, 60, 80, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 60, 4, 2, 20, 60, 14, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1680 }, -/* MT_WMAGMA */ { P_("monster", "Lava Lord"), "Magma\\Magma", nullptr, "Magma\\Wierd", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 18, 70, 85, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 75, 4, 4, 24, 60, 14, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 2124 }, -/* MT_HORNED */ { P_("monster", "Horned Demon"), "Rhino\\Rhino", nullptr, nullptr, MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 7, 9, 13, 40, 80, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 60, 7, 2, 16, 100, 0, 5, 32, 40, MonsterClass::Animal, 0 , RESIST_FIRE , 7, 0, 1172 }, -/* MT_MUDRUN */ { P_("monster", "Mud Runner"), "Rhino\\Rhino", nullptr, "Rhino\\Orange", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 15, 50, 90, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 70, 7, 6, 18, 100, 0, 12, 36, 45, MonsterClass::Animal, 0 , RESIST_FIRE , 7, 0, 1404 }, -/* MT_FROSTC */ { P_("monster", "Frost Charger"), "Rhino\\Rhino", nullptr, "Rhino\\Blue", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 17, 60, 100, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 8, 20, 100, 0, 20, 40, 50, MonsterClass::Animal, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 7, 0, 1720 }, -/* MT_OBLORD */ { P_("monster", "Obsidian Lord"), "Rhino\\Rhino", nullptr, "Rhino\\RhinoB", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 10, 12, 19, 70, 110, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 7, 10, 22, 100, 0, 20, 50, 55, MonsterClass::Animal, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 1809 }, -/* MT_BONEDMN */ { P_("monster", "oldboned"), "Demskel\\Demskl", nullptr, nullptr, MonsterAvailability::Never, 128, 1740, true, true, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 24, 24, 12, 70, 70, AI_STORM, 0 , 0, 60, 8, 6, 14, 12, 0, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC , 7, 0, 1344 }, -/* MT_REDDTH */ { P_("monster", "Red Death"), "Thin\\Thin", nullptr, "Thin\\Thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 8, 10, 16, 96, 96, AI_STORM, 0 , 1, 75, 5, 10, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 2168 }, -/* MT_LTCHDMN */ { P_("monster", "Litch Demon"), "Thin\\Thin", nullptr, "Thin\\Thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 9, 11, 18, 110, 110, AI_STORM, 0 , 2, 80, 5, 10, 24, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2736 }, -/* MT_UDEDBLRG*/ { P_("monster", "Undead Balrog"), "Thin\\Thin", nullptr, "Thin\\Thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 11, 13, 22, 130, 130, AI_STORM, 0 , 3, 85, 5, 12, 30, 0, 0, 0, 0, 65, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 3575 }, -/* MT_INCIN */ { P_("monster", "Incinerator"), "Fireman\\FireM", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 21, 22, 16, 30, 45, AI_FIREMAN, 0 , 0, 75, 8, 8, 16, 0, 0, 0, 0, 25, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 1888 }, -/* MT_FLAMLRD */ { P_("monster", "Flame Lord"), "Fireman\\FireM", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 22, 23, 18, 40, 55, AI_FIREMAN, 0 , 1, 75, 8, 10, 20, 0, 0, 0, 0, 25, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 2250 }, -/* MT_DOOMFIRE*/ { P_("monster", "Doom Fire"), "Fireman\\FireM", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 23, 24, 20, 50, 65, AI_FIREMAN, 0 , 2, 80, 8, 12, 24, 0, 0, 0, 0, 30, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 2740 }, -/* MT_HELLBURN*/ { P_("monster", "Hell Burner"), "Fireman\\FireM", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 24, 24, 22, 60, 80, AI_FIREMAN, 0 , 3, 85, 8, 15, 30, 0, 0, 0, 0, 30, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 3355 }, -/* MT_STORM */ { P_("monster", "Red Storm"), "Thin\\Thin", nullptr, "Thin\\Thinv3", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 9, 11, 18, 55, 110, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 80, 5, 8, 18, 75, 8, 4, 16, 30, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2160 }, -/* MT_RSTORM */ { P_("monster", "Storm Rider"), "Thin\\Thin", nullptr, nullptr, MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 10, 12, 20, 60, 120, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 80, 5, 8, 18, 80, 8, 4, 16, 30, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2391 }, -/* MT_STORML */ { P_("monster", "Storm Lord"), "Thin\\Thin", nullptr, "Thin\\Thinv2", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 11, 13, 22, 75, 135, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 85, 5, 12, 24, 75, 8, 4, 16, 35, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2775 }, -/* MT_MAEL */ { P_("monster", "Maelstrom"), "Thin\\Thin", nullptr, "Thin\\Thinv1", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 12, 14, 24, 90, 150, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 5, 12, 28, 75, 8, 4, 16, 40, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 3177 }, -/* MT_BIGFALL */ { P_("monster", "Devil Kin Brute"), "BigFall\\Fallg", "newsfx\\KBrute", nullptr, MonsterAvailability::Retail, 128, 800, true, false, { 10, 8, 11, 8, 17, 0 }, { 1, 1, 1, 1, 2, 2 }, 21, 22, 27, 120, 160, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 100, 6, 18, 24, 0, 0, 0, 0, 70, MonsterClass::Animal, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 2400 }, -/* MT_WINGED */ { P_("monster", "Winged-Demon"), "Gargoyle\\Gargo", nullptr, nullptr, MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 2 }, 5, 7, 9, 45, 60, AI_GARG, MFLAG_CAN_OPEN_DOOR, 0, 50, 7, 10, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 6, 0, 662 }, -/* MT_GARGOYLE*/ { P_("monster", "Gargoyle"), "Gargoyle\\Gargo", nullptr, "Gargoyle\\GarE", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 2 }, 7, 9, 13, 60, 90, AI_GARG, MFLAG_CAN_OPEN_DOOR, 1, 65, 7, 10, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 6, 0, 1205 }, -/* MT_BLOODCLW*/ { P_("monster", "Blood Claw"), "Gargoyle\\Gargo", nullptr, "Gargoyle\\GargBr", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 1 }, 9, 11, 19, 75, 125, AI_GARG, MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 14, 22, 0, 0, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 6, 0, 1873 }, -/* MT_DEATHW */ { P_("monster", "Death Wing"), "Gargoyle\\Gargo", nullptr, "Gargoyle\\GargB", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 1 }, 10, 12, 23, 90, 150, AI_GARG, MFLAG_CAN_OPEN_DOOR, 3, 95, 7, 16, 28, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 6, 0, 2278 }, -/* MT_MEGA */ { P_("monster", "Slayer"), "Mega\\Mega", nullptr, nullptr, MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 10, 12, 20, 120, 140, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 100, 8, 12, 20, 0, 3, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 2300 }, -/* MT_GUARD */ { P_("monster", "Guardian"), "Mega\\Mega", nullptr, "Mega\\Guard", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 11, 13, 22, 140, 160, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 110, 8, 14, 22, 0, 3, 0, 0, 65, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 2714 }, -/* MT_VTEXLRD */ { P_("monster", "Vortex Lord"), "Mega\\Mega", nullptr, "Mega\\Vtexl", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 12, 14, 24, 160, 180, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 120, 8, 18, 24, 0, 3, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 3252 }, -/* MT_BALROG */ { P_("monster", "Balrog"), "Mega\\Mega", nullptr, "Mega\\Balr", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 13, 15, 26, 180, 200, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 130, 8, 22, 30, 0, 3, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 3643 }, -/* MT_NSNAKE */ { P_("monster", "Cave Viper"), "Snake\\Snake", nullptr, nullptr, MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 11, 13, 21, 100, 150, AI_SNAKE, MFLAG_SEARCH , 0, 90, 8, 8, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC , 7, 0, 2725 }, -/* MT_RSNAKE */ { P_("monster", "Fire Drake"), "Snake\\Snake", nullptr, "Snake\\SnakR", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 12, 14, 23, 120, 170, AI_SNAKE, MFLAG_SEARCH , 1, 105, 8, 12, 24, 0, 0, 0, 0, 65, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 3139 }, -/* MT_BSNAKE */ { P_("monster", "Gold Viper"), "Snake\\Snake", nullptr, "Snake\\Snakg", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 14, 25, 140, 180, AI_SNAKE, MFLAG_SEARCH , 2, 120, 8, 15, 26, 0, 0, 0, 0, 70, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 7, 0, 3540 }, -/* MT_GSNAKE */ { P_("monster", "Azure Drake"), "Snake\\Snake", nullptr, "Snake\\Snakb", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 15, 16, 27, 160, 200, AI_SNAKE, MFLAG_SEARCH , 3, 130, 8, 18, 30, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 3791 }, -/* MT_NBLACK */ { P_("monster", "Black Knight"), "Black\\Black", nullptr, nullptr, MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 12, 14, 24, 150, 150, AI_SKELSD, MFLAG_SEARCH , 0, 110, 8, 15, 20, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 7, 0, 3360 }, -/* MT_RTBLACK */ { P_("monster", "Doom Guard"), "Black\\Black", nullptr, "Black\\BlkKntRT", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 15, 26, 165, 165, AI_SKELSD, MFLAG_SEARCH , 0, 130, 8, 18, 25, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 3650 }, -/* MT_BTBLACK */ { P_("monster", "Steel Lord"), "Black\\Black", nullptr, "Black\\BlkKntBT", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 14, 16, 28, 180, 180, AI_SKELSD, MFLAG_SEARCH , 1, 120, 8, 20, 30, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 4252 }, -/* MT_RBLACK */ { P_("monster", "Blood Knight"), "Black\\Black", nullptr, "Black\\BlkKntBe", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 14, 30, 200, 200, AI_SKELSD, MFLAG_SEARCH , 1, 130, 8, 25, 35, 0, 0, 0, 0, 85, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 5130 }, -/* MT_UNRAV */ { P_("monster", "The Shredded"), "Unrav\\Unrav", "newsfx\\Shred", nullptr, MonsterAvailability::Retail, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 17, 18, 23, 70, 90, AI_SKELSD, 0 , 0, 75, 7, 4, 12, 0, 0, 0, 0, 65, MonsterClass::Undead, RESIST_FIRE | RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 900 }, -/* MT_HOLOWONE*/ { P_("monster", "Hollow One"), "Unrav\\Unrav", "Acid\\Acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 18, 19, 27, 135, 240, AI_SKELSD, 0 , 1, 75, 7, 12, 24, 0, 0, 0, 0, 75, MonsterClass::Undead, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 4374 }, -/* MT_PAINMSTR*/ { P_("monster", "Pain Master"), "Unrav\\Unrav", "Acid\\Acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 19, 20, 29, 110, 200, AI_SKELSD, 0 , 2, 80, 7, 16, 30, 0, 0, 0, 0, 80, MonsterClass::Undead, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 5147 }, -/* MT_REALWEAV*/ { P_("monster", "Reality Weaver"), "Unrav\\Unrav", "Acid\\Acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 20, 20, 30, 135, 240, AI_SKELSD, 0 , 3, 85, 7, 20, 35, 0, 0, 0, 0, 85, MonsterClass::Undead, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 5925 }, -/* MT_SUCCUBUS*/ { P_("monster", "Succubus"), "Succ\\Scbs", nullptr, nullptr, MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 12, 14, 24, 120, 150, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 0, 100, 10, 1, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 3696 }, -/* MT_SNOWWICH*/ { P_("monster", "Snow Witch"), "Succ\\Scbs", nullptr, "Succ\\Succb", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 13, 15, 26, 135, 175, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 1, 110, 10, 1, 24, 0, 0, 0, 0, 65, MonsterClass::Demon, RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 4084 }, -/* MT_HLSPWN */ { P_("monster", "Hell Spawn"), "Succ\\Scbs", nullptr, "Succ\\Succrw", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 14, 16, 28, 150, 200, AI_SUCC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 115, 10, 1, 30, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 4480 }, -/* MT_SOLBRNR */ { P_("monster", "Soul Burner"), "Succ\\Scbs", nullptr, "Succ\\Succbw", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 15, 16, 30, 140, 225, AI_SUCC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 120, 10, 1, 35, 0, 0, 0, 0, 85, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 4644 }, -/* MT_COUNSLR */ { P_("monster", "Counselor"), "Mage\\Mage", nullptr, nullptr, MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 13, 14, 25, 70, 70, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 0, 90, 8, 8, 20, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 4070 }, -/* MT_MAGISTR */ { P_("monster", "Magistrate"), "Mage\\Mage", nullptr, "Mage\\Cnselg", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 14, 15, 27, 85, 85, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 1, 100, 8, 10, 24, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 4478 }, -/* MT_CABALIST*/ { P_("monster", "Cabalist"), "Mage\\Mage", nullptr, "Mage\\Cnselgd", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 15, 16, 29, 120, 120, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 2, 110, 8, 14, 30, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 4929 }, -/* MT_ADVOCATE*/ { P_("monster", "Advocate"), "Mage\\Mage", nullptr, "Mage\\Cnselbk", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 16, 16, 30, 145, 145, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 15, 25, 0, 0, 0, 0, 0, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 4968 }, -/* MT_GOLEM */ { P_("monster", "Golem"), "Golem\\Golem", "Golem\\Golm", nullptr, MonsterAvailability::Never, 96, 386, true, false, { 0, 16, 12, 0, 12, 20 }, { 1, 1, 1, 1, 1, 1 }, 1, 1, 12, 1, 1, AI_GOLUM, MFLAG_CAN_OPEN_DOOR, 0, 0, 7, 1, 1, 0, 0, 0, 0, 1, MonsterClass::Demon, 0 , 0 , 0, 0, 0 }, -/* MT_DIABLO */ { P_("monster", "The Dark Lord"), "Diablo\\Diablo", nullptr, nullptr, MonsterAvailability::Never, 160, 2000, true, true, { 16, 6, 16, 6, 16, 16 }, { 1, 1, 1, 1, 1, 1 }, 26, 26, 45, 3333, 3333, AI_DIABLO, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 220, 4, 30, 60, 0, 11, 0, 0, 90, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 31666 }, -/* MT_DARKMAGE*/ { P_("monster", "The Arch-Litch Malignus"), "DarkMage\\Dmage", "DarkMage\\Dmag", nullptr, MonsterAvailability::Never, 128, 1060, true, false, { 6, 1, 21, 6, 23, 18 }, { 1, 1, 1, 1, 1, 1 }, 21, 21, 30, 160, 160, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 20, 40, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 4968 }, -/* MT_HELLBOAR*/ { P_("monster", "Hellboar"), "Fork\\Fork", "newsfx\\HBoar", nullptr, MonsterAvailability::Retail, 188, 800, false, false, { 10, 10, 15, 6, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 23, 80, 100, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_SEARCH , 2, 70, 7, 16, 24, 0, 0, 0, 0, 60, MonsterClass::Demon, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 750 }, -/* MT_STINGER */ { P_("monster", "Stinger"), "Scorp\\Scorp", "newsfx\\Stingr", nullptr, MonsterAvailability::Retail, 64, 305, false, false, { 10, 10, 12, 6, 15, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 30, 40, AI_SKELSD, 0 , 3, 85, 8, 1, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 1, 0, 500 }, -/* MT_PSYCHORB*/ { P_("monster", "Psychorb"), "Eye\\Eye", "newsfx\\psyco", nullptr, MonsterAvailability::Retail, 156, 800, false, false, { 12, 13, 13, 7, 21, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 20, 30, AI_PSYCHORB, 0 , 3, 80, 8, 10, 10, 0, 0, 0, 0, 40, MonsterClass::Animal, 0 , RESIST_FIRE , 6, 0, 450 }, -/* MT_ARACHNON*/ { P_("monster", "Arachnon"), "Spider\\Spider", "newsfx\\SLord", nullptr, MonsterAvailability::Retail, 148, 800, false, false, { 12, 10, 15, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 60, 80, AI_SKELSD, MFLAG_SEARCH , 3, 50, 8, 5, 15, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 7, 0, 500 }, -/* MT_FELLTWIN*/ { P_("monster", "Felltwin"), "TSneak\\TSneak", "newsfx\\FTwin", nullptr, MonsterAvailability::Retail, 128, 800, false, false, { 13, 13, 15, 11, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 50, 70, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 70, 8, 10, 18, 0, 0, 0, 0, 50, MonsterClass::Demon, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 600 }, -/* MT_HORKSPWN*/ { P_("monster", "Hork Spawn"), "Spawn\\Spawn", "newsfx\\HSpawn", nullptr, MonsterAvailability::Retail, 164, 520, false, true, { 15, 12, 14, 11, 14, 0 }, { 1, 1, 1, 1, 1, 1 }, 18, 19, 22, 30, 30, AI_SKELSD, 0 , 3, 60, 8, 10, 25, 0, 0, 0, 0, 25, MonsterClass::Demon, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 250 }, -/* MT_VENMTAIL*/ { P_("monster", "Venomtail"), "WScorp\\WScorp", "newsfx\\Stingr", nullptr, MonsterAvailability::Retail, 86, 305, false, false, { 10, 10, 12, 6, 15, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 40, 50, AI_SKELSD, 0 , 3, 85, 8, 1, 30, 0, 0, 0, 0, 60, MonsterClass::Animal, RESIST_LIGHTNING , IMMUNE_LIGHTNING , 1, 0, 1000 }, -/* MT_NECRMORB*/ { P_("monster", "Necromorb"), "Eye2\\Eye2", "newsfx\\Psyco", nullptr, MonsterAvailability::Retail, 140, 800, false, false, { 12, 13, 13, 7, 21, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 30, 40, AI_NECROMORB, 0 , 3, 80, 8, 20, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, RESIST_FIRE , IMMUNE_FIRE | RESIST_LIGHTNING , 6, 0, 1100 }, -/* MT_SPIDLORD*/ { P_("monster", "Spider Lord"), "bSpidr\\bSpidr", "newsfx\\SLord", nullptr, MonsterAvailability::Retail, 148, 800, true, true, { 12, 10, 15, 6, 20, 10 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 80, 100, AI_ACID, MFLAG_SEARCH , 3, 60, 8, 8, 20, 75, 8, 10, 10, 60, MonsterClass::Animal, RESIST_LIGHTNING , RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 1250 }, -/* MT_LASHWORM*/ { P_("monster", "Lashworm"), "Clasp\\Clasp", "newsfx\\Lworm", nullptr, MonsterAvailability::Retail, 176, 800, false, false, { 10, 12, 15, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 19, 20, 20, 30, 30, AI_SKELSD, 0 , 3, 90, 8, 12, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 600 }, -/* MT_TORCHANT*/ { P_("monster", "Torchant"), "AntWorm\\Worm", "newsfx\\TchAnt", nullptr, MonsterAvailability::Retail, 192, 800, false, false, { 14, 12, 12, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 22, 60, 80, AI_TORCHANT, 0 , 3, 75, 8, 20, 30, 0, 0, 0, 0, 70, MonsterClass::Animal, IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 1250 }, -/* MT_HORKDMN */ { P_("monster", "Hork Demon"), "HorkD\\HorkD", "newsfx\\HDemon", nullptr, MonsterAvailability::Never, 138, 800, true, true, { 15, 8, 16, 6, 16, 9 }, { 2, 1, 1, 1, 1, 2 }, 19, 19, 27, 120, 160, AI_SKELSD, 0 , 3, 60, 8, 20, 35, 80, 8, 0, 0, 80, MonsterClass::Demon, RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2000 }, -/* MT_DEFILER */ { P_("monster", "Hell Bug"), "Hellbug\\Hellbg", "newsfx\\Defile", nullptr, MonsterAvailability::Never, 198, 800, true, true, { 8, 8, 14, 6, 14, 12 }, { 1, 1, 1, 1, 1, 1 }, 20, 20, 30, 240, 240, AI_SKELSD, MFLAG_SEARCH , 3, 110, 8, 20, 30, 90, 8, 50, 60, 80, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 5000 }, -/* MT_GRAVEDIG*/ { P_("monster", "Gravedigger"), "Gravdg\\Gravdg", "newsfx\\GDiggr", nullptr, MonsterAvailability::Retail, 124, 800, true, true, { 24, 24, 12, 6, 16, 16 }, { 2, 1, 1, 1, 1, 1 }, 21, 21, 26, 120, 240, AI_SCAV, MFLAG_CAN_OPEN_DOOR, 3, 80, 6, 2, 12, 0, 0, 0, 0, 20, MonsterClass::Undead, IMMUNE_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 3, 0, 2000 }, -/* MT_TOMBRAT */ { P_("monster", "Tomb Rat"), "Rat\\Rat", "newsfx\\TmbRat", nullptr, MonsterAvailability::Retail, 104, 550, false, false, { 11, 8, 12, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 24, 80, 120, AI_SKELSD, 0 , 3, 120, 8, 12, 25, 0, 0, 0, 0, 30, MonsterClass::Animal, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 1800 }, -/* MT_FIREBAT */ { P_("monster", "Firebat"), "Hellbat\\Helbat", "newsfx\\HelBat", nullptr, MonsterAvailability::Retail, 96, 550, false, false, { 18, 16, 14, 6, 18, 11 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 24, 60, 80, AI_FIREBAT, 0 , 3, 100, 8, 15, 20, 0, 0, 0, 0, 70, MonsterClass::Animal, IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 2400 }, -/* MT_SKLWING */ { P_("monster", "Skullwing"), "Demskel\\Demskl", "newsfx\\SWing", "SkelAxe\\Skelt", MonsterAvailability::Retail, 128, 1740, true, false, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 21, 22, 27, 70, 70, AI_SKELSD, 0 , 0, 75, 7, 15, 20, 75, 9, 15, 20, 80, MonsterClass::Undead, RESIST_FIRE | RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 3000 }, -/* MT_LICH */ { P_("monster", "Lich"), "Lich\\Lich", "newsfx\\Lich", nullptr, MonsterAvailability::Retail, 96, 800, false, true, { 12, 10, 10, 7, 21, 0 }, { 2, 1, 1, 1, 2, 1 }, 21, 22, 25, 80, 100, AI_LICH, 0 , 3, 100, 8, 15, 20, 0, 0, 0, 0, 60, MonsterClass::Undead, RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 3, 0, 3000 }, -/* MT_CRYPTDMN*/ { P_("monster", "Crypt Demon"), "Bubba\\Bubba", "newsfx\\Crypt", nullptr, MonsterAvailability::Retail, 154, 800, false, true, { 8, 18, 12, 8, 21, 0 }, { 3, 1, 1, 1, 1, 1 }, 22, 23, 28, 200, 240, AI_SKELSD, 0 , 3, 100, 8, 20, 40, 0, 0, 0, 0, 85, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 3200 }, -/* MT_HELLBAT */ { P_("monster", "Hellbat"), "Hellbat2\\bhelbt", "newsfx\\HelBat", nullptr, MonsterAvailability::Retail, 96, 550, true, false, { 18, 16, 14, 6, 18, 11 }, { 2, 1, 1, 1, 1, 1 }, 23, 24, 29, 100, 140, AI_TORCHANT, 0 , 3, 110, 8, 30, 30, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 3600 }, -/* MT_BONEDEMN*/ { P_("monster", "Bone Demon"), "Demskel\\Demskl", "newsfx\\SWing", nullptr, MonsterAvailability::Retail, 128, 1740, true, true, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 23, 24, 30, 240, 280, AI_BONEDEMON, 0 , 0, 100, 8, 40, 50, 160, 12, 50, 50, 50, MonsterClass::Undead, IMMUNE_FIRE | IMMUNE_LIGHTNING , IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 5000 }, -/* MT_ARCHLICH*/ { P_("monster", "Arch Lich"), "Lich2\\Lich2", "newsfx\\Lich", nullptr, MonsterAvailability::Retail, 136, 800, false, true, { 12, 10, 10, 7, 21, 0 }, { 2, 1, 1, 1, 2, 1 }, 23, 24, 30, 180, 200, AI_ARCHLICH, 0 , 3, 120, 8, 30, 30, 0, 0, 0, 0, 75, MonsterClass::Undead, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 4000 }, -/* MT_BICLOPS */ { P_("monster", "Biclops"), "Byclps\\Byclps", "newsfx\\Biclop", nullptr, MonsterAvailability::Retail, 180, 800, false, false, { 10, 11, 16, 6, 16, 0 }, { 2, 1, 1, 1, 2, 1 }, 23, 24, 30, 200, 240, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_CAN_OPEN_DOOR, 3, 90, 8, 40, 50, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 4000 }, -/* MT_FLESTHNG*/ { P_("monster", "Flesh Thing"), "Flesh\\Flesh", "newsfx\\FleshT", nullptr, MonsterAvailability::Retail, 164, 800, false, true, { 15, 24, 15, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 23, 24, 28, 300, 400, AI_SKELSD, 0 , 3, 150, 8, 12, 18, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 4000 }, -/* MT_REAPER */ { P_("monster", "Reaper"), "Reaper\\Reap", "newsfx\\Reaper", nullptr, MonsterAvailability::Retail, 180, 800, false, false, { 12, 10, 14, 6, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 23, 24, 30, 260, 300, AI_SKELSD, 0 , 3, 120, 8, 30, 35, 0, 0, 0, 0, 90, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 6000 }, +/* MT_NZOMBIE */ { P_("monster", "Zombie"), "zombie\\zombie", nullptr, nullptr, MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 1, 2, 1, 4, 7, AI_ZOMBIE, 0 , 0, 10, 8, 2, 5, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 54 }, +/* MT_BZOMBIE */ { P_("monster", "Ghoul"), "zombie\\zombie", nullptr, "zombie\\bluered", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 2, 7, 11, AI_ZOMBIE, 0 , 1, 10, 8, 3, 10, 0, 0, 0, 0, 10, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 58 }, +/* MT_GZOMBIE */ { P_("monster", "Rotting Carcass"), "zombie\\zombie", nullptr, "zombie\\grey", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 4, 15, 25, AI_ZOMBIE, 0 , 2, 25, 8, 5, 15, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 136 }, +/* MT_YZOMBIE */ { P_("monster", "Black Death"), "zombie\\zombie", nullptr, "zombie\\yellow", MonsterAvailability::Always, 128, 799, false, false, { 11, 24, 12, 6, 16, 0 }, { 4, 1, 1, 1, 1, 1 }, 3, 5, 6, 25, 40, AI_ZOMBIE, 0 , 3, 30, 8, 6, 22, 0, 0, 0, 0, 20, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 240 }, +/* MT_RFALLSP */ { P_("monster", "Fallen One"), "falspear\\phall", nullptr, "falspear\\fallent", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 1, 2, 1, 1, 4, AI_FALLEN, 0 , 0, 15, 7, 1, 3, 0, 5, 0, 0, 0, MonsterClass::Animal, 0 , 0 , 3, 0, 46 }, +/* MT_DFALLSP */ { P_("monster", "Carver"), "falspear\\phall", nullptr, "falspear\\dark", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 2, 3, 3, 4, 8, AI_FALLEN, 0 , 2, 20, 7, 2, 5, 0, 5, 0, 0, 5, MonsterClass::Animal, 0 , 0 , 3, 0, 80 }, +/* MT_YFALLSP */ { P_("monster", "Devil Kin"), "falspear\\phall", nullptr, nullptr, MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 2, 4, 5, 12, 24, AI_FALLEN, 0 , 2, 25, 7, 3, 7, 0, 5, 0, 0, 10, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 155 }, +/* MT_BFALLSP */ { P_("monster", "Dark One"), "falspear\\phall", nullptr, "falspear\\blue", MonsterAvailability::Always, 128, 543, true, true, { 11, 11, 13, 11, 18, 13 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 7, 20, 36, AI_FALLEN, 0 , 3, 30, 7, 4, 8, 0, 5, 0, 0, 15, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 255 }, +/* MT_WSKELAX */ { P_("monster", "Skeleton"), "skelaxe\\sklax", nullptr, "skelaxe\\white", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 5, 1, 1, 1, 1, 1 }, 1, 2, 1, 2, 4, AI_SKELSD, 0 , 0, 20, 8, 1, 4, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 64 }, +/* MT_TSKELAX */ { P_("monster", "Corpse Axe"), "skelaxe\\sklax", nullptr, "skelaxe\\skelt", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 2, 4, 7, AI_SKELSD, 0 , 1, 25, 8, 3, 5, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 68 }, +/* MT_RSKELAX */ { P_("monster", "Burning Dead"), "skelaxe\\sklax", nullptr, nullptr, MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 2, 1, 1, 1, 1, 1 }, 2, 4, 4, 8, 12, AI_SKELSD, 0 , 2, 30, 8, 3, 7, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 154 }, +/* MT_XSKELAX */ { P_("monster", "Horror"), "skelaxe\\sklax", nullptr, "skelaxe\\black", MonsterAvailability::Always, 128, 553, true, false, { 12, 8, 13, 6, 17, 16 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 6, 12, 20, AI_SKELSD, 0 , 3, 35, 8, 4, 9, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 264 }, +/* MT_RFALLSD */ { P_("monster", "Fallen One"), "falsword\\fall", nullptr, "falsword\\fallent", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 1, 2, 1, 2, 5, AI_FALLEN, 0 , 0, 15, 8, 1, 4, 0, 5, 0, 0, 10, MonsterClass::Animal, 0 , 0 , 3, 0, 52 }, +/* MT_DFALLSD */ { P_("monster", "Carver"), "falsword\\fall", nullptr, "falsword\\dark", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 2, 3, 3, 5, 9, AI_FALLEN, 0 , 1, 20, 8, 2, 7, 0, 5, 0, 0, 15, MonsterClass::Animal, 0 , 0 , 3, 0, 90 }, +/* MT_YFALLSD */ { P_("monster", "Devil Kin"), "falsword\\fall", nullptr, nullptr, MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 2, 4, 5, 16, 24, AI_FALLEN, 0 , 2, 25, 8, 4, 10, 0, 5, 0, 0, 20, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 180 }, +/* MT_BFALLSD */ { P_("monster", "Dark One"), "falsword\\fall", nullptr, "falsword\\blue", MonsterAvailability::Always, 128, 623, true, true, { 12, 12, 13, 11, 14, 15 }, { 3, 1, 1, 1, 1, 1 }, 3, 5, 7, 24, 36, AI_FALLEN, 0 , 3, 30, 8, 4, 12, 0, 5, 0, 0, 25, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 280 }, +/* MT_NSCAV */ { P_("monster", "Scavenger"), "scav\\scav", nullptr, nullptr, MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 1, 3, 2, 3, 6, AI_SCAV, 0 , 0, 20, 7, 1, 5, 0, 0, 0, 0, 10, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 80 }, +/* MT_BSCAV */ { P_("monster", "Plague Eater"), "scav\\scav", nullptr, "scav\\scavbr", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 2, 4, 4, 12, 24, AI_SCAV, 0 , 1, 30, 7, 1, 8, 0, 0, 0, 0, 20, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 3, 0, 188 }, +/* MT_WSCAV */ { P_("monster", "Shadow Beast"), "scav\\scav", nullptr, "scav\\scavbe", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 3, 5, 6, 24, 36, AI_SCAV, 0 , 2, 35, 7, 3, 12, 0, 0, 0, 0, 25, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 375 }, +/* MT_YSCAV */ { P_("monster", "Bone Gasher"), "scav\\scav", nullptr, "scav\\scavw", MonsterAvailability::Always, 128, 410, true, false, { 12, 8, 12, 6, 20, 11 }, { 2, 1, 1, 1, 1, 1 }, 4, 6, 8, 28, 40, AI_SCAV, 0 , 3, 35, 7, 5, 15, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC , RESIST_LIGHTNING , 3, 0, 552 }, +/* MT_WSKELBW */ { P_("monster", "Skeleton"), "skelbow\\sklbw", nullptr, "skelbow\\white", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 3, 3, 2, 4, AI_SKELBOW, 0 , 0, 15, 12, 1, 2, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 110 }, +/* MT_TSKELBW */ { P_("monster", "Corpse Bow"), "skelbow\\sklbw", nullptr, "skelbow\\skelt", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 5, 8, 16, AI_SKELBOW, 0 , 1, 25, 12, 1, 4, 0, 0, 0, 0, 0, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 210 }, +/* MT_RSKELBW */ { P_("monster", "Burning Dead"), "skelbow\\sklbw", nullptr, nullptr, MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 2, 1, 1, 1, 1, 1 }, 3, 5, 7, 10, 24, AI_SKELBOW, 0 , 2, 30, 12, 1, 6, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 364 }, +/* MT_XSKELBW */ { P_("monster", "Horror"), "skelbow\\sklbw", nullptr, "skelbow\\black", MonsterAvailability::Always, 128, 567, true, false, { 9, 8, 16, 5, 16, 16 }, { 3, 1, 1, 1, 1, 1 }, 4, 6, 9, 15, 45, AI_SKELBOW, 0 , 3, 35, 12, 2, 9, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 594 }, +/* MT_WSKELSD */ { P_("monster", "Skeleton Captain"), "skelsd\\sklsr", nullptr, "skelsd\\white", MonsterAvailability::Always, 128, 575, true, true, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 1, 3, 2, 3, 6, AI_SKELSD, 0 , 0, 20, 8, 2, 7, 0, 0, 0, 0, 10, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 90 }, +/* MT_TSKELSD */ { P_("monster", "Corpse Captain"), "skelsd\\sklsr", nullptr, "skelsd\\skelt", MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 2, 4, 4, 12, 20, AI_SKELSD, 0 , 1, 30, 8, 3, 9, 0, 0, 0, 0, 5, MonsterClass::Undead, IMMUNE_MAGIC , IMMUNE_MAGIC , 3, 0, 200 }, +/* MT_RSKELSD */ { P_("monster", "Burning Dead Captain"), "skelsd\\sklsr", nullptr, nullptr, MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 3, 5, 6, 16, 30, AI_SKELSD, 0 , 2, 35, 8, 4, 10, 0, 0, 0, 0, 15, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 393 }, +/* MT_XSKELSD */ { P_("monster", "Horror Captain"), "skelsd\\sklsr", nullptr, "skelsd\\black", MonsterAvailability::Always, 128, 575, true, false, { 13, 8, 12, 7, 15, 16 }, { 4, 1, 1, 1, 1, 1 }, 4, 6, 8, 35, 50, AI_SKELSD, MFLAG_SEARCH , 3, 40, 8, 5, 14, 0, 0, 0, 0, 30, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 604 }, +/* MT_INVILORD*/ { P_("monster", "Invisible Lord"), "tsneak\\tsneak", nullptr, nullptr, MonsterAvailability::Never, 128, 800, false, false, { 13, 13, 15, 11, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 14, 278, 278, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 65, 8, 16, 30, 0, 0, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 2000 }, +/* MT_SNEAK */ { P_("monster", "Hidden"), "sneak\\sneak", nullptr, nullptr, MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 2, 5, 5, 8, 24, AI_SNEAK, MFLAG_HIDDEN , 0, 35, 8, 3, 6, 0, 0, 0, 0, 25, MonsterClass::Demon, 0 , 0 , 3, 0, 278 }, +/* MT_STALKER */ { P_("monster", "Stalker"), "sneak\\sneak", nullptr, "sneak\\sneakv2", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 5, 7, 9, 30, 45, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 1, 40, 8, 8, 16, 0, 0, 0, 0, 30, MonsterClass::Demon, 0 , 0 , 3, 0, 630 }, +/* MT_UNSEEN */ { P_("monster", "Unseen"), "sneak\\sneak", nullptr, "sneak\\sneakv3", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 6, 8, 11, 35, 50, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 2, 45, 8, 12, 20, 0, 0, 0, 0, 30, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 935 }, +/* MT_ILLWEAV */ { P_("monster", "Illusion Weaver"), "sneak\\sneak", nullptr, "sneak\\sneakv1", MonsterAvailability::Retail, 128, 992, true, false, { 16, 8, 12, 8, 24, 15 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 13, 40, 60, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 3, 60, 8, 16, 24, 0, 0, 0, 0, 30, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 1500 }, +/* MT_LRDSAYTR*/ { P_("monster", "Satyr Lord"), "goatlord\\goatl", "newsfx\\satyr", nullptr, MonsterAvailability::Retail, 160, 800, false, false, { 13, 13, 14, 9, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 28, 160, 200, AI_SKELSD, MFLAG_SEARCH , 3, 90, 8, 20, 30, 0, 0, 0, 0, 70, MonsterClass::Animal, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 2800 }, +/* MT_NGOATMC */ { P_("monster", "Flesh Clan"), "goatmace\\goat", nullptr, nullptr, MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 4, 6, 8, 30, 45, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 50, 8, 4, 10, 0, 0, 0, 0, 40, MonsterClass::Demon, 0 , 0 , 3, 0, 460 }, +/* MT_BGOATMC */ { P_("monster", "Stone Clan"), "goatmace\\goat", nullptr, "goatmace\\beige", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 5, 7, 10, 40, 55, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 60, 8, 6, 12, 0, 0, 0, 0, 40, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 685 }, +/* MT_RGOATMC */ { P_("monster", "Fire Clan"), "goatmace\\goat", nullptr, "goatmace\\red", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 6, 8, 12, 50, 65, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 70, 8, 8, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, RESIST_FIRE , IMMUNE_FIRE , 3, 0, 906 }, +/* MT_GGOATMC */ { P_("monster", "Night Clan"), "goatmace\\goat", nullptr, "goatmace\\gray", MonsterAvailability::Retail, 128, 1030, true, false, { 12, 8, 12, 6, 20, 12 }, { 2, 1, 1, 1, 1, 1 }, 7, 9, 14, 55, 70, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 80, 8, 10, 20, 15, 0, 30, 30, 50, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 1190 }, +/* MT_FIEND */ { P_("monster", "Fiend"), "bat\\bat", nullptr, "bat\\red", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 2, 3, 3, 3, 6, AI_BAT, 0 , 0, 35, 5, 1, 6, 0, 0, 0, 0, 0, MonsterClass::Animal, 0 , 0 , 6, T_NODROP, 102 }, +/* MT_BLINK */ { P_("monster", "Blink"), "bat\\bat", nullptr, nullptr, MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 3, 5, 7, 12, 28, AI_BAT, 0 , 1, 45, 5, 1, 8, 0, 0, 0, 0, 15, MonsterClass::Animal, 0 , 0 , 6, T_NODROP, 340 }, +/* MT_GLOOM */ { P_("monster", "Gloom"), "bat\\bat", nullptr, "bat\\grey", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 4, 6, 9, 28, 36, AI_BAT, MFLAG_SEARCH , 2, 70, 5, 4, 12, 0, 0, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 6, T_NODROP, 509 }, +/* MT_FAMILIAR*/ { P_("monster", "Familiar"), "bat\\bat", nullptr, "bat\\orange", MonsterAvailability::Always, 96, 364, false, false, { 9, 13, 10, 9, 13, 0 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 13, 20, 35, AI_BAT, MFLAG_SEARCH , 3, 50, 5, 4, 16, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 6, T_NODROP, 448 }, +/* MT_NGOATBW */ { P_("monster", "Flesh Clan"), "goatbow\\goatb", nullptr, nullptr, MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 4, 6, 8, 20, 35, AI_GOATBOW, MFLAG_CAN_OPEN_DOOR, 0, 35, 13, 1, 7, 0, 0, 0, 0, 35, MonsterClass::Demon, 0 , 0 , 3, 0, 448 }, +/* MT_BGOATBW */ { P_("monster", "Stone Clan"), "goatbow\\goatb", nullptr, "goatbow\\beige", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 5, 7, 10, 30, 40, AI_GOATBOW, MFLAG_CAN_OPEN_DOOR, 1, 40, 13, 2, 9, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 645 }, +/* MT_RGOATBW */ { P_("monster", "Fire Clan"), "goatbow\\goatb", nullptr, "goatbow\\red", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 6, 8, 12, 40, 50, AI_GOATBOW, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 45, 13, 3, 11, 0, 0, 0, 0, 35, MonsterClass::Demon, RESIST_FIRE , IMMUNE_FIRE , 3, 0, 822 }, +/* MT_GGOATBW */ { P_("monster", "Night Clan"), "goatbow\\goatb", nullptr, "goatbow\\gray", MonsterAvailability::Retail, 128, 1040, false, false, { 12, 8, 16, 6, 20, 0 }, { 3, 1, 1, 1, 1, 1 }, 7, 9, 14, 50, 65, AI_GOATBOW, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 50, 13, 4, 13, 15, 0, 0, 0, 40, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC , 3, 0, 1092 }, +/* MT_NACID */ { P_("monster", "Acid Beast"), "acid\\acid", nullptr, nullptr, MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 11, 40, 66, AI_ACID, 0 , 0, 40, 8, 4, 12, 25, 8, 0, 0, 30, MonsterClass::Animal, IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_ACID , 3, 0, 846 }, +/* MT_RACID */ { P_("monster", "Poison Spitter"), "acid\\acid", nullptr, "acid\\acidblk", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 8, 10, 15, 60, 85, AI_ACID, 0 , 1, 45, 8, 4, 16, 25, 8, 0, 0, 30, MonsterClass::Animal, IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_ACID , 3, 0, 1248 }, +/* MT_BACID */ { P_("monster", "Pit Beast"), "acid\\acid", nullptr, "acid\\acidb", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 10, 12, 21, 80, 110, AI_ACID, 0 , 2, 55, 8, 8, 18, 35, 8, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | IMMUNE_ACID , IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_ACID , 3, 0, 2060 }, +/* MT_XACID */ { P_("monster", "Lava Maw"), "acid\\acid", nullptr, "acid\\acidr", MonsterAvailability::Retail, 128, 716, true, true, { 13, 8, 12, 8, 16, 12 }, { 1, 1, 1, 1, 1, 1 }, 12, 14, 25, 100, 150, AI_ACID, 0 , 3, 65, 8, 10, 20, 40, 8, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_ACID , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_ACID , 3, 0, 2940 }, +/* MT_SKING */ { P_("monster", "Skeleton King"), "sking\\sking", nullptr, "skelaxe\\white", MonsterAvailability::Never, 160, 1010, true, true, { 8, 6, 16, 6, 16, 6 }, { 2, 1, 1, 1, 1, 2 }, 4, 4, 9, 140, 140, AI_SKELKING, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 60, 8, 6, 16, 0, 0, 0, 0, 70, MonsterClass::Undead, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, Uniq(UITEM_SKCROWN), 570 }, +/* MT_CLEAVER */ { P_("monster", "The Butcher"), "fatc\\fatc", nullptr, nullptr, MonsterAvailability::Never, 128, 980, false, false, { 10, 8, 12, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 1, 1, 1, 320, 320, AI_CLEAVER, 0 , 3, 50, 8, 6, 12, 0, 0, 0, 0, 50, MonsterClass::Demon, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, Uniq(UITEM_CLEAVER), 710 }, +/* MT_FAT */ { P_("monster", "Overlord"), "fat\\fat", nullptr, nullptr, MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 5, 7, 10, 60, 80, AI_FAT, 0 , 0, 55, 8, 6, 12, 0, 0, 0, 0, 55, MonsterClass::Demon, 0 , RESIST_FIRE , 3, 0, 635 }, +/* MT_MUDMAN, */ { P_("monster", "Mud Man"), "fat\\fat", nullptr, "fat\\blue", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 7, 9, 14, 100, 125, AI_FAT, MFLAG_SEARCH , 1, 60, 8, 8, 16, 0, 0, 0, 0, 60, MonsterClass::Demon, 0 , IMMUNE_LIGHTNING , 3, 0, 1165 }, +/* MT_TOAD */ { P_("monster", "Toad Demon"), "fat\\fat", nullptr, "fat\\fatb", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 8, 10, 16, 135, 160, AI_FAT, MFLAG_SEARCH , 2, 70, 8, 8, 16, 40, 0, 8, 20, 65, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 1380 }, +/* MT_FLAYED */ { P_("monster", "Flayed One"), "fat\\fat", nullptr, "fat\\fatf", MonsterAvailability::Retail, 128, 1130, true, false, { 8, 10, 15, 6, 16, 10 }, { 4, 1, 1, 1, 1, 1 }, 10, 12, 20, 160, 200, AI_FAT, MFLAG_SEARCH , 3, 85, 8, 10, 20, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 2058 }, +/* MT_WYRM */ { P_("monster", "Wyrm"), "worm\\worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 5, 7, 11, 60, 90, AI_SKELSD, 0 , 0, 40, 8, 4, 10, 0, 0, 0, 0, 25, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 660 }, +/* MT_CAVSLUG */ { P_("monster", "Cave Slug"), "worm\\worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 6, 8, 13, 75, 110, AI_SKELSD, 0 , 1, 50, 8, 6, 13, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 994 }, +/* MT_DVLWYRM */ { P_("monster", "Devil Wyrm"), "worm\\worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 7, 9, 15, 100, 140, AI_SKELSD, 0 , 2, 55, 8, 8, 16, 0, 0, 0, 0, 30, MonsterClass::Animal, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | RESIST_FIRE , 3, 0, 1320 }, +/* MT_DEVOUR */ { P_("monster", "Devourer"), "worm\\worm", nullptr, nullptr, MonsterAvailability::Never, 160, 2420, false, false, { 13, 13, 13, 11, 19, 0 }, { 1, 1, 1, 1, 1, 1 }, 8, 10, 17, 125, 200, AI_SKELSD, 0 , 3, 60, 8, 10, 20, 0, 0, 0, 0, 35, MonsterClass::Animal, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | RESIST_FIRE , 3, 0, 1827 }, +/* MT_NMAGMA */ { P_("monster", "Magma Demon"), "magma\\magma", nullptr, nullptr, MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 8, 9, 13, 50, 70, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 45, 4, 2, 10, 50, 13, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1076 }, +/* MT_YMAGMA */ { P_("monster", "Blood Stone"), "magma\\magma", nullptr, "magma\\yellow", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 14, 55, 75, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 50, 4, 2, 12, 50, 14, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1309 }, +/* MT_BMAGMA */ { P_("monster", "Hell Stone"), "magma\\magma", nullptr, "magma\\blue", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 16, 60, 80, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 60, 4, 2, 20, 60, 14, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 1680 }, +/* MT_WMAGMA */ { P_("monster", "Lava Lord"), "magma\\magma", nullptr, "magma\\wierd", MonsterAvailability::Retail, 128, 1680, true, true, { 8, 10, 14, 7, 18, 18 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 18, 70, 85, AI_MAGMA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 75, 4, 4, 24, 60, 14, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 2124 }, +/* MT_HORNED */ { P_("monster", "Horned Demon"), "rhino\\rhino", nullptr, nullptr, MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 7, 9, 13, 40, 80, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 60, 7, 2, 16, 100, 0, 5, 32, 40, MonsterClass::Animal, 0 , RESIST_FIRE , 7, 0, 1172 }, +/* MT_MUDRUN */ { P_("monster", "Mud Runner"), "rhino\\rhino", nullptr, "rhino\\orange", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 8, 10, 15, 50, 90, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 70, 7, 6, 18, 100, 0, 12, 36, 45, MonsterClass::Animal, 0 , RESIST_FIRE , 7, 0, 1404 }, +/* MT_FROSTC */ { P_("monster", "Frost Charger"), "rhino\\rhino", nullptr, "rhino\\blue", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 9, 11, 17, 60, 100, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 8, 20, 100, 0, 20, 40, 50, MonsterClass::Animal, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 7, 0, 1720 }, +/* MT_OBLORD */ { P_("monster", "Obsidian Lord"), "rhino\\rhino", nullptr, "rhino\\rhinob", MonsterAvailability::Retail, 160, 1630, true, true, { 8, 8, 14, 6, 16, 6 }, { 2, 1, 1, 1, 1, 1 }, 10, 12, 19, 70, 110, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 7, 10, 22, 100, 0, 20, 50, 55, MonsterClass::Animal, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 1809 }, +/* MT_BONEDMN */ { P_("monster", "oldboned"), "demskel\\demskl", nullptr, nullptr, MonsterAvailability::Never, 128, 1740, true, true, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 24, 24, 12, 70, 70, AI_STORM, 0 , 0, 60, 8, 6, 14, 12, 0, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC , 7, 0, 1344 }, +/* MT_REDDTH */ { P_("monster", "Red Death"), "thin\\thin", nullptr, "thin\\thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 8, 10, 16, 96, 96, AI_STORM, 0 , 1, 75, 5, 10, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 2168 }, +/* MT_LTCHDMN */ { P_("monster", "Litch Demon"), "thin\\thin", nullptr, "thin\\thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 9, 11, 18, 110, 110, AI_STORM, 0 , 2, 80, 5, 10, 24, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2736 }, +/* MT_UDEDBLRG*/ { P_("monster", "Undead Balrog"), "thin\\thin", nullptr, "thin\\thinv3", MonsterAvailability::Never, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 11, 13, 22, 130, 130, AI_STORM, 0 , 3, 85, 5, 12, 30, 0, 0, 0, 0, 65, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 3575 }, +/* MT_INCIN */ { P_("monster", "Incinerator"), "fireman\\firem", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 21, 22, 16, 30, 45, AI_FIREMAN, 0 , 0, 75, 8, 8, 16, 0, 0, 0, 0, 25, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 1888 }, +/* MT_FLAMLRD */ { P_("monster", "Flame Lord"), "fireman\\firem", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 22, 23, 18, 40, 55, AI_FIREMAN, 0 , 1, 75, 8, 10, 20, 0, 0, 0, 0, 25, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 3, 0, 2250 }, +/* MT_DOOMFIRE*/ { P_("monster", "Doom Fire"), "fireman\\firem", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 23, 24, 20, 50, 65, AI_FIREMAN, 0 , 2, 80, 8, 12, 24, 0, 0, 0, 0, 30, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 2740 }, +/* MT_HELLBURN*/ { P_("monster", "Hell Burner"), "fireman\\firem", nullptr, nullptr, MonsterAvailability::Never, 128, 1460, true, false, { 14, 19, 20, 8, 14, 23 }, { 1, 1, 1, 1, 1, 1 }, 24, 24, 22, 60, 80, AI_FIREMAN, 0 , 3, 85, 8, 15, 30, 0, 0, 0, 0, 30, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 3355 }, +/* MT_STORM */ { P_("monster", "Red Storm"), "thin\\thin", nullptr, "thin\\thinv3", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 9, 11, 18, 55, 110, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 80, 5, 8, 18, 75, 8, 4, 16, 30, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2160 }, +/* MT_RSTORM */ { P_("monster", "Storm Rider"), "thin\\thin", nullptr, nullptr, MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 10, 12, 20, 60, 120, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 80, 5, 8, 18, 80, 8, 4, 16, 30, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2391 }, +/* MT_STORML */ { P_("monster", "Storm Lord"), "thin\\thin", nullptr, "thin\\thinv2", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 11, 13, 22, 75, 135, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 85, 5, 12, 24, 75, 8, 4, 16, 35, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2775 }, +/* MT_MAEL */ { P_("monster", "Maelstrom"), "thin\\thin", nullptr, "thin\\thinv1", MonsterAvailability::Retail, 160, 1740, true, true, { 8, 8, 18, 4, 17, 14 }, { 3, 1, 1, 1, 1, 1 }, 12, 14, 24, 90, 150, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 5, 12, 28, 75, 8, 4, 16, 40, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 7, 0, 3177 }, +/* MT_BIGFALL */ { P_("monster", "Devil Kin Brute"), "bigfall\\fallg", "newsfx\\kbrute", nullptr, MonsterAvailability::Retail, 128, 800, true, false, { 10, 8, 11, 8, 17, 0 }, { 1, 1, 1, 1, 2, 2 }, 21, 22, 27, 120, 160, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 100, 6, 18, 24, 0, 0, 0, 0, 70, MonsterClass::Animal, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 2400 }, +/* MT_WINGED */ { P_("monster", "Winged-Demon"), "gargoyle\\gargo", nullptr, nullptr, MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 2 }, 5, 7, 9, 45, 60, AI_GARG, MFLAG_CAN_OPEN_DOOR, 0, 50, 7, 10, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 6, 0, 662 }, +/* MT_GARGOYLE*/ { P_("monster", "Gargoyle"), "gargoyle\\gargo", nullptr, "gargoyle\\gare", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 2 }, 7, 9, 13, 60, 90, AI_GARG, MFLAG_CAN_OPEN_DOOR, 1, 65, 7, 10, 16, 0, 0, 0, 0, 45, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 6, 0, 1205 }, +/* MT_BLOODCLW*/ { P_("monster", "Blood Claw"), "gargoyle\\gargo", nullptr, "gargoyle\\gargbr", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 1 }, 9, 11, 19, 75, 125, AI_GARG, MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 14, 22, 0, 0, 0, 0, 50, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 6, 0, 1873 }, +/* MT_DEATHW */ { P_("monster", "Death Wing"), "gargoyle\\gargo", nullptr, "gargoyle\\gargb", MonsterAvailability::Retail, 160, 1650, true, false, { 14, 14, 14, 10, 18, 14 }, { 1, 1, 1, 1, 1, 1 }, 10, 12, 23, 90, 150, AI_GARG, MFLAG_CAN_OPEN_DOOR, 3, 95, 7, 16, 28, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 6, 0, 2278 }, +/* MT_MEGA */ { P_("monster", "Slayer"), "mega\\mega", nullptr, nullptr, MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 10, 12, 20, 120, 140, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 100, 8, 12, 20, 0, 3, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 2300 }, +/* MT_GUARD */ { P_("monster", "Guardian"), "mega\\mega", nullptr, "mega\\guard", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 11, 13, 22, 140, 160, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 110, 8, 14, 22, 0, 3, 0, 0, 65, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 2714 }, +/* MT_VTEXLRD */ { P_("monster", "Vortex Lord"), "mega\\mega", nullptr, "mega\\vtexl", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 12, 14, 24, 160, 180, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 120, 8, 18, 24, 0, 3, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 3252 }, +/* MT_BALROG */ { P_("monster", "Balrog"), "mega\\mega", nullptr, "mega\\balr", MonsterAvailability::Retail, 160, 2220, true, true, { 6, 7, 14, 1, 24, 5 }, { 3, 1, 1, 1, 2, 1 }, 13, 15, 26, 180, 200, AI_MEGA, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 130, 8, 22, 30, 0, 3, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 3643 }, +/* MT_NSNAKE */ { P_("monster", "Cave Viper"), "snake\\snake", nullptr, nullptr, MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 11, 13, 21, 100, 150, AI_SNAKE, MFLAG_SEARCH , 0, 90, 8, 8, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, IMMUNE_MAGIC , IMMUNE_MAGIC , 7, 0, 2725 }, +/* MT_RSNAKE */ { P_("monster", "Fire Drake"), "snake\\snake", nullptr, "snake\\snakr", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 12, 14, 23, 120, 170, AI_SNAKE, MFLAG_SEARCH , 1, 105, 8, 12, 24, 0, 0, 0, 0, 65, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 7, 0, 3139 }, +/* MT_BSNAKE */ { P_("monster", "Gold Viper"), "snake\\snake", nullptr, "snake\\snakg", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 14, 25, 140, 180, AI_SNAKE, MFLAG_SEARCH , 2, 120, 8, 15, 26, 0, 0, 0, 0, 70, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 7, 0, 3540 }, +/* MT_GSNAKE */ { P_("monster", "Azure Drake"), "snake\\snake", nullptr, "snake\\snakb", MonsterAvailability::Retail, 160, 1270, false, false, { 12, 11, 13, 5, 18, 0 }, { 2, 1, 1, 1, 1, 1 }, 15, 16, 27, 160, 200, AI_SNAKE, MFLAG_SEARCH , 3, 130, 8, 18, 30, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 3791 }, +/* MT_NBLACK */ { P_("monster", "Black Knight"), "black\\black", nullptr, nullptr, MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 12, 14, 24, 150, 150, AI_SKELSD, MFLAG_SEARCH , 0, 110, 8, 15, 20, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 7, 0, 3360 }, +/* MT_RTBLACK */ { P_("monster", "Doom Guard"), "black\\black", nullptr, "black\\blkkntrt", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 15, 26, 165, 165, AI_SKELSD, MFLAG_SEARCH , 0, 130, 8, 18, 25, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE , RESIST_MAGIC | IMMUNE_FIRE , 7, 0, 3650 }, +/* MT_BTBLACK */ { P_("monster", "Steel Lord"), "black\\black", nullptr, "black\\blkkntbt", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 14, 16, 28, 180, 180, AI_SKELSD, MFLAG_SEARCH , 1, 120, 8, 20, 30, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 4252 }, +/* MT_RBLACK */ { P_("monster", "Blood Knight"), "black\\black", nullptr, "black\\blkkntbe", MonsterAvailability::Retail, 160, 2120, false, false, { 8, 8, 16, 4, 24, 0 }, { 2, 1, 1, 1, 1, 1 }, 13, 14, 30, 200, 200, AI_SKELSD, MFLAG_SEARCH , 1, 130, 8, 25, 35, 0, 0, 0, 0, 85, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 5130 }, +/* MT_UNRAV */ { P_("monster", "The Shredded"), "unrav\\unrav", "newsfx\\shred", nullptr, MonsterAvailability::Retail, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 17, 18, 23, 70, 90, AI_SKELSD, 0 , 0, 75, 7, 4, 12, 0, 0, 0, 0, 65, MonsterClass::Undead, RESIST_FIRE | RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 900 }, +/* MT_HOLOWONE*/ { P_("monster", "Hollow One"), "unrav\\unrav", "acid\\acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 18, 19, 27, 135, 240, AI_SKELSD, 0 , 1, 75, 7, 12, 24, 0, 0, 0, 0, 75, MonsterClass::Undead, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 4374 }, +/* MT_PAINMSTR*/ { P_("monster", "Pain Master"), "unrav\\unrav", "acid\\acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 19, 20, 29, 110, 200, AI_SKELSD, 0 , 2, 80, 7, 16, 30, 0, 0, 0, 0, 80, MonsterClass::Undead, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 5147 }, +/* MT_REALWEAV*/ { P_("monster", "Reality Weaver"), "unrav\\unrav", "acid\\acid", nullptr, MonsterAvailability::Never, 96, 484, false, false, { 10, 10, 12, 5, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 20, 20, 30, 135, 240, AI_SKELSD, 0 , 3, 85, 7, 20, 35, 0, 0, 0, 0, 85, MonsterClass::Undead, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 5925 }, +/* MT_SUCCUBUS*/ { P_("monster", "Succubus"), "succ\\scbs", nullptr, nullptr, MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 12, 14, 24, 120, 150, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 0, 100, 10, 1, 20, 0, 0, 0, 0, 60, MonsterClass::Demon, RESIST_MAGIC , IMMUNE_MAGIC | RESIST_FIRE , 3, 0, 3696 }, +/* MT_SNOWWICH*/ { P_("monster", "Snow Witch"), "succ\\scbs", nullptr, "succ\\succb", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 13, 15, 26, 135, 175, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 1, 110, 10, 1, 24, 0, 0, 0, 0, 65, MonsterClass::Demon, RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 3, 0, 4084 }, +/* MT_HLSPWN */ { P_("monster", "Hell Spawn"), "succ\\scbs", nullptr, "succ\\succrw", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 14, 16, 28, 150, 200, AI_SUCC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 115, 10, 1, 30, 0, 0, 0, 0, 75, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 4480 }, +/* MT_SOLBRNR */ { P_("monster", "Soul Burner"), "succ\\scbs", nullptr, "succ\\succbw", MonsterAvailability::Retail, 128, 980, false, false, { 14, 8, 16, 7, 24, 0 }, { 1, 1, 1, 1, 1, 1 }, 15, 16, 30, 140, 225, AI_SUCC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 120, 10, 1, 35, 0, 0, 0, 0, 85, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 4644 }, +/* MT_COUNSLR */ { P_("monster", "Counselor"), "mage\\mage", nullptr, nullptr, MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 13, 14, 25, 70, 70, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 0, 90, 8, 8, 20, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 4070 }, +/* MT_MAGISTR */ { P_("monster", "Magistrate"), "mage\\mage", nullptr, "mage\\cnselg", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 14, 15, 27, 85, 85, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 1, 100, 8, 10, 24, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 4478 }, +/* MT_CABALIST*/ { P_("monster", "Cabalist"), "mage\\mage", nullptr, "mage\\cnselgd", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 15, 16, 29, 120, 120, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 2, 110, 8, 14, 30, 0, 0, 0, 0, 0, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 4929 }, +/* MT_ADVOCATE*/ { P_("monster", "Advocate"), "mage\\mage", nullptr, "mage\\cnselbk", MonsterAvailability::Retail, 128, 2000, true, false, { 12, 1, 20, 8, 28, 20 }, { 1, 1, 1, 1, 1, 1 }, 16, 16, 30, 145, 145, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 15, 25, 0, 0, 0, 0, 0, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 4968 }, +/* MT_GOLEM */ { P_("monster", "Golem"), "golem\\golem", "golem\\golm", nullptr, MonsterAvailability::Never, 96, 386, true, false, { 0, 16, 12, 0, 12, 20 }, { 1, 1, 1, 1, 1, 1 }, 1, 1, 12, 1, 1, AI_GOLUM, MFLAG_CAN_OPEN_DOOR, 0, 0, 7, 1, 1, 0, 0, 0, 0, 1, MonsterClass::Demon, 0 , 0 , 0, 0, 0 }, +/* MT_DIABLO */ { P_("monster", "The Dark Lord"), "diablo\\diablo", nullptr, nullptr, MonsterAvailability::Never, 160, 2000, true, true, { 16, 6, 16, 6, 16, 16 }, { 1, 1, 1, 1, 1, 1 }, 26, 26, 45, 3333, 3333, AI_DIABLO, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 220, 4, 30, 60, 0, 11, 0, 0, 90, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 31666 }, +/* MT_DARKMAGE*/ { P_("monster", "The Arch-Litch Malignus"), "darkmage\\dmage", "darkmage\\dmag", nullptr, MonsterAvailability::Never, 128, 1060, true, false, { 6, 1, 21, 6, 23, 18 }, { 1, 1, 1, 1, 1, 1 }, 21, 21, 30, 160, 160, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 20, 40, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 4968 }, +/* MT_HELLBOAR*/ { P_("monster", "Hellboar"), "fork\\fork", "newsfx\\hboar", nullptr, MonsterAvailability::Retail, 188, 800, false, false, { 10, 10, 15, 6, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 23, 80, 100, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_SEARCH , 2, 70, 7, 16, 24, 0, 0, 0, 0, 60, MonsterClass::Demon, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 750 }, +/* MT_STINGER */ { P_("monster", "Stinger"), "scorp\\scorp", "newsfx\\stingr", nullptr, MonsterAvailability::Retail, 64, 305, false, false, { 10, 10, 12, 6, 15, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 30, 40, AI_SKELSD, 0 , 3, 85, 8, 1, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 1, 0, 500 }, +/* MT_PSYCHORB*/ { P_("monster", "Psychorb"), "eye\\eye", "newsfx\\psyco", nullptr, MonsterAvailability::Retail, 156, 800, false, false, { 12, 13, 13, 7, 21, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 20, 30, AI_PSYCHORB, 0 , 3, 80, 8, 10, 10, 0, 0, 0, 0, 40, MonsterClass::Animal, 0 , RESIST_FIRE , 6, 0, 450 }, +/* MT_ARACHNON*/ { P_("monster", "Arachnon"), "spider\\spider", "newsfx\\slord", nullptr, MonsterAvailability::Retail, 148, 800, false, false, { 12, 10, 15, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 60, 80, AI_SKELSD, MFLAG_SEARCH , 3, 50, 8, 5, 15, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_LIGHTNING , 7, 0, 500 }, +/* MT_FELLTWIN*/ { P_("monster", "Felltwin"), "tsneak\\tsneak", "newsfx\\ftwin", nullptr, MonsterAvailability::Retail, 128, 800, false, false, { 13, 13, 15, 11, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 17, 18, 22, 50, 70, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 70, 8, 10, 18, 0, 0, 0, 0, 50, MonsterClass::Demon, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 600 }, +/* MT_HORKSPWN*/ { P_("monster", "Hork Spawn"), "spawn\\spawn", "newsfx\\hspawn", nullptr, MonsterAvailability::Retail, 164, 520, false, true, { 15, 12, 14, 11, 14, 0 }, { 1, 1, 1, 1, 1, 1 }, 18, 19, 22, 30, 30, AI_SKELSD, 0 , 3, 60, 8, 10, 25, 0, 0, 0, 0, 25, MonsterClass::Demon, RESIST_MAGIC , RESIST_MAGIC , 3, 0, 250 }, +/* MT_VENMTAIL*/ { P_("monster", "Venomtail"), "wscorp\\wscorp", "newsfx\\stingr", nullptr, MonsterAvailability::Retail, 86, 305, false, false, { 10, 10, 12, 6, 15, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 40, 50, AI_SKELSD, 0 , 3, 85, 8, 1, 30, 0, 0, 0, 0, 60, MonsterClass::Animal, RESIST_LIGHTNING , IMMUNE_LIGHTNING , 1, 0, 1000 }, +/* MT_NECRMORB*/ { P_("monster", "Necromorb"), "eye2\\eye2", "newsfx\\psyco", nullptr, MonsterAvailability::Retail, 140, 800, false, false, { 12, 13, 13, 7, 21, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 30, 40, AI_NECROMORB, 0 , 3, 80, 8, 20, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, RESIST_FIRE , IMMUNE_FIRE | RESIST_LIGHTNING , 6, 0, 1100 }, +/* MT_SPIDLORD*/ { P_("monster", "Spider Lord"), "bspidr\\bspidr", "newsfx\\slord", nullptr, MonsterAvailability::Retail, 148, 800, true, true, { 12, 10, 15, 6, 20, 10 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 24, 80, 100, AI_ACID, MFLAG_SEARCH , 3, 60, 8, 8, 20, 75, 8, 10, 10, 60, MonsterClass::Animal, RESIST_LIGHTNING , RESIST_FIRE | IMMUNE_LIGHTNING , 7, 0, 1250 }, +/* MT_LASHWORM*/ { P_("monster", "Lashworm"), "clasp\\clasp", "newsfx\\lworm", nullptr, MonsterAvailability::Retail, 176, 800, false, false, { 10, 12, 15, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 19, 20, 20, 30, 30, AI_SKELSD, 0 , 3, 90, 8, 12, 20, 0, 0, 0, 0, 50, MonsterClass::Animal, 0 , RESIST_FIRE , 3, 0, 600 }, +/* MT_TORCHANT*/ { P_("monster", "Torchant"), "antworm\\worm", "newsfx\\tchant", nullptr, MonsterAvailability::Retail, 192, 800, false, false, { 14, 12, 12, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 19, 20, 22, 60, 80, AI_TORCHANT, 0 , 3, 75, 8, 20, 30, 0, 0, 0, 0, 70, MonsterClass::Animal, IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 1250 }, +/* MT_HORKDMN */ { P_("monster", "Hork Demon"), "horkd\\horkd", "newsfx\\hdemon", nullptr, MonsterAvailability::Never, 138, 800, true, true, { 15, 8, 16, 6, 16, 9 }, { 2, 1, 1, 1, 1, 2 }, 19, 19, 27, 120, 160, AI_SKELSD, 0 , 3, 60, 8, 20, 35, 80, 8, 0, 0, 80, MonsterClass::Demon, RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_LIGHTNING , 7, 0, 2000 }, +/* MT_DEFILER */ { P_("monster", "Hell Bug"), "hellbug\\hellbg", "newsfx\\defile", nullptr, MonsterAvailability::Never, 198, 800, true, true, { 8, 8, 14, 6, 14, 12 }, { 1, 1, 1, 1, 1, 1 }, 20, 20, 30, 240, 240, AI_SKELSD, MFLAG_SEARCH , 3, 110, 8, 20, 30, 90, 8, 50, 60, 80, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 5000 }, +/* MT_GRAVEDIG*/ { P_("monster", "Gravedigger"), "gravdg\\gravdg", "newsfx\\gdiggr", nullptr, MonsterAvailability::Retail, 124, 800, true, true, { 24, 24, 12, 6, 16, 16 }, { 2, 1, 1, 1, 1, 1 }, 21, 21, 26, 120, 240, AI_SCAV, MFLAG_CAN_OPEN_DOOR, 3, 80, 6, 2, 12, 0, 0, 0, 0, 20, MonsterClass::Undead, IMMUNE_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 3, 0, 2000 }, +/* MT_TOMBRAT */ { P_("monster", "Tomb Rat"), "rat\\rat", "newsfx\\tmbrat", nullptr, MonsterAvailability::Retail, 104, 550, false, false, { 11, 8, 12, 6, 20, 0 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 24, 80, 120, AI_SKELSD, 0 , 3, 120, 8, 12, 25, 0, 0, 0, 0, 30, MonsterClass::Animal, 0 , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 1800 }, +/* MT_FIREBAT */ { P_("monster", "Firebat"), "hellbat\\helbat", "newsfx\\helbat", nullptr, MonsterAvailability::Retail, 96, 550, false, false, { 18, 16, 14, 6, 18, 11 }, { 2, 1, 1, 1, 1, 1 }, 21, 22, 24, 60, 80, AI_FIREBAT, 0 , 3, 100, 8, 15, 20, 0, 0, 0, 0, 70, MonsterClass::Animal, IMMUNE_FIRE , RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 7, 0, 2400 }, +/* MT_SKLWING */ { P_("monster", "Skullwing"), "demskel\\demskl", "newsfx\\swing", "skelaxe\\skelt", MonsterAvailability::Retail, 128, 1740, true, false, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 21, 22, 27, 70, 70, AI_SKELSD, 0 , 0, 75, 7, 15, 20, 75, 9, 15, 20, 80, MonsterClass::Undead, RESIST_FIRE | RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 7, 0, 3000 }, +/* MT_LICH */ { P_("monster", "Lich"), "lich\\lich", "newsfx\\lich", nullptr, MonsterAvailability::Retail, 96, 800, false, true, { 12, 10, 10, 7, 21, 0 }, { 2, 1, 1, 1, 2, 1 }, 21, 22, 25, 80, 100, AI_LICH, 0 , 3, 100, 8, 15, 20, 0, 0, 0, 0, 60, MonsterClass::Undead, RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 3, 0, 3000 }, +/* MT_CRYPTDMN*/ { P_("monster", "Crypt Demon"), "bubba\\bubba", "newsfx\\crypt", nullptr, MonsterAvailability::Retail, 154, 800, false, true, { 8, 18, 12, 8, 21, 0 }, { 3, 1, 1, 1, 1, 1 }, 22, 23, 28, 200, 240, AI_SKELSD, 0 , 3, 100, 8, 20, 40, 0, 0, 0, 0, 85, MonsterClass::Demon, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 3, 0, 3200 }, +/* MT_HELLBAT */ { P_("monster", "Hellbat"), "hellbat2\\bhelbt", "newsfx\\helbat", nullptr, MonsterAvailability::Retail, 96, 550, true, false, { 18, 16, 14, 6, 18, 11 }, { 2, 1, 1, 1, 1, 1 }, 23, 24, 29, 100, 140, AI_TORCHANT, 0 , 3, 110, 8, 30, 30, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 3600 }, +/* MT_BONEDEMN*/ { P_("monster", "Bone Demon"), "demskel\\demskl", "newsfx\\swing", nullptr, MonsterAvailability::Retail, 128, 1740, true, true, { 10, 8, 20, 6, 24, 16 }, { 3, 1, 1, 1, 1, 1 }, 23, 24, 30, 240, 280, AI_BONEDEMON, 0 , 0, 100, 8, 40, 50, 160, 12, 50, 50, 50, MonsterClass::Undead, IMMUNE_FIRE | IMMUNE_LIGHTNING , IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 5000 }, +/* MT_ARCHLICH*/ { P_("monster", "Arch Lich"), "lich2\\lich2", "newsfx\\lich", nullptr, MonsterAvailability::Retail, 136, 800, false, true, { 12, 10, 10, 7, 21, 0 }, { 2, 1, 1, 1, 2, 1 }, 23, 24, 30, 180, 200, AI_ARCHLICH, 0 , 3, 120, 8, 30, 30, 0, 0, 0, 0, 75, MonsterClass::Undead, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 4000 }, +/* MT_BICLOPS */ { P_("monster", "Biclops"), "byclps\\byclps", "newsfx\\biclop", nullptr, MonsterAvailability::Retail, 180, 800, false, false, { 10, 11, 16, 6, 16, 0 }, { 2, 1, 1, 1, 2, 1 }, 23, 24, 30, 200, 240, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_CAN_OPEN_DOOR, 3, 90, 8, 40, 50, 0, 0, 0, 0, 80, MonsterClass::Demon, RESIST_LIGHTNING , RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 4000 }, +/* MT_FLESTHNG*/ { P_("monster", "Flesh Thing"), "flesh\\flesh", "newsfx\\flesht", nullptr, MonsterAvailability::Retail, 164, 800, false, true, { 15, 24, 15, 6, 16, 0 }, { 1, 1, 1, 1, 1, 1 }, 23, 24, 28, 300, 400, AI_SKELSD, 0 , 3, 150, 8, 12, 18, 0, 0, 0, 0, 70, MonsterClass::Demon, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3, 0, 4000 }, +/* MT_REAPER */ { P_("monster", "Reaper"), "reaper\\reap", "newsfx\\reaper", nullptr, MonsterAvailability::Retail, 180, 800, false, false, { 12, 10, 14, 6, 16, 0 }, { 2, 1, 1, 1, 1, 1 }, 23, 24, 30, 260, 300, AI_SKELSD, 0 , 3, 120, 8, 30, 35, 0, 0, 0, 0, 90, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3, 0, 6000 }, // TRANSLATORS: Monster Block end -/* MT_NAKRUL */ { P_("monster", "Na-Krul"), "Nkr\\Nkr", "newsfx\\Nakrul", nullptr, MonsterAvailability::Never, 226, 1200, true, true, { 2, 6, 16, 3, 16, 16 }, { 0, 0, 0, 0, 0, 0 }, 31, 31, 40, 1332, 1332, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 150, 7, 40, 50, 150, 10, 40, 50, 125, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 13333 }, +/* MT_NAKRUL */ { P_("monster", "Na-Krul"), "nkr\\nkr", "newsfx\\nakrul", nullptr, MonsterAvailability::Never, 226, 1200, true, true, { 2, 6, 16, 3, 16, 16 }, { 0, 0, 0, 0, 0, 0 }, 31, 31, 40, 1332, 1332, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 150, 7, 40, 50, 150, 10, 40, 50, 125, MonsterClass::Demon, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 7, 0, 13333 }, // clang-format on }; @@ -338,107 +338,107 @@ const UniqueMonsterData UniqueMonstersData[] = { // clang-format off // type, name, mTrnName, mlevel, mmaxhp, ai, mint, minDamage, maxDamage, resistance, monsterPack, customToHit, customArmorClass, talkMsg // TRANSLATORS: Unique Monster Block start - { MT_NGOATMC, P_("monster", "Gharbad the Weak"), "BSDB", 4, 120, AI_GARBUD, 3, 8, 16, IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_GARBUD1 }, - { MT_SKING, P_("monster", "Skeleton King"), "GENRL", 0, 240, AI_SKELKING, 3, 6, 16, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Independent, 0, 0, TEXT_NONE }, - { MT_COUNSLR, P_("monster", "Zhar the Mad"), "GENERAL", 8, 360, AI_ZHAR, 3, 16, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_ZHAR1 }, - { MT_BFALLSP, P_("monster", "Snotspill"), "BNG", 4, 220, AI_SNOTSPIL, 3, 10, 18, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_BANNER10 }, - { MT_ADVOCATE, P_("monster", "Arch-Bishop Lazarus"), "GENERAL", 0, 600, AI_LAZARUS, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, - { MT_HLSPWN, P_("monster", "Red Vex"), "REDV", 0, 400, AI_LAZHELP, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, - { MT_HLSPWN, P_("monster", "Black Jade"), "BLKJD", 0, 400, AI_LAZHELP, 3, 30, 50, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, - { MT_RBLACK, P_("monster", "Lachdanan"), "BHKA", 14, 500, AI_LACHDAN, 3, 0, 0, 0 , UniqueMonsterPack::None, 0, 0, TEXT_VEIL9 }, - { MT_BTBLACK, P_("monster", "Warlord of Blood"), "GENERAL", 13, 850, AI_WARLORD, 3, 35, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_WARLRD9 }, - { MT_CLEAVER, P_("monster", "The Butcher"), "GENRL", 0, 220, AI_CLEAVER, 3, 6, 12, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_HORKDMN, P_("monster", "Hork Demon"), "GENRL", 19, 300, AI_HORKDMN, 3, 20, 35, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_DEFILER, P_("monster", "The Defiler"), "GENRL", 20, 480, AI_SKELSD, 3, 30, 40, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_NAKRUL, P_("monster", "Na-Krul"), "GENRL", 0, 1332, AI_SKELSD, 3, 40, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_TSKELAX, P_("monster", "Bonehead Keenaxe"), "BHKA", 2, 91, AI_SKELSD, 2, 4, 10, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 100, 0, TEXT_NONE }, - { MT_RFALLSD, P_("monster", "Bladeskin the Slasher"), "BSTS", 2, 51, AI_FALLEN, 0, 6, 18, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, - { MT_NZOMBIE, P_("monster", "Soulpus"), "GENERAL", 2, 133, AI_ZOMBIE, 0, 4, 8, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_RFALLSP, P_("monster", "Pukerat the Unclean"), "PTU", 2, 77, AI_FALLEN, 3, 1, 5, RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_WSKELAX, P_("monster", "Boneripper"), "BR", 2, 54, AI_BAT, 0, 6, 15, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NZOMBIE, P_("monster", "Rotfeast the Hungry"), "ETH", 2, 85, AI_SKELSD, 3, 4, 12, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_DFALLSD, P_("monster", "Gutshank the Quick"), "GTQ", 3, 66, AI_BAT, 2, 6, 16, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_TSKELSD, P_("monster", "Brokenhead Bangshield"), "BHBS", 3, 108, AI_SKELSD, 3, 12, 20, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_YFALLSP, P_("monster", "Bongo"), "BNG", 3, 178, AI_FALLEN, 3, 9, 21, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BZOMBIE, P_("monster", "Rotcarnage"), "RCRN", 3, 102, AI_ZOMBIE, 3, 9, 24, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, - { MT_NSCAV, P_("monster", "Shadowbite"), "SHBT", 2, 60, AI_SKELSD, 3, 3, 20, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_WSKELBW, P_("monster", "Deadeye"), "DE", 2, 49, AI_GOATBOW, 0, 6, 9, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_RSKELAX, P_("monster", "Madeye the Dead"), "MTD", 4, 75, AI_BAT, 0, 9, 21, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 30, TEXT_NONE }, - { MT_BSCAV, P_("monster", "El Chupacabras"), "GENERAL", 3, 120, AI_GOATMC, 0, 10, 18, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_TSKELBW, P_("monster", "Skullfire"), "SKFR", 3, 125, AI_GOATBOW, 1, 6, 10, IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_SNEAK, P_("monster", "Warpskull"), "TSPO", 3, 117, AI_SNEAK, 2, 6, 18, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_GZOMBIE, P_("monster", "Goretongue"), "PMR", 3, 156, AI_SKELSD, 1, 15, 30, IMMUNE_MAGIC , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_WSCAV, P_("monster", "Pulsecrawler"), "BHKA", 4, 150, AI_SCAV, 0, 16, 20, IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, - { MT_BLINK, P_("monster", "Moonbender"), "GENERAL", 4, 135, AI_BAT, 0, 9, 27, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BLINK, P_("monster", "Wrathraven"), "GENERAL", 5, 135, AI_BAT, 2, 9, 22, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_YSCAV, P_("monster", "Spineeater"), "GENERAL", 4, 180, AI_SCAV, 1, 18, 25, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RSKELBW, P_("monster", "Blackash the Burning"), "BASHTB", 4, 120, AI_GOATBOW, 0, 6, 16, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BFALLSD, P_("monster", "Shadowcrow"), "GENERAL", 5, 270, AI_SNEAK, 2, 12, 25, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_LRDSAYTR, P_("monster", "Blightstone the Weak"), "BHKA", 4, 360, AI_SKELSD, 0, 4, 12, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 70, 0, TEXT_NONE }, - { MT_FAT, P_("monster", "Bilefroth the Pit Master"), "BFTP", 6, 210, AI_BAT, 1, 16, 23, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NGOATBW, P_("monster", "Bloodskin Darkbow"), "BSDB", 5, 207, AI_GOATBOW, 0, 3, 16, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 55, TEXT_NONE }, - { MT_GLOOM, P_("monster", "Foulwing"), "DB", 5, 246, AI_RHINO, 3, 12, 28, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_XSKELSD, P_("monster", "Shadowdrinker"), "SHDR", 5, 300, AI_SNEAK, 1, 18, 26, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 45, TEXT_NONE }, - { MT_UNSEEN, P_("monster", "Hazeshifter"), "BHKA", 5, 285, AI_SNEAK, 3, 18, 30, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NACID, P_("monster", "Deathspit"), "BFDS", 6, 303, AI_ACIDUNIQ, 0, 12, 32, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RGOATMC, P_("monster", "Bloodgutter"), "BGBL", 6, 315, AI_BAT, 1, 24, 34, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BGOATMC, P_("monster", "Deathshade Fleshmaul"), "DSFM", 6, 276, AI_RHINO, 0, 12, 24, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 65, TEXT_NONE }, - { MT_WYRM, P_("monster", "Warmaggot the Mad"), "GENERAL", 6, 246, AI_BAT, 3, 15, 30, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_STORM, P_("monster", "Glasskull the Jagged"), "BHKA", 7, 354, AI_STORM, 0, 18, 30, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RGOATBW, P_("monster", "Blightfire"), "BLF", 7, 321, AI_SUCC, 2, 13, 21, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_GARGOYLE, P_("monster", "Nightwing the Cold"), "GENERAL", 7, 342, AI_BAT, 1, 18, 26, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_GGOATBW, P_("monster", "Gorestone"), "GENERAL", 7, 303, AI_GOATBOW, 1, 15, 28, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 70, 0, TEXT_NONE }, - { MT_BMAGMA, P_("monster", "Bronzefist Firestone"), "GENERAL", 8, 360, AI_MAGMA, 0, 30, 36, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_INCIN, P_("monster", "Wrathfire the Doomed"), "WFTD", 8, 270, AI_SKELSD, 2, 20, 30, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NMAGMA, P_("monster", "Firewound the Grim"), "BHKA", 8, 303, AI_MAGMA, 0, 18, 22, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_MUDMAN, P_("monster", "Baron Sludge"), "BSM", 8, 315, AI_SNEAK, 3, 25, 34, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 75, TEXT_NONE }, - { MT_GGOATMC, P_("monster", "Blighthorn Steelmace"), "BHSM", 7, 250, AI_RHINO, 0, 20, 28, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, - { MT_RACID, P_("monster", "Chaoshowler"), "GENERAL", 8, 240, AI_ACIDUNIQ, 0, 12, 20, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_REDDTH, P_("monster", "Doomgrin the Rotting"), "GENERAL", 8, 405, AI_STORM, 3, 25, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_FLAMLRD, P_("monster", "Madburner"), "GENERAL", 9, 270, AI_STORM, 0, 20, 40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_LTCHDMN, P_("monster", "Bonesaw the Litch"), "GENERAL", 9, 495, AI_STORM, 2, 30, 55, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_MUDRUN, P_("monster", "Breakspine"), "GENERAL", 9, 351, AI_RHINO, 0, 25, 34, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_REDDTH, P_("monster", "Devilskull Sharpbone"), "GENERAL", 9, 444, AI_STORM, 1, 25, 40, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_STORM, P_("monster", "Brokenstorm"), "GENERAL", 9, 411, AI_STORM, 2, 25, 36, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RSTORM, P_("monster", "Stormbane"), "GENERAL", 9, 555, AI_STORM, 3, 30, 30, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_TOAD, P_("monster", "Oozedrool"), "GENERAL", 9, 483, AI_FAT, 3, 25, 30, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BLOODCLW, P_("monster", "Goldblight of the Flame"), "GENERAL", 10, 405, AI_GARG, 0, 15, 35, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 80, TEXT_NONE }, - { MT_OBLORD, P_("monster", "Blackstorm"), "GENERAL", 10, 525, AI_RHINO, 3, 20, 40, IMMUNE_MAGIC | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 90, TEXT_NONE }, - { MT_RACID, P_("monster", "Plaguewrath"), "GENERAL", 10, 450, AI_ACIDUNIQ, 2, 20, 30, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RSTORM, P_("monster", "The Flayer"), "GENERAL", 10, 501, AI_STORM, 1, 20, 35, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_FROSTC, P_("monster", "Bluehorn"), "GENERAL", 11, 477, AI_RHINO, 1, 25, 30, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 90, TEXT_NONE }, - { MT_HELLBURN, P_("monster", "Warpfire Hellspawn"), "GENERAL", 11, 525, AI_FIREMAN, 3, 10, 40, RESIST_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NSNAKE, P_("monster", "Fangspeir"), "GENERAL", 11, 444, AI_SKELSD, 1, 15, 32, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_UDEDBLRG, P_("monster", "Festerskull"), "GENERAL", 11, 600, AI_STORM, 2, 15, 30, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_NBLACK, P_("monster", "Lionskull the Bent"), "GENERAL", 12, 525, AI_SKELSD, 2, 25, 25, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_COUNSLR, P_("monster", "Blacktongue"), "GENERAL", 12, 360, AI_COUNSLR, 3, 15, 30, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_DEATHW, P_("monster", "Viletouch"), "GENERAL", 12, 525, AI_GARG, 3, 20, 40, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RSNAKE, P_("monster", "Viperflame"), "GENERAL", 12, 570, AI_SKELSD, 1, 25, 35, IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BSNAKE, P_("monster", "Fangskin"), "BHKA", 14, 681, AI_SKELSD, 2, 15, 50, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_SUCCUBUS, P_("monster", "Witchfire the Unholy"), "GENERAL", 12, 444, AI_SUCC, 3, 10, 20, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_BALROG, P_("monster", "Blackskull"), "BHKA", 13, 750, AI_SKELSD, 3, 25, 40, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_UNRAV, P_("monster", "Soulslash"), "GENERAL", 12, 450, AI_SKELSD, 0, 25, 25, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_VTEXLRD, P_("monster", "Windspawn"), "GENERAL", 12, 711, AI_SKELSD, 1, 35, 40, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_GSNAKE, P_("monster", "Lord of the Pit"), "GENERAL", 13, 762, AI_SKELSD, 2, 25, 42, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_RTBLACK, P_("monster", "Rustweaver"), "GENERAL", 13, 400, AI_SKELSD, 3, 1, 60, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_HOLOWONE, P_("monster", "Howlingire the Shade"), "GENERAL", 13, 450, AI_SKELSD, 2, 40, 75, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_MAEL, P_("monster", "Doomcloud"), "GENERAL", 13, 612, AI_STORM, 1, 1, 60, RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_PAINMSTR, P_("monster", "Bloodmoon Soulfire"), "GENERAL", 13, 684, AI_SKELSD, 1, 15, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_SNOWWICH, P_("monster", "Witchmoon"), "GENERAL", 13, 310, AI_SUCC, 3, 30, 40, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_VTEXLRD, P_("monster", "Gorefeast"), "GENERAL", 13, 771, AI_SKELSD, 3, 20, 55, RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_RTBLACK, P_("monster", "Graywar the Slayer"), "GENERAL", 14, 672, AI_SKELSD, 1, 30, 50, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_MAGISTR, P_("monster", "Dreadjudge"), "GENERAL", 14, 540, AI_COUNSLR, 1, 30, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_HLSPWN, P_("monster", "Stareye the Witch"), "GENERAL", 14, 726, AI_SUCC, 2, 30, 50, IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_BTBLACK, P_("monster", "Steelskull the Hunter"), "GENERAL", 14, 831, AI_SKELSD, 3, 40, 50, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_RBLACK, P_("monster", "Sir Gorash"), "GENERAL", 16, 1050, AI_SKELSD, 1, 20, 60, 0 , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_CABALIST, P_("monster", "The Vizier"), "GENERAL", 15, 850, AI_COUNSLR, 2, 25, 40, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_REALWEAV, P_("monster", "Zamphir"), "GENERAL", 15, 891, AI_SKELSD, 2, 30, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, - { MT_HLSPWN, P_("monster", "Bloodlust"), "GENERAL", 15, 825, AI_SUCC, 1, 20, 55, IMMUNE_MAGIC | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_HLSPWN, P_("monster", "Webwidow"), "GENERAL", 16, 774, AI_SUCC, 1, 20, 50, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_SOLBRNR, P_("monster", "Fleshdancer"), "GENERAL", 16, 999, AI_SUCC, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, - { MT_OBLORD, P_("monster", "Grimspike"), "GENERAL", 19, 534, AI_SNEAK, 1, 25, 40, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NGOATMC, P_("monster", "Gharbad the Weak"), "bsdb", 4, 120, AI_GARBUD, 3, 8, 16, IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_GARBUD1 }, + { MT_SKING, P_("monster", "Skeleton King"), "genrl", 0, 240, AI_SKELKING, 3, 6, 16, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Independent, 0, 0, TEXT_NONE }, + { MT_COUNSLR, P_("monster", "Zhar the Mad"), "general", 8, 360, AI_ZHAR, 3, 16, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_ZHAR1 }, + { MT_BFALLSP, P_("monster", "Snotspill"), "bng", 4, 220, AI_SNOTSPIL, 3, 10, 18, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_BANNER10 }, + { MT_ADVOCATE, P_("monster", "Arch-Bishop Lazarus"), "general", 0, 600, AI_LAZARUS, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, + { MT_HLSPWN, P_("monster", "Red Vex"), "redv", 0, 400, AI_LAZHELP, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, + { MT_HLSPWN, P_("monster", "Black Jade"), "blkjd", 0, 400, AI_LAZHELP, 3, 30, 50, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_VILE13 }, + { MT_RBLACK, P_("monster", "Lachdanan"), "bhka", 14, 500, AI_LACHDAN, 3, 0, 0, 0 , UniqueMonsterPack::None, 0, 0, TEXT_VEIL9 }, + { MT_BTBLACK, P_("monster", "Warlord of Blood"), "general", 13, 850, AI_WARLORD, 3, 35, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_WARLRD9 }, + { MT_CLEAVER, P_("monster", "The Butcher"), "genrl", 0, 220, AI_CLEAVER, 3, 6, 12, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_HORKDMN, P_("monster", "Hork Demon"), "genrl", 19, 300, AI_HORKDMN, 3, 20, 35, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_DEFILER, P_("monster", "The Defiler"), "genrl", 20, 480, AI_SKELSD, 3, 30, 40, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_NAKRUL, P_("monster", "Na-Krul"), "genrl", 0, 1332, AI_SKELSD, 3, 40, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_TSKELAX, P_("monster", "Bonehead Keenaxe"), "bhka", 2, 91, AI_SKELSD, 2, 4, 10, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 100, 0, TEXT_NONE }, + { MT_RFALLSD, P_("monster", "Bladeskin the Slasher"), "bsts", 2, 51, AI_FALLEN, 0, 6, 18, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, + { MT_NZOMBIE, P_("monster", "Soulpus"), "general", 2, 133, AI_ZOMBIE, 0, 4, 8, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_RFALLSP, P_("monster", "Pukerat the Unclean"), "ptu", 2, 77, AI_FALLEN, 3, 1, 5, RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_WSKELAX, P_("monster", "Boneripper"), "br", 2, 54, AI_BAT, 0, 6, 15, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NZOMBIE, P_("monster", "Rotfeast the Hungry"), "eth", 2, 85, AI_SKELSD, 3, 4, 12, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_DFALLSD, P_("monster", "Gutshank the Quick"), "gtq", 3, 66, AI_BAT, 2, 6, 16, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_TSKELSD, P_("monster", "Brokenhead Bangshield"), "bhbs", 3, 108, AI_SKELSD, 3, 12, 20, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_YFALLSP, P_("monster", "Bongo"), "bng", 3, 178, AI_FALLEN, 3, 9, 21, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BZOMBIE, P_("monster", "Rotcarnage"), "rcrn", 3, 102, AI_ZOMBIE, 3, 9, 24, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, + { MT_NSCAV, P_("monster", "Shadowbite"), "shbt", 2, 60, AI_SKELSD, 3, 3, 20, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_WSKELBW, P_("monster", "Deadeye"), "de", 2, 49, AI_GOATBOW, 0, 6, 9, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_RSKELAX, P_("monster", "Madeye the Dead"), "mtd", 4, 75, AI_BAT, 0, 9, 21, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 30, TEXT_NONE }, + { MT_BSCAV, P_("monster", "El Chupacabras"), "general", 3, 120, AI_GOATMC, 0, 10, 18, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_TSKELBW, P_("monster", "Skullfire"), "skfr", 3, 125, AI_GOATBOW, 1, 6, 10, IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_SNEAK, P_("monster", "Warpskull"), "tspo", 3, 117, AI_SNEAK, 2, 6, 18, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_GZOMBIE, P_("monster", "Goretongue"), "pmr", 3, 156, AI_SKELSD, 1, 15, 30, IMMUNE_MAGIC , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_WSCAV, P_("monster", "Pulsecrawler"), "bhka", 4, 150, AI_SCAV, 0, 16, 20, IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, + { MT_BLINK, P_("monster", "Moonbender"), "general", 4, 135, AI_BAT, 0, 9, 27, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BLINK, P_("monster", "Wrathraven"), "general", 5, 135, AI_BAT, 2, 9, 22, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_YSCAV, P_("monster", "Spineeater"), "general", 4, 180, AI_SCAV, 1, 18, 25, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RSKELBW, P_("monster", "Blackash the Burning"), "bashtb", 4, 120, AI_GOATBOW, 0, 6, 16, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BFALLSD, P_("monster", "Shadowcrow"), "general", 5, 270, AI_SNEAK, 2, 12, 25, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_LRDSAYTR, P_("monster", "Blightstone the Weak"), "bhka", 4, 360, AI_SKELSD, 0, 4, 12, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 70, 0, TEXT_NONE }, + { MT_FAT, P_("monster", "Bilefroth the Pit Master"), "bftp", 6, 210, AI_BAT, 1, 16, 23, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NGOATBW, P_("monster", "Bloodskin Darkbow"), "bsdb", 5, 207, AI_GOATBOW, 0, 3, 16, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 55, TEXT_NONE }, + { MT_GLOOM, P_("monster", "Foulwing"), "db", 5, 246, AI_RHINO, 3, 12, 28, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_XSKELSD, P_("monster", "Shadowdrinker"), "shdr", 5, 300, AI_SNEAK, 1, 18, 26, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 45, TEXT_NONE }, + { MT_UNSEEN, P_("monster", "Hazeshifter"), "bhka", 5, 285, AI_SNEAK, 3, 18, 30, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NACID, P_("monster", "Deathspit"), "bfds", 6, 303, AI_ACIDUNIQ, 0, 12, 32, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RGOATMC, P_("monster", "Bloodgutter"), "bgbl", 6, 315, AI_BAT, 1, 24, 34, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BGOATMC, P_("monster", "Deathshade Fleshmaul"), "dsfm", 6, 276, AI_RHINO, 0, 12, 24, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 65, TEXT_NONE }, + { MT_WYRM, P_("monster", "Warmaggot the Mad"), "general", 6, 246, AI_BAT, 3, 15, 30, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_STORM, P_("monster", "Glasskull the Jagged"), "bhka", 7, 354, AI_STORM, 0, 18, 30, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RGOATBW, P_("monster", "Blightfire"), "blf", 7, 321, AI_SUCC, 2, 13, 21, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_GARGOYLE, P_("monster", "Nightwing the Cold"), "general", 7, 342, AI_BAT, 1, 18, 26, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_GGOATBW, P_("monster", "Gorestone"), "general", 7, 303, AI_GOATBOW, 1, 15, 28, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 70, 0, TEXT_NONE }, + { MT_BMAGMA, P_("monster", "Bronzefist Firestone"), "general", 8, 360, AI_MAGMA, 0, 30, 36, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_INCIN, P_("monster", "Wrathfire the Doomed"), "wftd", 8, 270, AI_SKELSD, 2, 20, 30, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NMAGMA, P_("monster", "Firewound the Grim"), "bhka", 8, 303, AI_MAGMA, 0, 18, 22, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_MUDMAN, P_("monster", "Baron Sludge"), "bsm", 8, 315, AI_SNEAK, 3, 25, 34, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 75, TEXT_NONE }, + { MT_GGOATMC, P_("monster", "Blighthorn Steelmace"), "bhsm", 7, 250, AI_RHINO, 0, 20, 28, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 45, TEXT_NONE }, + { MT_RACID, P_("monster", "Chaoshowler"), "general", 8, 240, AI_ACIDUNIQ, 0, 12, 20, 0 , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_REDDTH, P_("monster", "Doomgrin the Rotting"), "general", 8, 405, AI_STORM, 3, 25, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_FLAMLRD, P_("monster", "Madburner"), "general", 9, 270, AI_STORM, 0, 20, 40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_LTCHDMN, P_("monster", "Bonesaw the Litch"), "general", 9, 495, AI_STORM, 2, 30, 55, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_MUDRUN, P_("monster", "Breakspine"), "general", 9, 351, AI_RHINO, 0, 25, 34, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_REDDTH, P_("monster", "Devilskull Sharpbone"), "general", 9, 444, AI_STORM, 1, 25, 40, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_STORM, P_("monster", "Brokenstorm"), "general", 9, 411, AI_STORM, 2, 25, 36, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RSTORM, P_("monster", "Stormbane"), "general", 9, 555, AI_STORM, 3, 30, 30, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_TOAD, P_("monster", "Oozedrool"), "general", 9, 483, AI_FAT, 3, 25, 30, RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BLOODCLW, P_("monster", "Goldblight of the Flame"), "general", 10, 405, AI_GARG, 0, 15, 35, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 80, TEXT_NONE }, + { MT_OBLORD, P_("monster", "Blackstorm"), "general", 10, 525, AI_RHINO, 3, 20, 40, IMMUNE_MAGIC | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 90, TEXT_NONE }, + { MT_RACID, P_("monster", "Plaguewrath"), "general", 10, 450, AI_ACIDUNIQ, 2, 20, 30, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RSTORM, P_("monster", "The Flayer"), "general", 10, 501, AI_STORM, 1, 20, 35, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_FROSTC, P_("monster", "Bluehorn"), "general", 11, 477, AI_RHINO, 1, 25, 30, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 90, TEXT_NONE }, + { MT_HELLBURN, P_("monster", "Warpfire Hellspawn"), "general", 11, 525, AI_FIREMAN, 3, 10, 40, RESIST_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NSNAKE, P_("monster", "Fangspeir"), "general", 11, 444, AI_SKELSD, 1, 15, 32, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_UDEDBLRG, P_("monster", "Festerskull"), "general", 11, 600, AI_STORM, 2, 15, 30, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_NBLACK, P_("monster", "Lionskull the Bent"), "general", 12, 525, AI_SKELSD, 2, 25, 25, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_COUNSLR, P_("monster", "Blacktongue"), "general", 12, 360, AI_COUNSLR, 3, 15, 30, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_DEATHW, P_("monster", "Viletouch"), "general", 12, 525, AI_GARG, 3, 20, 40, IMMUNE_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RSNAKE, P_("monster", "Viperflame"), "general", 12, 570, AI_SKELSD, 1, 25, 35, IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BSNAKE, P_("monster", "Fangskin"), "bhka", 14, 681, AI_SKELSD, 2, 15, 50, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_SUCCUBUS, P_("monster", "Witchfire the Unholy"), "general", 12, 444, AI_SUCC, 3, 10, 20, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_BALROG, P_("monster", "Blackskull"), "bhka", 13, 750, AI_SKELSD, 3, 25, 40, IMMUNE_MAGIC | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_UNRAV, P_("monster", "Soulslash"), "general", 12, 450, AI_SKELSD, 0, 25, 25, IMMUNE_MAGIC , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_VTEXLRD, P_("monster", "Windspawn"), "general", 12, 711, AI_SKELSD, 1, 35, 40, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_GSNAKE, P_("monster", "Lord of the Pit"), "general", 13, 762, AI_SKELSD, 2, 25, 42, RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_RTBLACK, P_("monster", "Rustweaver"), "general", 13, 400, AI_SKELSD, 3, 1, 60, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_HOLOWONE, P_("monster", "Howlingire the Shade"), "general", 13, 450, AI_SKELSD, 2, 40, 75, RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_MAEL, P_("monster", "Doomcloud"), "general", 13, 612, AI_STORM, 1, 1, 60, RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_PAINMSTR, P_("monster", "Bloodmoon Soulfire"), "general", 13, 684, AI_SKELSD, 1, 15, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_SNOWWICH, P_("monster", "Witchmoon"), "general", 13, 310, AI_SUCC, 3, 30, 40, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_VTEXLRD, P_("monster", "Gorefeast"), "general", 13, 771, AI_SKELSD, 3, 20, 55, RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_RTBLACK, P_("monster", "Graywar the Slayer"), "general", 14, 672, AI_SKELSD, 1, 30, 50, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_MAGISTR, P_("monster", "Dreadjudge"), "general", 14, 540, AI_COUNSLR, 1, 30, 40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_HLSPWN, P_("monster", "Stareye the Witch"), "general", 14, 726, AI_SUCC, 2, 30, 50, IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_BTBLACK, P_("monster", "Steelskull the Hunter"), "general", 14, 831, AI_SKELSD, 3, 40, 50, RESIST_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_RBLACK, P_("monster", "Sir Gorash"), "general", 16, 1050, AI_SKELSD, 1, 20, 60, 0 , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_CABALIST, P_("monster", "The Vizier"), "general", 15, 850, AI_COUNSLR, 2, 25, 40, IMMUNE_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_REALWEAV, P_("monster", "Zamphir"), "general", 15, 891, AI_SKELSD, 2, 30, 50, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_HLSPWN, P_("monster", "Bloodlust"), "general", 15, 825, AI_SUCC, 1, 20, 55, IMMUNE_MAGIC | IMMUNE_LIGHTNING , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_HLSPWN, P_("monster", "Webwidow"), "general", 16, 774, AI_SUCC, 1, 20, 50, IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_SOLBRNR, P_("monster", "Fleshdancer"), "general", 16, 999, AI_SUCC, 3, 30, 50, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, + { MT_OBLORD, P_("monster", "Grimspike"), "general", 19, 534, AI_SNEAK, 1, 25, 40, IMMUNE_MAGIC | RESIST_FIRE , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, // TRANSLATORS: Unique Monster Block end - { MT_STORML, P_("monster", "Doomlock"), "GENERAL", 28, 534, AI_SNEAK, 1, 35, 55, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, + { MT_STORML, P_("monster", "Doomlock"), "general", 28, 534, AI_SNEAK, 1, 35, 55, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack::Leashed, 0, 0, TEXT_NONE }, { MT_INVALID, nullptr, nullptr, 0, 0, AI_INVALID, 0, 0, 0, 0 , UniqueMonsterPack::None, 0, 0, TEXT_NONE }, // clang-format on }; diff --git a/Source/monster.cpp b/Source/monster.cpp index 8e2eb4d35..ec4303a55 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -97,7 +97,7 @@ size_t GetNumAnims(const MonsterData &monsterData) void InitMonsterTRN(CMonster &monst) { char path[64]; - *BufCopy(path, "Monsters\\", monst.data->trnFile, ".TRN") = '\0'; + *BufCopy(path, "monsters\\", monst.data->trnFile, ".trn") = '\0'; std::array colorTranslations; LoadFileInMem(path, colorTranslations); std::replace(colorTranslations.begin(), colorTranslations.end(), 255, 0); @@ -501,23 +501,23 @@ void PlaceQuestMonsters() } if (Quests[Q_LTBANNER].IsAvailable()) { - auto dunData = LoadFileInMem("Levels\\L1Data\\Banner1.DUN"); + auto dunData = LoadFileInMem("levels\\l1data\\banner1.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld()); } if (Quests[Q_BLOOD].IsAvailable()) { - auto dunData = LoadFileInMem("Levels\\L2Data\\Blood2.DUN"); + auto dunData = LoadFileInMem("levels\\l2data\\blood2.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld()); } if (Quests[Q_BLIND].IsAvailable()) { - auto dunData = LoadFileInMem("Levels\\L2Data\\Blind2.DUN"); + auto dunData = LoadFileInMem("levels\\l2data\\blind2.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld()); } if (Quests[Q_ANVIL].IsAvailable()) { - auto dunData = LoadFileInMem("Levels\\L3Data\\Anvil.DUN"); + auto dunData = LoadFileInMem("levels\\l3data\\anvil.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld() + Displacement { 2, 2 }); } if (Quests[Q_WARLORD].IsAvailable()) { - auto dunData = LoadFileInMem("Levels\\L4Data\\Warlord.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\warlord.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld()); AddMonsterType(UniqueMonsterType::WarlordOfBlood, PLACE_SCATTER); } @@ -534,7 +534,7 @@ void PlaceQuestMonsters() PlaceUniqueMonst(UniqueMonsterType::Lazarus, 0, 0); PlaceUniqueMonst(UniqueMonsterType::RedVex, 0, 0); PlaceUniqueMonst(UniqueMonsterType::BlackJade, 0, 0); - auto dunData = LoadFileInMem("Levels\\L4Data\\Vile1.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\vile1.dun"); SetMapMonsters(dunData.get(), SetPiece.position.megaToWorld()); } @@ -561,19 +561,19 @@ void PlaceQuestMonsters() void LoadDiabMonsts() { { - auto dunData = LoadFileInMem("Levels\\L4Data\\diab1.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\diab1.dun"); SetMapMonsters(dunData.get(), DiabloQuad1.megaToWorld()); } { - auto dunData = LoadFileInMem("Levels\\L4Data\\diab2a.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\diab2a.dun"); SetMapMonsters(dunData.get(), DiabloQuad2.megaToWorld()); } { - auto dunData = LoadFileInMem("Levels\\L4Data\\diab3a.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\diab3a.dun"); SetMapMonsters(dunData.get(), DiabloQuad3.megaToWorld()); } { - auto dunData = LoadFileInMem("Levels\\L4Data\\diab4a.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\diab4a.dun"); SetMapMonsters(dunData.get(), DiabloQuad4.megaToWorld()); } } @@ -3095,7 +3095,7 @@ bool UpdateModeStance(Monster &monster) void InitTRNForUniqueMonster(Monster &monster) { char filestr[64]; - *BufCopy(filestr, R"(Monsters\Monsters\)", UniqueMonstersData[static_cast(monster.uniqueType)].mTrnName, ".TRN") = '\0'; + *BufCopy(filestr, R"(monsters\monsters\)", UniqueMonstersData[static_cast(monster.uniqueType)].mTrnName, ".trn") = '\0'; monster.uniqueMonsterTRN = LoadFileInMem(filestr); } @@ -3333,7 +3333,7 @@ void InitMonsterSND(CMonster &monsterType) for (int j = 0; j < 2; j++) { char path[64]; - *BufCopy(path, "Monsters\\", soundSuffix, prefix, j + 1, ".WAV") = '\0'; + *BufCopy(path, "monsters\\", soundSuffix, prefix, j + 1, ".wav") = '\0'; monsterType.sounds[i][j] = sound_file_load(path); } } @@ -3352,7 +3352,7 @@ void InitMonsterGFX(CMonster &monsterType) if (!HeadlessMode) { monsterType.animData = MultiFileLoader {}( numAnims, - FileNameWithCharAffixGenerator({ "Monsters\\", monsterData.assetsSuffix }, ".CL2", Animletter), + FileNameWithCharAffixGenerator({ "monsters\\", monsterData.assetsSuffix }, ".cl2", Animletter), animOffsets.data(), hasAnim); } @@ -3757,17 +3757,17 @@ void DoEnding() switch (MyPlayer->_pClass) { case HeroClass::Sorcerer: case HeroClass::Monk: - play_movie("gendata\\DiabVic1.smk", false); + play_movie("gendata\\diabvic1.smk", false); break; case HeroClass::Warrior: case HeroClass::Barbarian: - play_movie("gendata\\DiabVic2.smk", false); + play_movie("gendata\\diabvic2.smk", false); break; default: - play_movie("gendata\\DiabVic3.smk", false); + play_movie("gendata\\diabvic3.smk", false); break; } - play_movie("gendata\\Diabend.smk", false); + play_movie("gendata\\diabend.smk", false); bool bMusicOn = gbMusicOn; gbMusicOn = true; diff --git a/Source/objdat.cpp b/Source/objdat.cpp index 402a51bae..b72676291 100644 --- a/Source/objdat.cpp +++ b/Source/objdat.cpp @@ -275,71 +275,71 @@ const ObjectData AllObjects[109] = { }; /** Maps from object_graphic_id to object CEL name. */ const char *const ObjMasterLoadList[] = { - "L1Braz", - "L1Doors", - "Lever", - "Chest1", - "Chest2", - "Banner", - "SkulPile", - "SkulFire", - "SkulStik", - "CruxSk1", - "CruxSk2", - "CruxSk3", - "Book1", - "Book2", - "Rockstan", - "Angel", - "Chest3", - "Burncros", - "Candle2", - "Nude2", - "Switch4", - "TNudeM", - "TNudeW", - "TSoul", - "L2Doors", - "WTorch4", - "WTorch3", - "Sarc", - "Flame1", - "Prsrplt1", - "Traphole", - "MiniWatr", - "WTorch2", - "WTorch1", - "BCase", - "BShelf", - "WeapStnd", - "Barrel", - "Barrelex", - "LShrineG", - "RShrineG", - "Bloodfnt", - "Decap", - "Pedistl", - "L3Doors", - "PFountn", - "Armstand", - "Goatshrn", - "Cauldren", - "MFountn", - "TFountn", - "Altboy", - "Mcirl", - "Bkslbrnt", - "Mushptch", - "LzStand", - "L6Pod1", - "L6Pod2", - "L5Door", - "L5Lever", - "L5Light", - "L5Sarco", - "Urn", - "Urnexpld", - "L5Books", + "l1braz", + "l1doors", + "lever", + "chest1", + "chest2", + "banner", + "skulpile", + "skulfire", + "skulstik", + "cruxsk1", + "cruxsk2", + "cruxsk3", + "book1", + "book2", + "rockstan", + "angel", + "chest3", + "burncros", + "candle2", + "nude2", + "switch4", + "tnudem", + "tnudew", + "tsoul", + "l2doors", + "wtorch4", + "wtorch3", + "sarc", + "flame1", + "prsrplt1", + "traphole", + "miniwatr", + "wtorch2", + "wtorch1", + "bcase", + "bshelf", + "weapstnd", + "barrel", + "barrelex", + "lshrineg", + "rshrineg", + "bloodfnt", + "decap", + "pedistl", + "l3doors", + "pfountn", + "armstand", + "goatshrn", + "cauldren", + "mfountn", + "tfountn", + "altboy", + "mcirl", + "bkslbrnt", + "mushptch", + "lzstand", + "l6pod1", + "l6pod2", + "l5door", + "l5lever", + "l5light", + "l5sarco", + "urn", + "urnexpld", + "l5books", }; } // namespace devilution diff --git a/Source/objects.cpp b/Source/objects.cpp index 0c023a522..10119c6e5 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -683,9 +683,9 @@ void LoadMapObjects(const char *path, Point start, Rectangle mapRange = {}, int void AddDiabObjs() { - LoadMapObjects("Levels\\L4Data\\diab1.DUN", DiabloQuad1.megaToWorld(), { DiabloQuad2, { 11, 12 } }, 1); - LoadMapObjects("Levels\\L4Data\\diab2a.DUN", DiabloQuad2.megaToWorld(), { DiabloQuad3, { 11, 11 } }, 2); - LoadMapObjects("Levels\\L4Data\\diab3a.DUN", DiabloQuad3.megaToWorld(), { DiabloQuad4, { 9, 9 } }, 3); + LoadMapObjects("levels\\l4data\\diab1.dun", DiabloQuad1.megaToWorld(), { DiabloQuad2, { 11, 12 } }, 1); + LoadMapObjects("levels\\l4data\\diab2a.dun", DiabloQuad2.megaToWorld(), { DiabloQuad3, { 11, 11 } }, 2); + LoadMapObjects("levels\\l4data\\diab3a.dun", DiabloQuad3.megaToWorld(), { DiabloQuad4, { 9, 9 } }, 3); } void AddCryptObject(Object &object, int a2) @@ -2256,7 +2256,7 @@ void OperatePedestal(Player &player, Object &pedestal) if (pedestal._oVar6 == 3) { PlaySfxLoc(LS_BLODSTAR, pedestal.position); ObjChangeMap(pedestal._oVar1, pedestal._oVar2, pedestal._oVar3, pedestal._oVar4); - LoadMapObjects("Levels\\L2Data\\Blood2.DUN", SetPiece.position.megaToWorld()); + LoadMapObjects("levels\\l2data\\blood2.dun", SetPiece.position.megaToWorld()); SpawnUnique(UITEM_ARMOFVAL, SetPiece.position.megaToWorld() + Displacement { 9, 3 }); pedestal._oSelFlag = 0; } @@ -3537,7 +3537,7 @@ void SyncPedestal(const Object &pedestal, Point origin, int width) } if (pedestal._oVar6 == 3) { ObjChangeMapResync(pedestal._oVar1, pedestal._oVar2, pedestal._oVar3, pedestal._oVar4); - LoadMapObjects("Levels\\L2Data\\Blood2.DUN", origin.megaToWorld()); + LoadMapObjects("levels\\l2data\\blood2.dun", origin.megaToWorld()); } } @@ -3642,7 +3642,7 @@ void LoadLevelObjects(uint16_t filesWidths[65]) ObjFileList[numobjfiles] = static_cast(i); char filestr[32]; - *BufCopy(filestr, "Objects\\", ObjMasterLoadList[i], ".CEL") = '\0'; + *BufCopy(filestr, "objects\\", ObjMasterLoadList[i], ".cel") = '\0'; pObjCels[numobjfiles] = LoadCel(filestr, filesWidths[i]); numobjfiles++; } @@ -3822,7 +3822,7 @@ void InitObjects() } Quests[Q_BLIND]._qmsg = spId; AddBookLever(OBJ_BLINDBOOK, { SetPiece.position, SetPiece.size + 1 }, spId); - LoadMapObjects("Levels\\L2Data\\Blind2.DUN", SetPiece.position.megaToWorld()); + LoadMapObjects("levels\\l2data\\blind2.dun", SetPiece.position.megaToWorld()); } if (Quests[Q_BLOOD].IsAvailable()) { _speech_id spId; @@ -3881,7 +3881,7 @@ void InitObjects() } Quests[Q_WARLORD]._qmsg = spId; AddBookLever(OBJ_STEELTOME, SetPiece, spId); - LoadMapObjects("Levels\\L4Data\\Warlord.DUN", SetPiece.position.megaToWorld()); + LoadMapObjects("levels\\l4data\\warlord.dun", SetPiece.position.megaToWorld()); } if (Quests[Q_BETRAYER].IsAvailable() && !gbIsMultiplayer) AddLazStand(); diff --git a/Source/panels/info_box.cpp b/Source/panels/info_box.cpp index 0bd9e55d3..90af6a714 100644 --- a/Source/panels/info_box.cpp +++ b/Source/panels/info_box.cpp @@ -9,8 +9,8 @@ OptionalOwnedClxSpriteList pSTextSlidCels; void InitInfoBoxGfx() { - pSTextSlidCels = LoadCel("Data\\TextSlid.CEL", 12); - pSTextBoxCels = LoadCel("Data\\TextBox2.CEL", 271); + pSTextSlidCels = LoadCel("data\\textslid.cel", 12); + pSTextBoxCels = LoadCel("data\\textbox2.cel", 271); } void FreeInfoBoxGfx() diff --git a/Source/panels/spell_book.cpp b/Source/panels/spell_book.cpp index e6a25e715..794ead508 100644 --- a/Source/panels/spell_book.cpp +++ b/Source/panels/spell_book.cpp @@ -81,9 +81,9 @@ spell_type GetSBookTrans(spell_id ii, bool townok) void InitSpellBook() { - pSpellBkCel = LoadCel("Data\\SpellBk.CEL", static_cast(SidePanelSize.width)); - pSBkBtnCel = LoadCel("Data\\SpellBkB.CEL", gbIsHellfire ? 61 : 76); - pSBkIconCels = LoadCel("Data\\SpellI2.CEL", 37); + pSpellBkCel = LoadCel("data\\spellbk.cel", static_cast(SidePanelSize.width)); + pSBkBtnCel = LoadCel("data\\spellbkb.cel", gbIsHellfire ? 61 : 76); + pSBkIconCels = LoadCel("data\\spelli2.cel", 37); Player &player = *MyPlayer; if (player._pClass == HeroClass::Warrior) { diff --git a/Source/panels/spell_icons.cpp b/Source/panels/spell_icons.cpp index 5f1d56ea0..24e6f87d6 100644 --- a/Source/panels/spell_icons.cpp +++ b/Source/panels/spell_icons.cpp @@ -71,9 +71,9 @@ const char SpellITbl[] = { void LoadSpellIcons() { if (!gbIsHellfire) - pSpellCels = LoadCel("CtrlPan\\SpelIcon.CEL", SPLICONLENGTH); + pSpellCels = LoadCel("ctrlpan\\spelicon.cel", SPLICONLENGTH); else - pSpellCels = LoadCel("Data\\SpelIcon.CEL", SPLICONLENGTH); + pSpellCels = LoadCel("data\\spelicon.cel", SPLICONLENGTH); SetSpellTrans(RSPLTYPE_SKILL); } diff --git a/Source/player.cpp b/Source/player.cpp index 1a114dd5a..a5eda62ea 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2248,7 +2248,7 @@ void LoadPlrGFX(Player &player, player_graphic graphic) char prefix[3] = { CharChar[static_cast(cls)], ArmourChar[player._pgfxnum >> 4], WepChar[static_cast(animWeaponId)] }; char pszName[256]; - *fmt::format_to(pszName, FMT_COMPILE(R"(PlrGFX\{0}\{1}\{1}{2}.CL2)"), path, string_view(prefix, 3), szCel) = 0; + *fmt::format_to(pszName, FMT_COMPILE(R"(plrgfx\{0}\{1}\{1}{2}.cl2)"), path, string_view(prefix, 3), szCel) = 0; const uint16_t animationWidth = GetPlayerSpriteWidth(cls, graphic, animWeaponId); animationData.sprites = LoadCl2Sheet(pszName, animationWidth); std::optional> trn = GetClassTRN(player); diff --git a/Source/quests.cpp b/Source/quests.cpp index 9989ca3b4..0f290775f 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -137,7 +137,7 @@ void DrawSkelKing(quest_id q, Point position) void DrawWarLord(Point position) { - auto dunData = LoadFileInMem("Levels\\L4Data\\Warlord2.DUN"); + auto dunData = LoadFileInMem("levels\\l4data\\warlord2.dun"); SetPiece = { position, { SDL_SwapLE16(dunData[0]), SDL_SwapLE16(dunData[1]) } }; @@ -146,7 +146,7 @@ void DrawWarLord(Point position) void DrawSChamber(quest_id q, Point position) { - auto dunData = LoadFileInMem("Levels\\L2Data\\Bonestr1.DUN"); + auto dunData = LoadFileInMem("levels\\l2data\\bonestr1.dun"); SetPiece = { position, { SDL_SwapLE16(dunData[0]), SDL_SwapLE16(dunData[1]) } }; @@ -157,7 +157,7 @@ void DrawSChamber(quest_id q, Point position) void DrawLTBanner(Point position) { - auto dunData = LoadFileInMem("Levels\\L1Data\\Banner1.DUN"); + auto dunData = LoadFileInMem("levels\\l1data\\banner1.dun"); int width = SDL_SwapLE16(dunData[0]); int height = SDL_SwapLE16(dunData[1]); @@ -187,7 +187,7 @@ void DrawBlind(Point position) void DrawBlood(Point position) { - auto dunData = LoadFileInMem("Levels\\L2Data\\Blood2.DUN"); + auto dunData = LoadFileInMem("levels\\l2data\\blood2.dun"); SetPiece = { position, { SDL_SwapLE16(dunData[0]), SDL_SwapLE16(dunData[1]) } }; @@ -352,7 +352,7 @@ void CheckQuests() && Quests[Q_PWATER]._qactive != QUEST_DONE) { Quests[Q_PWATER]._qactive = QUEST_DONE; PlaySfxLoc(IS_QUESTDN, MyPlayer->position.tile); - LoadPalette("Levels\\L3Data\\L3pwater.pal", false); + LoadPalette("levels\\l3data\\l3pwater.pal", false); UpdatePWaterPalette(); WaterDone = 32; } @@ -532,9 +532,9 @@ void LoadPWaterPalette() return; if (Quests[Q_PWATER]._qactive == QUEST_DONE) - LoadPalette("Levels\\L3Data\\L3pwater.pal"); + LoadPalette("levels\\l3data\\l3pwater.pal"); else - LoadPalette("Levels\\L3Data\\L3pfoul.pal"); + LoadPalette("levels\\l3data\\l3pfoul.pal"); } void UpdatePWaterPalette() diff --git a/Source/towners.cpp b/Source/towners.cpp index 28389ce6c..ba57b3fd8 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -77,7 +77,7 @@ void InitSmith(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\Smith\\SmithN.CEL", 16, 3); + LoadTownerAnimations(towner, "towners\\smith\\smithn.cel", 16, 3); towner.name = _("Griswold the Blacksmith"); } @@ -99,7 +99,7 @@ void InitBarOwner(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\TwnF\\TwnFN.CEL", 16, 3); + LoadTownerAnimations(towner, "towners\\twnf\\twnfn.cel", 16, 3); towner.name = _("Ogden the Tavern owner"); } @@ -108,7 +108,7 @@ void InitTownDead(Towner &towner, const TownerData &townerData) towner._tAnimWidth = 96; towner.animOrder = nullptr; towner.animOrderSize = 0; - LoadTownerAnimations(towner, "Towners\\Butch\\Deadguy.CEL", 8, 6); + LoadTownerAnimations(towner, "towners\\butch\\deadguy.cel", 8, 6); towner.name = _("Wounded Townsman"); } @@ -130,7 +130,7 @@ void InitWitch(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\TownWmn1\\Witch.CEL", 19, 6); + LoadTownerAnimations(towner, "towners\\townwmn1\\witch.cel", 19, 6); towner.name = _("Adria the Witch"); } @@ -139,7 +139,7 @@ void InitBarmaid(Towner &towner, const TownerData &townerData) towner._tAnimWidth = 96; towner.animOrder = nullptr; towner.animOrderSize = 0; - LoadTownerAnimations(towner, "Towners\\TownWmn1\\WmnN.CEL", 18, 6); + LoadTownerAnimations(towner, "towners\\townwmn1\\wmnn.cel", 18, 6); towner.name = _("Gillian the Barmaid"); } @@ -148,7 +148,7 @@ void InitBoy(Towner &towner, const TownerData &townerData) towner._tAnimWidth = 96; towner.animOrder = nullptr; towner.animOrderSize = 0; - LoadTownerAnimations(towner, "Towners\\TownBoy\\PegKid1.CEL", 20, 6); + LoadTownerAnimations(towner, "towners\\townboy\\pegkid1.cel", 20, 6); towner.name = _("Wirt the Peg-legged boy"); } @@ -170,7 +170,7 @@ void InitHealer(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\Healer\\Healer.CEL", 20, 6); + LoadTownerAnimations(towner, "towners\\healer\\healer.cel", 20, 6); towner.name = _("Pepin the Healer"); } @@ -187,7 +187,7 @@ void InitTeller(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\Strytell\\Strytell.CEL", 25, 3); + LoadTownerAnimations(towner, "towners\\strytell\\strytell.cel", 25, 3); towner.name = _("Cain the Elder"); } @@ -203,7 +203,7 @@ void InitDrunk(Towner &towner, const TownerData &townerData) }; towner.animOrder = AnimOrder; towner.animOrderSize = sizeof(AnimOrder); - LoadTownerAnimations(towner, "Towners\\Drunk\\TwnDrunk.CEL", 18, 3); + LoadTownerAnimations(towner, "towners\\drunk\\twndrunk.cel", 18, 3); towner.name = _("Farnham the Drunk"); } @@ -238,15 +238,15 @@ void InitFarmer(Towner &towner, const TownerData &townerData) towner._tAnimWidth = 96; towner.animOrder = nullptr; towner.animOrderSize = 0; - LoadTownerAnimations(towner, "Towners\\Farmer\\Farmrn2.CEL", 15, 3); + LoadTownerAnimations(towner, "towners\\farmer\\farmrn2.cel", 15, 3); towner.name = _("Lester the farmer"); } void InitCowFarmer(Towner &towner, const TownerData &townerData) { - const char *celPath = "Towners\\Farmer\\cfrmrn2.CEL"; + const char *celPath = "towners\\farmer\\cfrmrn2.cel"; if (Quests[Q_JERSEY]._qactive == QUEST_DONE) { - celPath = "Towners\\Farmer\\mfrmrn2.CEL"; + celPath = "towners\\farmer\\mfrmrn2.cel"; } towner._tAnimWidth = 96; towner.animOrder = nullptr; @@ -260,7 +260,7 @@ void InitGirl(Towner &towner, const TownerData &townerData) towner._tAnimWidth = 96; towner.animOrder = nullptr; towner.animOrderSize = 0; - LoadTownerAnimations(towner, "Towners\\Girl\\Girlw1.CEL", 20, 6); + LoadTownerAnimations(towner, "towners\\girl\\girlw1.cel", 20, 6); towner.name = _("Celia"); } @@ -649,7 +649,7 @@ void TalkToCowFarmer(Player &player, Towner &cowFarmer) InitQTextMsg(TEXT_JERSEY8); quest._qactive = QUEST_DONE; auto curFrame = cowFarmer._tAnimFrame; - LoadTownerAnimations(cowFarmer, "Towners\\Farmer\\mfrmrn2.CEL", 15, 3); + LoadTownerAnimations(cowFarmer, "towners\\farmer\\mfrmrn2.cel", 15, 3); cowFarmer._tAnimFrame = std::min(curFrame, cowFarmer._tAnimLen - 1); return; } @@ -729,7 +729,7 @@ void TalkToGirl(Player &player, Towner &girl) quest._qlog = false; quest._qactive = QUEST_DONE; auto curFrame = girl._tAnimFrame; - LoadTownerAnimations(girl, "Towners\\Girl\\Girls1.CEL", 20, 6); + LoadTownerAnimations(girl, "towners\\girl\\girls1.cel", 20, 6); girl._tAnimFrame = std::min(curFrame, girl._tAnimLen - 1); if (gbIsMultiplayer) NetSendCmdQuest(true, quest); @@ -820,7 +820,7 @@ void InitTowners() { assert(!CowSprites); - CowSprites.emplace(LoadCelSheet("Towners\\Animals\\Cow.CEL", 128)); + CowSprites.emplace(LoadCelSheet("towners\\animals\\cow.cel", 128)); int i = 0; for (const auto &townerData : TownersData) { diff --git a/Source/utils/cel_to_clx.cpp b/Source/utils/cel_to_clx.cpp index fa471f0a8..a6c3bde9e 100644 --- a/Source/utils/cel_to_clx.cpp +++ b/Source/utils/cel_to_clx.cpp @@ -42,7 +42,7 @@ OwnedClxSpriteListOrSheet CelToClx(const uint8_t *data, size_t size, PointerOrVa std::vector cl2Data; // Most files become smaller with CL2. Allocate exactly enough bytes to avoid reallocation. - // The only file that becomes larger is Data\hf_logo3.CEL, by exactly 4445 bytes. + // The only file that becomes larger is data\hf_logo3.cel, by exactly 4445 bytes. cl2Data.reserve(size + 4445); // If it is a number of frames, then the last frame offset will be equal to the size of the file. diff --git a/test/Fixtures.cmake b/test/Fixtures.cmake index 45a126df9..09eb884a9 100644 --- a/test/Fixtures.cmake +++ b/test/Fixtures.cmake @@ -44,26 +44,26 @@ set(devilutionx_fixtures hellfire/22-1191662129.dun hellfire/23-97055268.dun hellfire/24-1324803725.dun - Levels/L1Data/Banner1.DUN - Levels/L1Data/Banner2.DUN - Levels/L1Data/rnd6.DUN - Levels/L1Data/SKngDO.DUN - Levels/L2Data/Blind1.DUN - Levels/L2Data/Blood1.DUN - Levels/L2Data/Blood2.DUN - Levels/L2Data/Bonestr1.DUN - Levels/L2Data/Bonestr2.DUN - Levels/L3Data/Anvil.DUN - Levels/L4Data/diab1.DUN - Levels/L4Data/diab2a.DUN - Levels/L4Data/diab2b.DUN - Levels/L4Data/diab3a.DUN - Levels/L4Data/diab3b.DUN - Levels/L4Data/diab4a.DUN - Levels/L4Data/diab4b.DUN - Levels/L4Data/Vile1.DUN - Levels/L4Data/Warlord.DUN - Levels/L4Data/Warlord2.DUN + levels/l1data/banner1.dun + levels/l1data/banner2.dun + levels/l1data/rnd6.dun + levels/l1data/skngdo.dun + levels/l2data/blind1.dun + levels/l2data/blood1.dun + levels/l2data/blood2.dun + levels/l2data/bonestr1.dun + levels/l2data/bonestr2.dun + levels/l3data/anvil.dun + levels/l4data/diab1.dun + levels/l4data/diab2a.dun + levels/l4data/diab2b.dun + levels/l4data/diab3a.dun + levels/l4data/diab3b.dun + levels/l4data/diab4a.dun + levels/l4data/diab4b.dun + levels/l4data/vile1.dun + levels/l4data/warlord.dun + levels/l4data/warlord2.dun memory_map/additionalMissiles.txt memory_map/game.txt memory_map/hero.txt diff --git a/test/fixtures/Levels/L1Data/Banner1.DUN b/test/fixtures/levels/l1data/banner1.dun similarity index 100% rename from test/fixtures/Levels/L1Data/Banner1.DUN rename to test/fixtures/levels/l1data/banner1.dun diff --git a/test/fixtures/Levels/L1Data/Banner2.DUN b/test/fixtures/levels/l1data/banner2.dun similarity index 100% rename from test/fixtures/Levels/L1Data/Banner2.DUN rename to test/fixtures/levels/l1data/banner2.dun diff --git a/test/fixtures/Levels/L1Data/rnd6.DUN b/test/fixtures/levels/l1data/rnd6.dun similarity index 100% rename from test/fixtures/Levels/L1Data/rnd6.DUN rename to test/fixtures/levels/l1data/rnd6.dun diff --git a/test/fixtures/Levels/L1Data/SKngDO.DUN b/test/fixtures/levels/l1data/skngdo.dun similarity index 100% rename from test/fixtures/Levels/L1Data/SKngDO.DUN rename to test/fixtures/levels/l1data/skngdo.dun diff --git a/test/fixtures/Levels/L2Data/Blind1.DUN b/test/fixtures/levels/l2data/blind1.dun similarity index 100% rename from test/fixtures/Levels/L2Data/Blind1.DUN rename to test/fixtures/levels/l2data/blind1.dun diff --git a/test/fixtures/Levels/L2Data/Blood1.DUN b/test/fixtures/levels/l2data/blood1.dun similarity index 100% rename from test/fixtures/Levels/L2Data/Blood1.DUN rename to test/fixtures/levels/l2data/blood1.dun diff --git a/test/fixtures/Levels/L2Data/Blood2.DUN b/test/fixtures/levels/l2data/blood2.dun similarity index 100% rename from test/fixtures/Levels/L2Data/Blood2.DUN rename to test/fixtures/levels/l2data/blood2.dun diff --git a/test/fixtures/Levels/L2Data/Bonestr1.DUN b/test/fixtures/levels/l2data/bonestr1.dun similarity index 100% rename from test/fixtures/Levels/L2Data/Bonestr1.DUN rename to test/fixtures/levels/l2data/bonestr1.dun diff --git a/test/fixtures/Levels/L2Data/Bonestr2.DUN b/test/fixtures/levels/l2data/bonestr2.dun similarity index 100% rename from test/fixtures/Levels/L2Data/Bonestr2.DUN rename to test/fixtures/levels/l2data/bonestr2.dun diff --git a/test/fixtures/Levels/L3Data/Anvil.DUN b/test/fixtures/levels/l3data/anvil.dun similarity index 100% rename from test/fixtures/Levels/L3Data/Anvil.DUN rename to test/fixtures/levels/l3data/anvil.dun diff --git a/test/fixtures/Levels/L4Data/diab1.DUN b/test/fixtures/levels/l4data/diab1.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab1.DUN rename to test/fixtures/levels/l4data/diab1.dun diff --git a/test/fixtures/Levels/L4Data/diab2a.DUN b/test/fixtures/levels/l4data/diab2a.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab2a.DUN rename to test/fixtures/levels/l4data/diab2a.dun diff --git a/test/fixtures/Levels/L4Data/diab2b.DUN b/test/fixtures/levels/l4data/diab2b.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab2b.DUN rename to test/fixtures/levels/l4data/diab2b.dun diff --git a/test/fixtures/Levels/L4Data/diab3a.DUN b/test/fixtures/levels/l4data/diab3a.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab3a.DUN rename to test/fixtures/levels/l4data/diab3a.dun diff --git a/test/fixtures/Levels/L4Data/diab3b.DUN b/test/fixtures/levels/l4data/diab3b.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab3b.DUN rename to test/fixtures/levels/l4data/diab3b.dun diff --git a/test/fixtures/Levels/L4Data/diab4a.DUN b/test/fixtures/levels/l4data/diab4a.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab4a.DUN rename to test/fixtures/levels/l4data/diab4a.dun diff --git a/test/fixtures/Levels/L4Data/diab4b.DUN b/test/fixtures/levels/l4data/diab4b.dun similarity index 100% rename from test/fixtures/Levels/L4Data/diab4b.DUN rename to test/fixtures/levels/l4data/diab4b.dun diff --git a/test/fixtures/Levels/L4Data/Vile1.DUN b/test/fixtures/levels/l4data/vile1.dun similarity index 100% rename from test/fixtures/Levels/L4Data/Vile1.DUN rename to test/fixtures/levels/l4data/vile1.dun diff --git a/test/fixtures/Levels/L4Data/Warlord.DUN b/test/fixtures/levels/l4data/warlord.dun similarity index 100% rename from test/fixtures/Levels/L4Data/Warlord.DUN rename to test/fixtures/levels/l4data/warlord.dun diff --git a/test/fixtures/Levels/L4Data/Warlord2.DUN b/test/fixtures/levels/l4data/warlord2.dun similarity index 100% rename from test/fixtures/Levels/L4Data/Warlord2.DUN rename to test/fixtures/levels/l4data/warlord2.dun