From 1fd31b7df57c07652b7d9abd9d674dc2900d401f Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 20 Jan 2019 00:06:28 +0100 Subject: [PATCH] Fix menu audio Ui code is moved to the correct file so that it is initialized after the audio. This also rebases effects.cpp on the upstream as this fixes some issues we where having. WinMain has also been rebased. --- CMakeLists.txt | 4 +- Source/effects.cpp | 2111 ++++++++++++++++++++++---------------------- Source/effects.h | 8 +- Source/init.h | 1 + Stub/diablo.cpp | 80 +- Stub/diabloui.cpp | 580 +++++++++++- Stub/effects.cpp | 1342 ---------------------------- Stub/init.cpp | 569 ------------ Stub/sdlrender.cpp | 31 +- Stub/sound.cpp | 48 +- 10 files changed, 1691 insertions(+), 3083 deletions(-) delete mode 100644 Stub/effects.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 400b8859b..ecbbbf865 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,7 @@ set(SOURCES Source/drlg_l2.cpp Source/drlg_l3.cpp Source/drlg_l4.cpp -# Source/effects.cpp + Source/effects.cpp Source/encrypt.cpp Source/engine.cpp Source/error.cpp @@ -103,7 +103,6 @@ set(ORIGINAL_SOURCES Source/capture.cpp Source/appfat.cpp Source/dthread.cpp - Source/effects.cpp Source/dx.cpp Source/fault.cpp Source/init.cpp @@ -134,7 +133,6 @@ set(STUB_SOURCES Stub/miniwin_msg_sdl.cpp Stub/storm_net.cpp Stub/validate.cpp - Stub/effects.cpp Stub/sdlrender.cpp Stub/diablo.cpp Stub/gamemenu.cpp diff --git a/Source/effects.cpp b/Source/effects.cpp index 95dc34d01..d566fb62a 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -2,909 +2,894 @@ #include "../types.h" -#ifndef NO_GLOBALS -int effects_cpp_init_value; // weak - int sfxdelay; // weak int sfxdnum; void *sfx_stream; TSFX *sfx_data_cur; -#endif -const int effects_inf = 0x7F800000; // weak const char monster_action_sounds[] = { 'a', 'h', 'd', 's' }; // idb /* data */ -TSFX sgSFX[NUM_SFX] = -{ - { 2u, "Sfx\\Misc\\Walk1.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk2.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk3.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk4.wav", NULL }, - { 2u, "Sfx\\Misc\\BFire.wav", NULL }, - { 2u, "Sfx\\Misc\\Fmag.wav", NULL }, - { 2u, "Sfx\\Misc\\Tmag.wav", NULL }, - { 2u, "Sfx\\Misc\\Lghit.wav", NULL }, - { 2u, "Sfx\\Misc\\Lghit1.wav", NULL }, - { 2u, "Sfx\\Misc\\Swing.wav", NULL }, - { 2u, "Sfx\\Misc\\Swing2.wav", NULL }, - { 2u, "Sfx\\Misc\\Dead.wav", NULL }, - { 1u, "Sfx\\Misc\\Questdon.wav", NULL }, - { 2u, "Sfx\\Items\\Armrfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Barlfire.wav", NULL }, - { 2u, "Sfx\\Items\\Barrel.wav", NULL }, - { 2u, "Sfx\\Items\\Bhit.wav", NULL }, - { 2u, "Sfx\\Items\\Bhit1.wav", NULL }, - { 2u, "Sfx\\Items\\Chest.wav", NULL }, - { 2u, "Sfx\\Items\\Doorclos.wav", NULL }, - { 2u, "Sfx\\Items\\Dooropen.wav", NULL }, - { 2u, "Sfx\\Items\\Flipanvl.wav", NULL }, - { 2u, "Sfx\\Items\\Flipaxe.wav", NULL }, - { 2u, "Sfx\\Items\\Flipblst.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbody.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbook.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbow.wav", NULL }, - { 2u, "Sfx\\Items\\Flipcap.wav", NULL }, - { 2u, "Sfx\\Items\\Flipharm.wav", NULL }, - { 2u, "Sfx\\Items\\Fliplarm.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmag.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmag1.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmush.wav", NULL }, - { 2u, "Sfx\\Items\\Flippot.wav", NULL }, - { 2u, "Sfx\\Items\\Flipring.wav", NULL }, - { 2u, "Sfx\\Items\\Fliprock.wav", NULL }, - { 2u, "Sfx\\Items\\Flipscrl.wav", NULL }, - { 2u, "Sfx\\Items\\Flipshld.wav", NULL }, - { 2u, "Sfx\\Items\\Flipsign.wav", NULL }, - { 2u, "Sfx\\Items\\Flipstaf.wav", NULL }, - { 2u, "Sfx\\Items\\Flipswor.wav", NULL }, - { 2u, "Sfx\\Items\\Gold.wav", NULL }, - { 2u, "Sfx\\Items\\Hlmtfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Invanvl.wav", NULL }, - { 2u, "Sfx\\Items\\Invaxe.wav", NULL }, - { 2u, "Sfx\\Items\\Invblst.wav", NULL }, - { 2u, "Sfx\\Items\\Invbody.wav", NULL }, - { 2u, "Sfx\\Items\\Invbook.wav", NULL }, - { 2u, "Sfx\\Items\\Invbow.wav", NULL }, - { 2u, "Sfx\\Items\\Invcap.wav", NULL }, - { 2u, "Sfx\\Items\\Invgrab.wav", NULL }, - { 2u, "Sfx\\Items\\Invharm.wav", NULL }, - { 2u, "Sfx\\Items\\Invlarm.wav", NULL }, - { 2u, "Sfx\\Items\\Invmush.wav", NULL }, - { 2u, "Sfx\\Items\\Invpot.wav", NULL }, - { 2u, "Sfx\\Items\\Invring.wav", NULL }, - { 2u, "Sfx\\Items\\Invrock.wav", NULL }, - { 2u, "Sfx\\Items\\Invscrol.wav", NULL }, - { 2u, "Sfx\\Items\\Invshiel.wav", NULL }, - { 2u, "Sfx\\Items\\Invsign.wav", NULL }, - { 2u, "Sfx\\Items\\Invstaf.wav", NULL }, - { 2u, "Sfx\\Items\\Invsword.wav", NULL }, - { 2u, "Sfx\\Items\\Lever.wav", NULL }, - { 2u, "Sfx\\Items\\Magic.wav", NULL }, - { 2u, "Sfx\\Items\\Magic1.wav", NULL }, - { 2u, "Sfx\\Items\\Readbook.wav", NULL }, - { 2u, "Sfx\\Items\\Sarc.wav", NULL }, - { 2u, "Sfx\\Items\\Shielfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Swrdfkd.wav", NULL }, - { 4u, "Sfx\\Items\\Titlemov.wav", NULL }, - { 4u, "Sfx\\Items\\Titlslct.wav", NULL }, - { 4u, "Sfx\\Misc\\blank.wav", NULL }, - { 2u, "Sfx\\Items\\Trap.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast1.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast10.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast12.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast2.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast3.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast4.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast5.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast6.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast7.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast8.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast9.wav", NULL }, - { 2u, "Sfx\\Misc\\Healing.wav", NULL }, - { 2u, "Sfx\\Misc\\Repair.wav", NULL }, - { 2u, "Sfx\\Misc\\Acids1.wav", NULL }, - { 2u, "Sfx\\Misc\\Acids2.wav", NULL }, - { 2u, "Sfx\\Misc\\Apoc.wav", NULL }, - { 2u, "Sfx\\Misc\\Arrowall.wav", NULL }, - { 2u, "Sfx\\Misc\\Bldboil.wav", NULL }, - { 2u, "Sfx\\Misc\\Blodstar.wav", NULL }, - { 2u, "Sfx\\Misc\\Blsimpt.wav", NULL }, - { 2u, "Sfx\\Misc\\Bonesp.wav", NULL }, - { 2u, "Sfx\\Misc\\Bsimpct.wav", NULL }, - { 2u, "Sfx\\Misc\\Caldron.wav", NULL }, - { 2u, "Sfx\\Misc\\Cbolt.wav", NULL }, - { 2u, "Sfx\\Misc\\Chltning.wav", NULL }, - { 2u, "Sfx\\Misc\\DSerp.wav", NULL }, - { 2u, "Sfx\\Misc\\Elecimp1.wav", NULL }, - { 2u, "Sfx\\Misc\\Elementl.wav", NULL }, - { 2u, "Sfx\\Misc\\Ethereal.wav", NULL }, - { 2u, "Sfx\\Misc\\Fball.wav", NULL }, - { 2u, "Sfx\\Misc\\Fbolt1.wav", NULL }, - { 2u, "Sfx\\Misc\\Fbolt2.wav", NULL }, - { 2u, "Sfx\\Misc\\Firimp1.wav", NULL }, - { 2u, "Sfx\\Misc\\Firimp2.wav", NULL }, - { 2u, "Sfx\\Misc\\Flamwave.wav", NULL }, - { 2u, "Sfx\\Misc\\Flash.wav", NULL }, - { 2u, "Sfx\\Misc\\Fountain.wav", NULL }, - { 2u, "Sfx\\Misc\\Golum.wav", NULL }, - { 2u, "Sfx\\Misc\\Golumded.wav", NULL }, - { 2u, "Sfx\\Misc\\Gshrine.wav", NULL }, - { 2u, "Sfx\\Misc\\Guard.wav", NULL }, - { 2u, "Sfx\\Misc\\Grdlanch.wav", NULL }, - { 2u, "Sfx\\Misc\\Holybolt.wav", NULL }, - { 2u, "Sfx\\Misc\\Hyper.wav", NULL }, - { 2u, "Sfx\\Misc\\Infravis.wav", NULL }, - { 2u, "Sfx\\Misc\\Invisibl.wav", NULL }, - { 2u, "Sfx\\Misc\\Invpot.wav", NULL }, - { 2u, "Sfx\\Misc\\Lning1.wav", NULL }, - { 2u, "Sfx\\Misc\\Ltning.wav", NULL }, - { 2u, "Sfx\\Misc\\Mshield.wav", NULL }, - { 2u, "Sfx\\Misc\\Nova.wav", NULL }, - { 2u, "Sfx\\Misc\\Portal.wav", NULL }, - { 2u, "Sfx\\Misc\\Puddle.wav", NULL }, - { 2u, "Sfx\\Misc\\Resur.wav", NULL }, - { 2u, "Sfx\\Misc\\Scurse.wav", NULL }, - { 2u, "Sfx\\Misc\\Scurimp.wav", NULL }, - { 2u, "Sfx\\Misc\\Sentinel.wav", NULL }, - { 2u, "Sfx\\Misc\\Shatter.wav", NULL }, - { 2u, "Sfx\\Misc\\Soulfire.wav", NULL }, - { 2u, "Sfx\\Misc\\Spoutlop.wav", NULL }, - { 2u, "Sfx\\Misc\\Spoutstr.wav", NULL }, - { 2u, "Sfx\\Misc\\Storm.wav", NULL }, - { 2u, "Sfx\\Misc\\Trapdis.wav", NULL }, - { 2u, "Sfx\\Misc\\Teleport.wav", NULL }, - { 2u, "Sfx\\Misc\\Vtheft.wav", NULL }, - { 2u, "Sfx\\Misc\\Wallloop.wav", NULL }, - { 2u, "Sfx\\Misc\\Wallstrt.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid01.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid02.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid03.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid04.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid05.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid06.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid07.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid08.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid09.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid10.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid11.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid12.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid13.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid14.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid15.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid16.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid17.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid18.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid19.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid20.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid21.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid22.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid23.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid24.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid25.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid26.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid27.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid28.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid29.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid30.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid31.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid32.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid33.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid34.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid35.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid36.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid37.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid38.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid39.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid40.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith01.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith02.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith03.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith04.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith05.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith06.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith07.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith08.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith09.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith10.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith11.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith12.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith13.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith14.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith15.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith16.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith17.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith18.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith19.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith20.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith21.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith22.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith23.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith24.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith25.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith26.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith27.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith28.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith29.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith30.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith31.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith32.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith33.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith34.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith35.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith36.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith37.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith38.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith39.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith40.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith41.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith42.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith43.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith44.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith45.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith46.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith47.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith48.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith49.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith50.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith51.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith52.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith53.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith54.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith55.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith56.wav", NULL }, - { 0u, "Sfx\\Towners\\Cow1.wav", NULL }, - { 0u, "Sfx\\Towners\\Cow2.wav", NULL }, - { 1u, "Sfx\\Towners\\Deadguy2.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk01.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk02.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk03.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk04.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk05.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk06.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk07.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk08.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk09.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk10.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk11.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk12.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk13.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk14.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk15.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk16.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk17.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk18.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk19.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk20.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk21.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk22.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk23.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk24.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk25.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk26.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk27.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk28.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk29.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk30.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk31.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk32.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk33.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk34.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk35.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer01.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer02.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer03.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer04.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer05.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer06.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer07.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer08.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer09.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer10.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer11.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer12.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer13.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer14.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer15.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer16.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer17.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer18.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer19.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer20.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer21.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer22.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer23.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer24.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer25.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer26.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer27.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer28.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer29.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer30.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer31.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer32.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer33.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer34.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer35.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer36.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer37.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer38.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer39.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer40.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer41.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer42.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer43.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer44.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer45.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer46.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer47.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy01.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy02.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy03.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy04.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy05.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy06.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy07.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy08.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy09.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy10.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy11.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy12.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy13.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy14.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy15.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy16.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy17.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy18.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy19.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy20.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy21.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy22.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy23.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy24.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy25.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy26.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy27.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy28.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy29.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy30.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy31.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy32.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy33.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy34.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy35.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy36.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy37.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy38.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy39.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy40.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy41.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy42.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy43.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest00.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest01.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest02.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest03.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest04.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest05.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest06.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest07.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt00.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt01.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt02.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt03.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt04.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt05.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt06.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt07.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt08.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt09.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt10.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt11.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt12.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt13.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt14.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt15.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt16.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt17.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt18.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt19.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt20.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt21.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt22.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt23.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt24.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt25.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt26.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt27.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt28.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt29.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt30.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt31.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt32.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt33.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt34.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt35.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt36.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt37.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt38.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown00.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown01.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown02.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown03.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown04.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown05.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown06.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown07.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown08.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown09.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown10.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown11.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown12.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown13.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown14.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown15.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown16.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown17.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown18.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown19.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown20.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown21.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown22.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown23.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown24.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown25.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown26.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown27.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown28.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown29.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown30.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown31.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown32.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown33.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown34.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown35.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown36.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown37.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown38.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown39.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown40.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown41.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown42.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown43.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown44.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown45.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch01.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch02.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch03.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch04.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch05.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch06.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch07.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch08.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch09.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch10.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch11.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch12.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch13.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch14.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch15.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch16.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch17.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch18.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch19.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch20.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch21.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch22.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch23.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch24.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch25.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch26.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch27.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch28.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch29.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch30.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch31.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch32.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch33.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch34.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch35.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch36.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch37.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch38.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch39.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch40.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch41.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch42.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch43.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch44.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch45.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch46.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch47.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch48.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch49.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch50.wav", NULL }, - { 1u, "Sfx\\Towners\\Wound01.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage01.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage02.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage03.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage04.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage05.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage06.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage07.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage08.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage09.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage10.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage11.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage12.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage13.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage14.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage15.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage16.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage17.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage18.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage19.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage20.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage21.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage22.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage23.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage24.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage25.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage26.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage27.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage28.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage29.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage30.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage31.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage32.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage33.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage34.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage35.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage36.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage37.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage38.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage39.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage40.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage41.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage42.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage43.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage44.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage45.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage46.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage47.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage48.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage49.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage50.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage51.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage52.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage53.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage54.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage55.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage56.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage57.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage58.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage59.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage60.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage61.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage62.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage63.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage64.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage65.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage66.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage67.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage68.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage69.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage69b.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage70.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage71.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage72.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage73.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage74.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage75.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage76.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage77.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage78.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage79.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage80.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage81.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage82.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage83.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage84.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage85.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage86.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage87.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage88.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage89.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage90.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage91.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage92.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage93.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage94.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage95.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage96.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage97.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage98.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage99.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage100.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage101.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage102.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue01.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue02.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue03.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue04.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue05.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue06.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue07.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue08.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue09.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue10.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue11.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue12.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue13.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue14.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue15.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue16.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue17.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue18.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue19.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue20.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue21.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue22.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue23.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue24.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue25.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue26.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue27.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue28.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue29.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue30.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue31.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue32.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue33.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue34.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue35.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue36.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue37.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue38.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue39.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue40.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue41.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue42.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue43.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue44.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue45.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue46.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue47.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue48.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue49.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue50.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue51.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue52.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue53.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue54.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue55.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue56.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue57.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue58.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue59.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue60.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue61.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue62.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue63.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue64.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue65.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue66.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue67.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue68.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue69.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue69b.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue70.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue71.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue72.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue73.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue74.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue75.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue76.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue77.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue78.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue79.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue80.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue81.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue82.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue83.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue84.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue85.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue86.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue87.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue88.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue89.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue90.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue91.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue92.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue93.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue94.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue95.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue96.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue97.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue98.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue99.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue100.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue101.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue102.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior01.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior02.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior03.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior04.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior05.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior06.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior07.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior08.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior09.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior10.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior11.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior12.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior13.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior14.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario14b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario14c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior15.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario15b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario15c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior16.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario16b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario16c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior17.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior18.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior19.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior20.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior21.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior22.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior23.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior24.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior25.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior26.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior27.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior28.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior29.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior30.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior31.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior32.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior33.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior34.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior35.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior36.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior37.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior38.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior39.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior40.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior41.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior42.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior43.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior44.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior45.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior46.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior47.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior48.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior49.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior50.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior51.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior52.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior53.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior54.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior55.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior56.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior57.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior58.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior59.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior60.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior61.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior62.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior63.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior64.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior65.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior66.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior67.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior68.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior69.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario69b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior70.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior71.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior72.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior73.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior74.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior75.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior76.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior77.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior78.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior79.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior80.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior81.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior82.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior83.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior84.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior85.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior86.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior87.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior88.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior89.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior90.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior91.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior92.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior93.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior94.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior95.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95b.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95c.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95d.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95e.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95f.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario96b.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario97.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario98.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior99.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario100.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario101.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario102.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar01.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar02.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar03.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar04.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar05.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar06.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar07.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar08.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar09.wav", NULL }, - { 1u, "Sfx\\Misc\\Lvl16int.wav", NULL }, - { 1u, "Sfx\\Monsters\\Butcher.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud04.wav", NULL }, - { 1u, "Sfx\\Monsters\\Izual01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Laz01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Laz02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Sking01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Warlrd01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Wlock01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Zhar01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Zhar02.wav", NULL }, - { 1u, "Sfx\\Monsters\\DiabloD.wav", NULL } +TSFX sgSFX[NUM_SFX] = { + // clang-format off + // bFlags, pszName, pSnd + { 2, "Sfx\\Misc\\Walk1.wav", NULL }, + { 2, "Sfx\\Misc\\Walk2.wav", NULL }, + { 2, "Sfx\\Misc\\Walk3.wav", NULL }, + { 2, "Sfx\\Misc\\Walk4.wav", NULL }, + { 2, "Sfx\\Misc\\BFire.wav", NULL }, + { 2, "Sfx\\Misc\\Fmag.wav", NULL }, + { 2, "Sfx\\Misc\\Tmag.wav", NULL }, + { 2, "Sfx\\Misc\\Lghit.wav", NULL }, + { 2, "Sfx\\Misc\\Lghit1.wav", NULL }, + { 2, "Sfx\\Misc\\Swing.wav", NULL }, + { 2, "Sfx\\Misc\\Swing2.wav", NULL }, + { 2, "Sfx\\Misc\\Dead.wav", NULL }, + { 1, "Sfx\\Misc\\Questdon.wav", NULL }, + { 2, "Sfx\\Items\\Armrfkd.wav", NULL }, + { 2, "Sfx\\Items\\Barlfire.wav", NULL }, + { 2, "Sfx\\Items\\Barrel.wav", NULL }, + { 2, "Sfx\\Items\\Bhit.wav", NULL }, + { 2, "Sfx\\Items\\Bhit1.wav", NULL }, + { 2, "Sfx\\Items\\Chest.wav", NULL }, + { 2, "Sfx\\Items\\Doorclos.wav", NULL }, + { 2, "Sfx\\Items\\Dooropen.wav", NULL }, + { 2, "Sfx\\Items\\Flipanvl.wav", NULL }, + { 2, "Sfx\\Items\\Flipaxe.wav", NULL }, + { 2, "Sfx\\Items\\Flipblst.wav", NULL }, + { 2, "Sfx\\Items\\Flipbody.wav", NULL }, + { 2, "Sfx\\Items\\Flipbook.wav", NULL }, + { 2, "Sfx\\Items\\Flipbow.wav", NULL }, + { 2, "Sfx\\Items\\Flipcap.wav", NULL }, + { 2, "Sfx\\Items\\Flipharm.wav", NULL }, + { 2, "Sfx\\Items\\Fliplarm.wav", NULL }, + { 2, "Sfx\\Items\\Flipmag.wav", NULL }, + { 2, "Sfx\\Items\\Flipmag1.wav", NULL }, + { 2, "Sfx\\Items\\Flipmush.wav", NULL }, + { 2, "Sfx\\Items\\Flippot.wav", NULL }, + { 2, "Sfx\\Items\\Flipring.wav", NULL }, + { 2, "Sfx\\Items\\Fliprock.wav", NULL }, + { 2, "Sfx\\Items\\Flipscrl.wav", NULL }, + { 2, "Sfx\\Items\\Flipshld.wav", NULL }, + { 2, "Sfx\\Items\\Flipsign.wav", NULL }, + { 2, "Sfx\\Items\\Flipstaf.wav", NULL }, + { 2, "Sfx\\Items\\Flipswor.wav", NULL }, + { 2, "Sfx\\Items\\Gold.wav", NULL }, + { 2, "Sfx\\Items\\Hlmtfkd.wav", NULL }, + { 2, "Sfx\\Items\\Invanvl.wav", NULL }, + { 2, "Sfx\\Items\\Invaxe.wav", NULL }, + { 2, "Sfx\\Items\\Invblst.wav", NULL }, + { 2, "Sfx\\Items\\Invbody.wav", NULL }, + { 2, "Sfx\\Items\\Invbook.wav", NULL }, + { 2, "Sfx\\Items\\Invbow.wav", NULL }, + { 2, "Sfx\\Items\\Invcap.wav", NULL }, + { 2, "Sfx\\Items\\Invgrab.wav", NULL }, + { 2, "Sfx\\Items\\Invharm.wav", NULL }, + { 2, "Sfx\\Items\\Invlarm.wav", NULL }, + { 2, "Sfx\\Items\\Invmush.wav", NULL }, + { 2, "Sfx\\Items\\Invpot.wav", NULL }, + { 2, "Sfx\\Items\\Invring.wav", NULL }, + { 2, "Sfx\\Items\\Invrock.wav", NULL }, + { 2, "Sfx\\Items\\Invscrol.wav", NULL }, + { 2, "Sfx\\Items\\Invshiel.wav", NULL }, + { 2, "Sfx\\Items\\Invsign.wav", NULL }, + { 2, "Sfx\\Items\\Invstaf.wav", NULL }, + { 2, "Sfx\\Items\\Invsword.wav", NULL }, + { 2, "Sfx\\Items\\Lever.wav", NULL }, + { 2, "Sfx\\Items\\Magic.wav", NULL }, + { 2, "Sfx\\Items\\Magic1.wav", NULL }, + { 2, "Sfx\\Items\\Readbook.wav", NULL }, + { 2, "Sfx\\Items\\Sarc.wav", NULL }, + { 2, "Sfx\\Items\\Shielfkd.wav", NULL }, + { 2, "Sfx\\Items\\Swrdfkd.wav", NULL }, + { 4, "Sfx\\Items\\Titlemov.wav", NULL }, + { 4, "Sfx\\Items\\Titlslct.wav", NULL }, + { 4, "Sfx\\Misc\\blank.wav", NULL }, + { 2, "Sfx\\Items\\Trap.wav", NULL }, + { 2, "Sfx\\Misc\\Cast1.wav", NULL }, + { 2, "Sfx\\Misc\\Cast10.wav", NULL }, + { 2, "Sfx\\Misc\\Cast12.wav", NULL }, + { 2, "Sfx\\Misc\\Cast2.wav", NULL }, + { 2, "Sfx\\Misc\\Cast3.wav", NULL }, + { 2, "Sfx\\Misc\\Cast4.wav", NULL }, + { 2, "Sfx\\Misc\\Cast5.wav", NULL }, + { 2, "Sfx\\Misc\\Cast6.wav", NULL }, + { 2, "Sfx\\Misc\\Cast7.wav", NULL }, + { 2, "Sfx\\Misc\\Cast8.wav", NULL }, + { 2, "Sfx\\Misc\\Cast9.wav", NULL }, + { 2, "Sfx\\Misc\\Healing.wav", NULL }, + { 2, "Sfx\\Misc\\Repair.wav", NULL }, + { 2, "Sfx\\Misc\\Acids1.wav", NULL }, + { 2, "Sfx\\Misc\\Acids2.wav", NULL }, + { 2, "Sfx\\Misc\\Apoc.wav", NULL }, + { 2, "Sfx\\Misc\\Arrowall.wav", NULL }, + { 2, "Sfx\\Misc\\Bldboil.wav", NULL }, + { 2, "Sfx\\Misc\\Blodstar.wav", NULL }, + { 2, "Sfx\\Misc\\Blsimpt.wav", NULL }, + { 2, "Sfx\\Misc\\Bonesp.wav", NULL }, + { 2, "Sfx\\Misc\\Bsimpct.wav", NULL }, + { 2, "Sfx\\Misc\\Caldron.wav", NULL }, + { 2, "Sfx\\Misc\\Cbolt.wav", NULL }, + { 2, "Sfx\\Misc\\Chltning.wav", NULL }, + { 2, "Sfx\\Misc\\DSerp.wav", NULL }, + { 2, "Sfx\\Misc\\Elecimp1.wav", NULL }, + { 2, "Sfx\\Misc\\Elementl.wav", NULL }, + { 2, "Sfx\\Misc\\Ethereal.wav", NULL }, + { 2, "Sfx\\Misc\\Fball.wav", NULL }, + { 2, "Sfx\\Misc\\Fbolt1.wav", NULL }, + { 2, "Sfx\\Misc\\Fbolt2.wav", NULL }, + { 2, "Sfx\\Misc\\Firimp1.wav", NULL }, + { 2, "Sfx\\Misc\\Firimp2.wav", NULL }, + { 2, "Sfx\\Misc\\Flamwave.wav", NULL }, + { 2, "Sfx\\Misc\\Flash.wav", NULL }, + { 2, "Sfx\\Misc\\Fountain.wav", NULL }, + { 2, "Sfx\\Misc\\Golum.wav", NULL }, + { 2, "Sfx\\Misc\\Golumded.wav", NULL }, + { 2, "Sfx\\Misc\\Gshrine.wav", NULL }, + { 2, "Sfx\\Misc\\Guard.wav", NULL }, + { 2, "Sfx\\Misc\\Grdlanch.wav", NULL }, + { 2, "Sfx\\Misc\\Holybolt.wav", NULL }, + { 2, "Sfx\\Misc\\Hyper.wav", NULL }, + { 2, "Sfx\\Misc\\Infravis.wav", NULL }, + { 2, "Sfx\\Misc\\Invisibl.wav", NULL }, + { 2, "Sfx\\Misc\\Invpot.wav", NULL }, + { 2, "Sfx\\Misc\\Lning1.wav", NULL }, + { 2, "Sfx\\Misc\\Ltning.wav", NULL }, + { 2, "Sfx\\Misc\\Mshield.wav", NULL }, + { 2, "Sfx\\Misc\\Nova.wav", NULL }, + { 2, "Sfx\\Misc\\Portal.wav", NULL }, + { 2, "Sfx\\Misc\\Puddle.wav", NULL }, + { 2, "Sfx\\Misc\\Resur.wav", NULL }, + { 2, "Sfx\\Misc\\Scurse.wav", NULL }, + { 2, "Sfx\\Misc\\Scurimp.wav", NULL }, + { 2, "Sfx\\Misc\\Sentinel.wav", NULL }, + { 2, "Sfx\\Misc\\Shatter.wav", NULL }, + { 2, "Sfx\\Misc\\Soulfire.wav", NULL }, + { 2, "Sfx\\Misc\\Spoutlop.wav", NULL }, + { 2, "Sfx\\Misc\\Spoutstr.wav", NULL }, + { 2, "Sfx\\Misc\\Storm.wav", NULL }, + { 2, "Sfx\\Misc\\Trapdis.wav", NULL }, + { 2, "Sfx\\Misc\\Teleport.wav", NULL }, + { 2, "Sfx\\Misc\\Vtheft.wav", NULL }, + { 2, "Sfx\\Misc\\Wallloop.wav", NULL }, + { 2, "Sfx\\Misc\\Wallstrt.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid01.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid02.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid03.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid04.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid05.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid06.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid07.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid08.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid09.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid10.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid11.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid12.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid13.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid14.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid15.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid16.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid17.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid18.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid19.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid20.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid21.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid22.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid23.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid24.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid25.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid26.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid27.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid28.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid29.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid30.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid31.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid32.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid33.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid34.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid35.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid36.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid37.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid38.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid39.wav", NULL }, + { 1, "Sfx\\Towners\\Bmaid40.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith01.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith02.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith03.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith04.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith05.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith06.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith07.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith08.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith09.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith10.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith11.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith12.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith13.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith14.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith15.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith16.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith17.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith18.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith19.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith20.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith21.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith22.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith23.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith24.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith25.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith26.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith27.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith28.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith29.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith30.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith31.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith32.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith33.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith34.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith35.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith36.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith37.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith38.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith39.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith40.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith41.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith42.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith43.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith44.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith45.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith46.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith47.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith48.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith49.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith50.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith51.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith52.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith53.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith54.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith55.wav", NULL }, + { 1, "Sfx\\Towners\\Bsmith56.wav", NULL }, + { 0, "Sfx\\Towners\\Cow1.wav", NULL }, + { 0, "Sfx\\Towners\\Cow2.wav", NULL }, + { 1, "Sfx\\Towners\\Deadguy2.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk01.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk02.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk03.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk04.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk05.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk06.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk07.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk08.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk09.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk10.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk11.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk12.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk13.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk14.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk15.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk16.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk17.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk18.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk19.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk20.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk21.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk22.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk23.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk24.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk25.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk26.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk27.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk28.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk29.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk30.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk31.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk32.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk33.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk34.wav", NULL }, + { 1, "Sfx\\Towners\\Drunk35.wav", NULL }, + { 1, "Sfx\\Towners\\Healer01.wav", NULL }, + { 1, "Sfx\\Towners\\Healer02.wav", NULL }, + { 1, "Sfx\\Towners\\Healer03.wav", NULL }, + { 1, "Sfx\\Towners\\Healer04.wav", NULL }, + { 1, "Sfx\\Towners\\Healer05.wav", NULL }, + { 1, "Sfx\\Towners\\Healer06.wav", NULL }, + { 1, "Sfx\\Towners\\Healer07.wav", NULL }, + { 1, "Sfx\\Towners\\Healer08.wav", NULL }, + { 1, "Sfx\\Towners\\Healer09.wav", NULL }, + { 1, "Sfx\\Towners\\Healer10.wav", NULL }, + { 1, "Sfx\\Towners\\Healer11.wav", NULL }, + { 1, "Sfx\\Towners\\Healer12.wav", NULL }, + { 1, "Sfx\\Towners\\Healer13.wav", NULL }, + { 1, "Sfx\\Towners\\Healer14.wav", NULL }, + { 1, "Sfx\\Towners\\Healer15.wav", NULL }, + { 1, "Sfx\\Towners\\Healer16.wav", NULL }, + { 1, "Sfx\\Towners\\Healer17.wav", NULL }, + { 1, "Sfx\\Towners\\Healer18.wav", NULL }, + { 1, "Sfx\\Towners\\Healer19.wav", NULL }, + { 1, "Sfx\\Towners\\Healer20.wav", NULL }, + { 1, "Sfx\\Towners\\Healer21.wav", NULL }, + { 1, "Sfx\\Towners\\Healer22.wav", NULL }, + { 1, "Sfx\\Towners\\Healer23.wav", NULL }, + { 1, "Sfx\\Towners\\Healer24.wav", NULL }, + { 1, "Sfx\\Towners\\Healer25.wav", NULL }, + { 1, "Sfx\\Towners\\Healer26.wav", NULL }, + { 1, "Sfx\\Towners\\Healer27.wav", NULL }, + { 1, "Sfx\\Towners\\Healer28.wav", NULL }, + { 1, "Sfx\\Towners\\Healer29.wav", NULL }, + { 1, "Sfx\\Towners\\Healer30.wav", NULL }, + { 1, "Sfx\\Towners\\Healer31.wav", NULL }, + { 1, "Sfx\\Towners\\Healer32.wav", NULL }, + { 1, "Sfx\\Towners\\Healer33.wav", NULL }, + { 1, "Sfx\\Towners\\Healer34.wav", NULL }, + { 1, "Sfx\\Towners\\Healer35.wav", NULL }, + { 1, "Sfx\\Towners\\Healer36.wav", NULL }, + { 1, "Sfx\\Towners\\Healer37.wav", NULL }, + { 1, "Sfx\\Towners\\Healer38.wav", NULL }, + { 1, "Sfx\\Towners\\Healer39.wav", NULL }, + { 1, "Sfx\\Towners\\Healer40.wav", NULL }, + { 1, "Sfx\\Towners\\Healer41.wav", NULL }, + { 1, "Sfx\\Towners\\Healer42.wav", NULL }, + { 1, "Sfx\\Towners\\Healer43.wav", NULL }, + { 1, "Sfx\\Towners\\Healer44.wav", NULL }, + { 1, "Sfx\\Towners\\Healer45.wav", NULL }, + { 1, "Sfx\\Towners\\Healer46.wav", NULL }, + { 1, "Sfx\\Towners\\Healer47.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy01.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy02.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy03.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy04.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy05.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy06.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy07.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy08.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy09.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy10.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy11.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy12.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy13.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy14.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy15.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy16.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy17.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy18.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy19.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy20.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy21.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy22.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy23.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy24.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy25.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy26.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy27.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy28.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy29.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy30.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy31.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy32.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy33.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy34.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy35.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy36.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy37.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy38.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy39.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy40.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy41.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy42.wav", NULL }, + { 1, "Sfx\\Towners\\Pegboy43.wav", NULL }, + { 1, "Sfx\\Towners\\Priest00.wav", NULL }, + { 1, "Sfx\\Towners\\Priest01.wav", NULL }, + { 1, "Sfx\\Towners\\Priest02.wav", NULL }, + { 1, "Sfx\\Towners\\Priest03.wav", NULL }, + { 1, "Sfx\\Towners\\Priest04.wav", NULL }, + { 1, "Sfx\\Towners\\Priest05.wav", NULL }, + { 1, "Sfx\\Towners\\Priest06.wav", NULL }, + { 1, "Sfx\\Towners\\Priest07.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt00.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt01.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt02.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt03.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt04.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt05.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt06.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt07.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt08.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt09.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt10.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt11.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt12.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt13.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt14.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt15.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt16.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt17.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt18.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt19.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt20.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt21.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt22.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt23.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt24.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt25.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt26.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt27.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt28.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt29.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt30.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt31.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt32.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt33.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt34.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt35.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt36.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt37.wav", NULL }, + { 1, "Sfx\\Towners\\Storyt38.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown00.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown01.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown02.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown03.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown04.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown05.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown06.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown07.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown08.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown09.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown10.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown11.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown12.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown13.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown14.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown15.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown16.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown17.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown18.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown19.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown20.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown21.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown22.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown23.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown24.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown25.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown26.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown27.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown28.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown29.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown30.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown31.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown32.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown33.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown34.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown35.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown36.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown37.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown38.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown39.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown40.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown41.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown42.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown43.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown44.wav", NULL }, + { 1, "Sfx\\Towners\\Tavown45.wav", NULL }, + { 1, "Sfx\\Towners\\Witch01.wav", NULL }, + { 1, "Sfx\\Towners\\Witch02.wav", NULL }, + { 1, "Sfx\\Towners\\Witch03.wav", NULL }, + { 1, "Sfx\\Towners\\Witch04.wav", NULL }, + { 1, "Sfx\\Towners\\Witch05.wav", NULL }, + { 1, "Sfx\\Towners\\Witch06.wav", NULL }, + { 1, "Sfx\\Towners\\Witch07.wav", NULL }, + { 1, "Sfx\\Towners\\Witch08.wav", NULL }, + { 1, "Sfx\\Towners\\Witch09.wav", NULL }, + { 1, "Sfx\\Towners\\Witch10.wav", NULL }, + { 1, "Sfx\\Towners\\Witch11.wav", NULL }, + { 1, "Sfx\\Towners\\Witch12.wav", NULL }, + { 1, "Sfx\\Towners\\Witch13.wav", NULL }, + { 1, "Sfx\\Towners\\Witch14.wav", NULL }, + { 1, "Sfx\\Towners\\Witch15.wav", NULL }, + { 1, "Sfx\\Towners\\Witch16.wav", NULL }, + { 1, "Sfx\\Towners\\Witch17.wav", NULL }, + { 1, "Sfx\\Towners\\Witch18.wav", NULL }, + { 1, "Sfx\\Towners\\Witch19.wav", NULL }, + { 1, "Sfx\\Towners\\Witch20.wav", NULL }, + { 1, "Sfx\\Towners\\Witch21.wav", NULL }, + { 1, "Sfx\\Towners\\Witch22.wav", NULL }, + { 1, "Sfx\\Towners\\Witch23.wav", NULL }, + { 1, "Sfx\\Towners\\Witch24.wav", NULL }, + { 1, "Sfx\\Towners\\Witch25.wav", NULL }, + { 1, "Sfx\\Towners\\Witch26.wav", NULL }, + { 1, "Sfx\\Towners\\Witch27.wav", NULL }, + { 1, "Sfx\\Towners\\Witch28.wav", NULL }, + { 1, "Sfx\\Towners\\Witch29.wav", NULL }, + { 1, "Sfx\\Towners\\Witch30.wav", NULL }, + { 1, "Sfx\\Towners\\Witch31.wav", NULL }, + { 1, "Sfx\\Towners\\Witch32.wav", NULL }, + { 1, "Sfx\\Towners\\Witch33.wav", NULL }, + { 1, "Sfx\\Towners\\Witch34.wav", NULL }, + { 1, "Sfx\\Towners\\Witch35.wav", NULL }, + { 1, "Sfx\\Towners\\Witch36.wav", NULL }, + { 1, "Sfx\\Towners\\Witch37.wav", NULL }, + { 1, "Sfx\\Towners\\Witch38.wav", NULL }, + { 1, "Sfx\\Towners\\Witch39.wav", NULL }, + { 1, "Sfx\\Towners\\Witch40.wav", NULL }, + { 1, "Sfx\\Towners\\Witch41.wav", NULL }, + { 1, "Sfx\\Towners\\Witch42.wav", NULL }, + { 1, "Sfx\\Towners\\Witch43.wav", NULL }, + { 1, "Sfx\\Towners\\Witch44.wav", NULL }, + { 1, "Sfx\\Towners\\Witch45.wav", NULL }, + { 1, "Sfx\\Towners\\Witch46.wav", NULL }, + { 1, "Sfx\\Towners\\Witch47.wav", NULL }, + { 1, "Sfx\\Towners\\Witch48.wav", NULL }, + { 1, "Sfx\\Towners\\Witch49.wav", NULL }, + { 1, "Sfx\\Towners\\Witch50.wav", NULL }, + { 1, "Sfx\\Towners\\Wound01.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage01.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage02.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage03.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage04.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage05.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage06.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage07.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage08.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage09.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage10.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage11.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage12.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage13.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage14.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage15.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage16.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage17.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage18.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage19.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage20.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage21.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage22.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage23.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage24.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage25.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage26.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage27.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage28.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage29.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage30.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage31.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage32.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage33.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage34.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage35.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage36.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage37.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage38.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage39.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage40.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage41.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage42.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage43.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage44.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage45.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage46.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage47.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage48.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage49.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage50.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage51.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage52.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage53.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage54.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage55.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage56.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage57.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage58.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage59.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage60.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage61.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage62.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage63.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage64.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage65.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage66.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage67.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage68.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage69.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage69b.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage70.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage71.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage72.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage73.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage74.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage75.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage76.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage77.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage78.wav", NULL }, + { 64, "Sfx\\Sorceror\\Mage79.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage80.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage81.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage82.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage83.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage84.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage85.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage86.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage87.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage88.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage89.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage90.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage91.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage92.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage93.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage94.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage95.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage96.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage97.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage98.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage99.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage100.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage101.wav", NULL }, + { 65, "Sfx\\Sorceror\\Mage102.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue01.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue02.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue03.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue04.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue05.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue06.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue07.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue08.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue09.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue10.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue11.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue12.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue13.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue14.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue15.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue16.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue17.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue18.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue19.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue20.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue21.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue22.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue23.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue24.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue25.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue26.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue27.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue28.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue29.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue30.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue31.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue32.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue33.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue34.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue35.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue36.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue37.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue38.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue39.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue40.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue41.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue42.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue43.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue44.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue45.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue46.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue47.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue48.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue49.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue50.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue51.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue52.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue53.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue54.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue55.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue56.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue57.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue58.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue59.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue60.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue61.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue62.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue63.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue64.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue65.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue66.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue67.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue68.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue69.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue69b.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue70.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue71.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue72.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue73.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue74.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue75.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue76.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue77.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue78.wav", NULL }, + { 16, "Sfx\\Rogue\\Rogue79.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue80.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue81.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue82.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue83.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue84.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue85.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue86.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue87.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue88.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue89.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue90.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue91.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue92.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue93.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue94.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue95.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue96.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue97.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue98.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue99.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue100.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue101.wav", NULL }, + { 17, "Sfx\\Rogue\\Rogue102.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior01.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior02.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior03.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior04.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior05.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior06.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior07.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior08.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior09.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior10.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior11.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior12.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior13.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior14.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario14b.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario14c.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior15.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario15b.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario15c.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior16.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario16b.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario16c.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior17.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior18.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior19.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior20.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior21.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior22.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior23.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior24.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior25.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior26.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior27.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior28.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior29.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior30.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior31.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior32.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior33.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior34.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior35.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior36.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior37.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior38.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior39.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior40.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior41.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior42.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior43.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior44.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior45.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior46.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior47.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior48.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior49.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior50.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior51.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior52.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior53.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior54.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior55.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior56.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior57.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior58.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior59.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior60.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior61.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior62.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior63.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior64.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior65.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior66.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior67.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior68.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior69.wav", NULL }, + { 32, "Sfx\\Warrior\\Wario69b.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior70.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior71.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior72.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior73.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior74.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior75.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior76.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior77.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior78.wav", NULL }, + { 32, "Sfx\\Warrior\\Warior79.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior80.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior81.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior82.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior83.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior84.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior85.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior86.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior87.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior88.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior89.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior90.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior91.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior92.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior93.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior94.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior95.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario95b.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario95c.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario95d.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario95e.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario95f.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario96b.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario97.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario98.wav", NULL }, + { 33, "Sfx\\Warrior\\Warior99.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario100.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario101.wav", NULL }, + { 33, "Sfx\\Warrior\\Wario102.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar01.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar02.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar03.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar04.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar05.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar06.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar07.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar08.wav", NULL }, + { 1, "Sfx\\Narrator\\Nar09.wav", NULL }, + { 1, "Sfx\\Misc\\Lvl16int.wav", NULL }, + { 1, "Sfx\\Monsters\\Butcher.wav", NULL }, + { 1, "Sfx\\Monsters\\Garbud01.wav", NULL }, + { 1, "Sfx\\Monsters\\Garbud02.wav", NULL }, + { 1, "Sfx\\Monsters\\Garbud03.wav", NULL }, + { 1, "Sfx\\Monsters\\Garbud04.wav", NULL }, + { 1, "Sfx\\Monsters\\Izual01.wav", NULL }, + { 1, "Sfx\\Monsters\\Lach01.wav", NULL }, + { 1, "Sfx\\Monsters\\Lach02.wav", NULL }, + { 1, "Sfx\\Monsters\\Lach03.wav", NULL }, + { 1, "Sfx\\Monsters\\Laz01.wav", NULL }, + { 1, "Sfx\\Monsters\\Laz02.wav", NULL }, + { 1, "Sfx\\Monsters\\Sking01.wav", NULL }, + { 1, "Sfx\\Monsters\\Snot01.wav", NULL }, + { 1, "Sfx\\Monsters\\Snot02.wav", NULL }, + { 1, "Sfx\\Monsters\\Snot03.wav", NULL }, + { 1, "Sfx\\Monsters\\Warlrd01.wav", NULL }, + { 1, "Sfx\\Monsters\\Wlock01.wav", NULL }, + { 1, "Sfx\\Monsters\\Zhar01.wav", NULL }, + { 1, "Sfx\\Monsters\\Zhar02.wav", NULL }, + { 1, "Sfx\\Monsters\\DiabloD.wav", NULL } + // clang-format on }; -struct effects_cpp_init -{ - effects_cpp_init() - { - effects_cpp_init_value = effects_inf; - } -} _effects_cpp_init; -// 47A468: using guessed type int effects_inf; -// 52A550: using guessed type int effects_cpp_init_value; - BOOL __fastcall effect_is_playing(int nSFX) { - TSFX *v1; // eax - TSnd *v2; // ecx - - v1 = &sgSFX[nSFX]; - v2 = v1->pSnd; - if ( v2 ) - return snd_playing(v2); - if ( v1->bFlags & SFX_STREAM ) - return v1 == sfx_data_cur; + TSFX *sfx = &sgSFX[nSFX]; + if (sfx->pSnd) + return snd_playing(sfx->pSnd); + + if (sfx->bFlags & SFX_STREAM) + return sfx == sfx_data_cur; + return FALSE; } void __cdecl sfx_stop() { - if ( sfx_stream ) { + if (sfx_stream) { SFileDdaEnd(sfx_stream); SFileCloseFile(sfx_stream); sfx_stream = NULL; @@ -917,21 +902,22 @@ void __fastcall InitMonsterSND(int monst) TSnd *pSnd; char name[MAX_PATH]; char *path; + int mtype, i, j; - if ( !gbSndInited ) { + if (!gbSndInited) { return; } - int mtype = Monsters[monst].mtype; - for ( int i = 0; i < 4; i++ ) { - if ( monster_action_sounds[i] != 's' || monsterdata[mtype].snd_special ) { - for ( int j = 0; j < 2; j++ ) { + mtype = Monsters[monst].mtype; + for (i = 0; i < 4; i++) { + if (monster_action_sounds[i] != 's' || monsterdata[mtype].snd_special) { + for (j = 0; j < 2; j++) { sprintf(name, monsterdata[mtype].sndfile, monster_action_sounds[i], j + 1); path = (char *)DiabloAllocPtr(strlen(name) + 1); strcpy(path, name); pSnd = sound_file_load(path); Monsters[monst].Snds[i][j] = pSnd; - if ( !pSnd ) + if (!pSnd) mem_free_dbg(path); } } @@ -940,14 +926,18 @@ void __fastcall InitMonsterSND(int monst) void __cdecl FreeEffects() { - for ( int i = 0; i < nummtypes; i++ ) { - int mtype = Monsters[i].mtype; - for ( int j = 0; j < 4; ++j ) { - for ( int k = 0; k < 2; ++k ) { - TSnd *pSnd = Monsters[i].Snds[j][k]; - if ( pSnd ) { + int mtype, i, j, k; + char *file; + TSnd *pSnd; + + for (i = 0; i < nummtypes; i++) { + mtype = Monsters[i].mtype; + for (j = 0; j < 4; ++j) { + for (k = 0; k < 2; ++k) { + pSnd = Monsters[i].Snds[j][k]; + if (pSnd) { Monsters[i].Snds[j][k] = NULL; - char *file = pSnd->sound_path; + file = pSnd->sound_path; pSnd->sound_path = NULL; sound_file_cleanup(pSnd); mem_free_dbg(file); @@ -959,46 +949,49 @@ void __cdecl FreeEffects() void __fastcall PlayEffect(int i, int mode) { - if ( plr[myplr].pLvlLoad ) { + int sndIdx, mi, lVolume, lPan; + TSnd *snd; + + if (plr[myplr].pLvlLoad) { return; } - int sndIdx = random(164, 2); - if ( !gbSndInited || !gbSoundOn || gbBufferMsgs ) { + sndIdx = random(164, 2); + if (!gbSndInited || !gbSoundOn || gbBufferMsgs) { return; } - int mi = monster[i]._mMTidx; - TSnd *snd = Monsters[mi].Snds[mode][sndIdx]; - if ( !snd || snd_playing(snd) ) { + mi = monster[i]._mMTidx; + snd = Monsters[mi].Snds[mode][sndIdx]; + if (!snd || snd_playing(snd)) { return; } - int lVolume, lPan; - if ( !calc_snd_position(monster[i]._mx, monster[i]._my, &lVolume, &lPan) ) + if (!calc_snd_position(monster[i]._mx, monster[i]._my, &lVolume, &lPan)) return; snd_play_snd(snd, lVolume, lPan); } -// 4A22D5: using guessed type char gbSoundOn; // 676194: using guessed type char gbBufferMsgs; BOOL __fastcall calc_snd_position(int x, int y, int *plVolume, int *plPan) { + int pan, volume; + x -= plr[myplr].WorldX; y -= plr[myplr].WorldY; - int pan = (x - y) << 8; + pan = (x - y) << 8; *plPan = pan; - if ( abs(pan) > 6400 ) + if (abs(pan) > 6400) return FALSE; - int volume = abs(x) > abs(y) ? abs(x) : abs(y); + volume = abs(x) > abs(y) ? abs(x) : abs(y); volume <<= 6; *plVolume = volume; - if ( volume >= 6400 ) + if (volume >= 6400) return FALSE; *plVolume = -volume; @@ -1008,57 +1001,67 @@ BOOL __fastcall calc_snd_position(int x, int y, int *plVolume, int *plPan) void __fastcall PlaySFX(int psfx) { - int v1; // eax - - v1 = RndSFX(psfx); - PlaySFX_priv(&sgSFX[v1], 0, 0, 0); + psfx = RndSFX(psfx); + PlaySFX_priv(&sgSFX[psfx], 0, 0, 0); } void __fastcall PlaySFX_priv(TSFX *pSFX, BOOL loc, int x, int y) { - if ( plr[myplr].pLvlLoad && gbMaxPlayers != 1 ) { + int lPan, lVolume; + + if (plr[myplr].pLvlLoad && gbMaxPlayers != 1) { return; } - if ( !gbSndInited || !gbSoundOn || gbBufferMsgs ) { + if (!gbSndInited || !gbSoundOn || gbBufferMsgs) { return; } - if ( !(pSFX->bFlags & (SFX_STREAM | SFX_MISC)) && pSFX->pSnd != 0 && snd_playing(pSFX->pSnd) ) { + if (!(pSFX->bFlags & (SFX_STREAM | SFX_MISC)) && pSFX->pSnd != 0 && snd_playing(pSFX->pSnd)) { return; } - int lPan = 0; - int lVolume = 0; - if ( loc && !calc_snd_position(x, y, &lVolume, &lPan) ) { + lPan = 0; + lVolume = 0; + if (loc && !calc_snd_position(x, y, &lVolume, &lPan)) { return; } - if ( pSFX->bFlags & SFX_STREAM ) { + if (pSFX->bFlags & SFX_STREAM) { stream_play(pSFX, lVolume, lPan); return; } - if ( !pSFX->pSnd ) + if (!pSFX->pSnd) pSFX->pSnd = sound_file_load(pSFX->pszName); - if ( pSFX->pSnd ) + if (pSFX->pSnd) snd_play_snd(pSFX->pSnd, lVolume, lPan); } -// 4A22D5: using guessed type char gbSoundOn; // 676194: using guessed type char gbBufferMsgs; // 679660: using guessed type char gbMaxPlayers; void __fastcall stream_play(TSFX *pSFX, int lVolume, int lPan) { + BOOL success; + + /// ASSERT: assert(pSFX); + /// ASSERT: assert(pSFX->bFlags & sfx_STREAM); sfx_stop(); lVolume += sound_get_or_set_sound_volume(1); - if ( lVolume >= VOLUME_MIN ) { - if ( lVolume > VOLUME_MAX ) + if (lVolume >= VOLUME_MIN) { + if (lVolume > VOLUME_MAX) lVolume = VOLUME_MAX; - if ( !SFileOpenFile(pSFX->pszName, &sfx_stream) ) { +#ifdef _DEBUG + //SFileEnableDirectAccess(FALSE); +#endif + success = SFileOpenFile(pSFX->pszName, &sfx_stream); +#ifdef _DEBUG + //SFileEnableDirectAccess(TRUE); +#endif + if (!success) { sfx_stream = 0; } else { - if ( !SFileDdaBeginEx(sfx_stream, 0x40000, 0, 0, lVolume, lPan, 0) ) + if (!SFileDdaBeginEx(sfx_stream, 0x40000, 0, 0, lVolume, lPan, 0)) sfx_stop(); else sfx_data_cur = pSFX; @@ -1072,62 +1075,60 @@ int __fastcall RndSFX(int psfx) int v3; // [esp-4h] [ebp-8h] v1 = psfx; - switch ( psfx ) - { - case PS_WARR69: - goto LABEL_12; - case PS_WARR14: - case PS_WARR15: - case PS_WARR16: - goto LABEL_19; - case PS_MAGE69: - case PS_ROGUE69: - case PS_SWING: - case LS_ACID: - case IS_FMAG: - case IS_MAGIC: - case IS_BHIT: -LABEL_12: - v3 = 2; -LABEL_15: - return v1 + random(165, v3); - case PS_WARR2: -LABEL_19: - v3 = 3; - goto LABEL_15; + switch (psfx) { + case PS_WARR69: + goto LABEL_12; + case PS_WARR14: + case PS_WARR15: + case PS_WARR16: + goto LABEL_19; + case PS_MAGE69: + case PS_ROGUE69: + case PS_SWING: + case LS_ACID: + case IS_FMAG: + case IS_MAGIC: + case IS_BHIT: + LABEL_12: + v3 = 2; + LABEL_15: + return v1 + random(165, v3); + case PS_WARR2: + LABEL_19: + v3 = 3; + goto LABEL_15; } return psfx; } void __fastcall PlaySfxLoc(int psfx, int x, int y) { - int v3; // esi - int v4; // eax - TSnd *v5; // ecx - - v3 = x; - v4 = RndSFX(psfx); - if ( v4 >= 0 && v4 <= 3 ) - { - v5 = sgSFX[v4].pSnd; - if ( v5 ) - v5->start_tc = 0; + TSnd *pSnd; + + psfx = RndSFX(psfx); + + if (psfx >= 0 && psfx <= 3) { + pSnd = sgSFX[psfx].pSnd; + if (pSnd) + pSnd->start_tc = 0; } - PlaySFX_priv(&sgSFX[v4], 1, v3, y); + + PlaySFX_priv(&sgSFX[psfx], 1, x, y); } void __cdecl FreeMonsterSnd() { + int i, j, k; + snd_update(TRUE); sfx_stop(); sound_stop(); - for ( int i = 0; i < nummtypes; i++ ) { - for ( int j = 0; j < 4; j++ ) { - for ( int k = 0; k < 2; k++ ) { + for (i = 0; i < nummtypes; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 2; k++) { snd_stop_snd(Monsters[i].Snds[j][k]); } - } } } @@ -1136,9 +1137,8 @@ void __cdecl sound_stop() { int i; // edi - for(i = 0; i < NUM_SFX; i++) - { - if ( sgSFX[i].pSnd ) + for (i = 0; i < NUM_SFX; i++) { + if (sgSFX[i].pSnd) snd_stop_snd(sgSFX[i].pSnd); } } @@ -1147,23 +1147,20 @@ void __cdecl sound_update() { //int v0; // ebp //unsigned int v1; // ecx -// int v2; // eax + // int v2; // eax unsigned int v3; // [esp-Ch] [ebp-Ch] unsigned int v4; // [esp-8h] [ebp-8h] //int v5; // [esp-4h] [ebp-4h] - if ( gbSndInited ) - { + if (gbSndInited) { snd_update(0); //v5 = v0; //v4 = v1; //v3 = v1; - if ( sfx_stream ) - { + if (sfx_stream) { //_LOBYTE(v2) = SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3); - if ( SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3) ) - { - if ( v4 >= v3 ) + if (SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3)) { + if (v4 >= v3) sfx_stop(); } } @@ -1173,124 +1170,90 @@ void __cdecl sound_update() void __cdecl effects_cleanup_sfx() { - unsigned int v0; // edi - TSnd *v1; // ecx + DWORD i; FreeMonsterSnd(); - v0 = 0; - do - { - v1 = sgSFX[v0].pSnd; - if ( v1 ) - { - sound_file_cleanup(v1); - sgSFX[v0].pSnd = 0; + + for (i = 0; i < NUM_SFX; i++) { + if (sgSFX[i].pSnd) { + sound_file_cleanup(sgSFX[i].pSnd); + sgSFX[i].pSnd = NULL; } - ++v0; } - while ( v0 < NUM_SFX ); } void __cdecl stream_update() { - char v0; // bl - char v1; // al - - v0 = 0; - if ( (unsigned char)gbMaxPlayers <= 1u ) - { - v1 = plr[myplr]._pClass; - if ( v1 ) - { - if ( v1 == 1 ) - { - v0 = 16; - } - else if ( v1 == 2 ) - { - v0 = 64; - } - else - { - TermMsg("effects:1"); - } - } - else - { - v0 = 32; - } + UCHAR mask = 0; + if (gbMaxPlayers > 1) { + mask = SFX_WARRIOR | SFX_ROGUE | SFX_SORCEROR; + } else if (plr[myplr]._pClass == PC_WARRIOR) { + mask = SFX_WARRIOR; + } else if (plr[myplr]._pClass == PC_ROGUE) { + mask = SFX_ROGUE; + } else if (plr[myplr]._pClass == PC_SORCERER) { + mask = SFX_SORCEROR; + } else { + TermMsg("effects:1"); } - else - { - v0 = 112; - } - priv_sound_init(v0); + + priv_sound_init(mask); } // 679660: using guessed type char gbMaxPlayers; -void __fastcall priv_sound_init(int bLoadMask) +void __fastcall priv_sound_init(UCHAR bLoadMask) { - unsigned char v1; // bl - unsigned char v2; // cl - unsigned int v3; // esi - unsigned char v4; // al - TSnd *v5; // eax - unsigned char v6; // [esp+0h] [ebp-4h] - - - - - if ( gbSndInited ) - { - v1 = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR); - v2 = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) ^ bLoadMask; - v3 = 0; - v6 = v2; - do - { - if ( !sgSFX[v3].pSnd ) - { - v4 = sgSFX[v3].bFlags; - if ( !(v4 & SFX_STREAM) && (!v2 || v4 & v2) && (!(v4 & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR)) || v4 & v1) ) - { - v5 = sound_file_load(sgSFX[v3].pszName); - v2 = v6; - sgSFX[v3].pSnd = v5; - } - } - ++v3; + UCHAR pc, bFlags; + DWORD i; + + if (!gbSndInited) { + return; + } + + pc = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR); + bLoadMask ^= pc; + + for (i = 0; i < NUM_SFX; i++) { + if (sgSFX[i].pSnd) { + continue; } - while ( v3 < NUM_SFX ); + + bFlags = sgSFX[i].bFlags; + if (bFlags & SFX_STREAM) { + continue; + } + + if (bLoadMask && !(bFlags & bLoadMask)) { + continue; + } + + if (bFlags & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) && !(bFlags & pc)) { + continue; + } + + sgSFX[i].pSnd = sound_file_load(sgSFX[i].pszName); } } void __cdecl sound_init() { - priv_sound_init(4); + priv_sound_init(SFX_UI); } void __stdcall effects_play_sound(char *snd_file) { - int v1; // edi - unsigned int v2; // esi - TSnd **v3; // esi - //int v4; // eax - - if ( gbSndInited && gbSoundOn ) - { - v1 = 0; - v2 = 0; - while ( _strcmpi(sgSFX[v2].pszName, snd_file) || !sgSFX[v2].pSnd ) - { - ++v2; - ++v1; - if ( v2 >= NUM_SFX ) - return; + DWORD i; + + if (!gbSndInited || !gbSoundOn) { + return; + } + + for (i = 0; i < NUM_SFX; i++) { + if (!_strcmpi(sgSFX[i].pszName, snd_file) && sgSFX[i].pSnd) { + if (!snd_playing(sgSFX[i].pSnd)) + snd_play_snd(sgSFX[i].pSnd, 0, 0); + + return; } - v3 = &sgSFX[v1].pSnd; - //_LOBYTE(v4) = snd_playing(*v3); - if ( !snd_playing(*v3) ) - snd_play_snd(*v3, 0, 0); } } -// 4A22D5: using guessed type char gbSoundOn; diff --git a/Source/effects.h b/Source/effects.h index ce2cff4ac..2bb158d46 100644 --- a/Source/effects.h +++ b/Source/effects.h @@ -2,13 +2,11 @@ #ifndef __EFFECTS_H__ #define __EFFECTS_H__ -extern int effects_cpp_init_value; // weak extern int sfxdelay; // weak extern int sfxdnum; extern void *sfx_stream; extern TSFX *sfx_data_cur; -void __cdecl effects_cpp_init(); BOOL __fastcall effect_is_playing(int nSFX); void __cdecl sfx_stop(); void __fastcall InitMonsterSND(int monst); @@ -25,17 +23,15 @@ void __cdecl sound_stop(); void __cdecl sound_update(); void __cdecl effects_cleanup_sfx(); void __cdecl stream_update(); -void __fastcall priv_sound_init(int bLoadMask); +void __fastcall priv_sound_init(UCHAR bLoadMask); void __cdecl sound_init(); void __stdcall effects_play_sound(char *snd_file); /* rdata */ -extern const int effects_inf; // weak +extern const int effects_inf; // weak extern const char monster_action_sounds[]; // idb /* data */ -extern TSFX sgSFX[NUM_SFX]; - #endif /* __EFFECTS_H__ */ diff --git a/Source/init.h b/Source/init.h index 6378829b6..8964ce149 100644 --- a/Source/init.h +++ b/Source/init.h @@ -41,5 +41,6 @@ extern const int init_inf; // weak extern char gszVersionNumber[260]; extern char gszProductName[260]; +extern int SelectedItem; #endif /* __INIT_H__ */ diff --git a/Stub/diablo.cpp b/Stub/diablo.cpp index cd88cf00f..6a63c85b5 100644 --- a/Stub/diablo.cpp +++ b/Stub/diablo.cpp @@ -295,70 +295,76 @@ bool __cdecl diablo_get_not_running() } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -{ - DUMMY(); - HINSTANCE v4; // esi - char Filename[260]; // [esp+8h] [ebp-10Ch] - char value_name[8]; // [esp+10Ch] [ebp-8h] +{ + HINSTANCE hInst; + int nData; + char szFileName[MAX_PATH]; + BOOL bNoEvent; - v4 = hInstance; + hInst = hInstance; #ifndef DEBUGGER diablo_reload_process(hInstance); #endif - ghInst = v4; - if ( RestrictedTest() ) + ghInst = hInst; + + if (RestrictedTest()) ErrOkDlg(IDD_DIALOG10, 0, "C:\\Src\\Diablo\\Source\\DIABLO.CPP", 877); - if ( ReadOnlyTest() ) - { - if ( !GetModuleFileName(ghInst, Filename, 0x104u) ) - *Filename = '\0'; - DirErrorDlg(Filename); + if (ReadOnlyTest()) { + if (!GetModuleFileName(ghInst, szFileName, sizeof(szFileName))) + szFileName[0] = '\0'; + DirErrorDlg(szFileName); } + ShowCursor(FALSE); srand(GetTickCount()); InitHash(); exception_get_filter(); - if ( !diablo_find_window("DIABLO") && diablo_get_not_running() ) - { + + bNoEvent = diablo_get_not_running(); + if (!diablo_find_window("DIABLO") && bNoEvent) { +#ifdef _DEBUG + //SFileEnableDirectAccess(TRUE); +#endif diablo_init_screen(); diablo_parse_flags(lpCmdLine); - init_create_window(nCmdShow);// My code calls a function inside here... + init_create_window(nCmdShow); sound_init(); UiInitialize(); + #ifdef _DEBUG - if ( showintrodebug ) - play_movie("gendata\\logo.smk", 1); -#else - play_movie("gendata\\logo.smk", 1); + if (showintrodebug) #endif - strcpy(value_name, "Intro"); - if ( !SRegLoadValue("Diablo", value_name, 0, (int *)&hInstance) ) - hInstance = (HINSTANCE)1; - if ( hInstance ) - play_movie("gendata\\diablo1.smk", 1); - SRegSaveValue("Diablo", value_name, 0, 0); -#ifdef _DEBUG - if ( showintrodebug ) + play_movie("gendata\\logo.smk", TRUE); + { + char szValueName[] = "Intro"; + if (!SRegLoadValue("Diablo", szValueName, 0, &nData)) + nData = 1; + if (nData) + play_movie("gendata\\diablo1.smk", TRUE); + SRegSaveValue("Diablo", szValueName, 0, 0); + } + +#ifdef _DEBUG + if (showintrodebug) { +#endif UiTitleDialog(7); - BlackPalette();//Here is the start? + BlackPalette(); +#ifdef _DEBUG } -#else - UiTitleDialog(7); - BlackPalette(); #endif + mainmenu_loop(); UiDestroy(); SaveGamma(); - if ( ghMainWnd ) - { -#ifndef FASTER + + if (ghMainWnd) { Sleep(300); -#endif DestroyWindow(ghMainWnd); } } - return 0; + + return FALSE; } void __fastcall diablo_parse_flags(char *args) diff --git a/Stub/diabloui.cpp b/Stub/diabloui.cpp index 9ef799005..b6d1a0981 100644 --- a/Stub/diabloui.cpp +++ b/Stub/diabloui.cpp @@ -2,6 +2,10 @@ #include "../types.h" #include "stubs.h" +int menu = 0; +int SelectedItem = 0; +int SelectedItemMax = 0; +int MenuItem[10] = { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; void __cdecl UiDestroy() { @@ -14,9 +18,575 @@ BOOL __stdcall UiTitleDialog(int a1) return TRUE; } -void __cdecl UiInitialize() +void LoadCharNamesintoMemory(int start, int end) { - DUMMY(); + PkPlayerStruct pkplr; + int unused; + void *CharFile; + char *p_hero_names = *hero_names; // Not sure if this is correct + + memset(hero_names, 0, 0x140u); + + while (start != end) { + CharFile = pfile_open_save_archive(&unused, start); + if (CharFile) { + if (pfile_read_hero(CharFile, &pkplr)) { + strcpy(p_hero_names, pkplr.pName); + printf("Player Strength %d\n", (int)pkplr.pBaseStr); + UnPackPlayer(&pkplr, 0, 0); + pfile_archive_contains_game(CharFile); + } + pfile_SFileCloseArchive(CharFile); + } + + p_hero_names += 32; + start++; + } + + // memcpy(shero_names, hero_names, sizeof(hero_names)); +} + +void SetMenu(int MenuId) +{ + effects_play_sound("sfx\\items\\titlslct.wav"); + + void *tmp = pPcxTitleImage; + pPcxTitleImage = NULL; + mem_free_dbg(tmp); + TitleImageLoaded = false; + + menu = MenuId; + SelectedItem = 0; + SelectedItemMax = MenuItem[MenuId] - 1; +} + +void ExitDiablo() +{ + printf("Exiting Diablo\n"); + SDL_Quit(); + exit(0); +} + +void UiInitialize() // I anticipate to move this later. +{ + SDL_SetRelativeMouseMode(SDL_TRUE); + // WNDPROC saveProc; + + snd_init(0); + music_start(5); + + int timestart = 0; + + signed int NewHeroNameIndex = 0; + + SetMenu(0); + SDL_Event event; + int x, y; + bool quit = false; + int CharsLoaded = 0; + int HeroPortrait = 3; + + printf("Main Menu Init\n"); + if (!window) { + SdlDiabloMainWindow(); + } + + ClearScreenBuffer(); + + const Uint8 *state = SDL_GetKeyboardState(NULL); + + // static std::deque message_queue; + + while (!quit) { + DrawMouse(); + PaletteFadeIn(32); + + if (menu == 0) { + SDL_RenderDiabloMainPage(); + } + + if (menu == 2) { + if (CharsLoaded == 0) { + LoadCharNamesintoMemory(0, 7); + // LoadHeroStats(); + CharsLoaded = 1; + } + SDL_RenderDiabloSinglePlayerPage(); + gbMaxPlayers = 1; + DrawMouse(); + ConstantButtons(); + } + + if (menu == 3) { + CreateHeroMenu(); + DrawNewHeroKartinka(HeroPortrait, 1); + ConstantButtons(); + DrawMouse(); + } + + int m4Loaded = 0; + if (menu == 4) { + DrawNewHeroKartinka(HeroPortrait, 0); + RenderDefaultStats(HeroPortrait); + RenderUndecidedHeroName(); + ConstantButtons(); + DrawMouse(); + } + if (menu == 5) { + DrawPreGameOptions(HeroPortrait, 1); + RenderDefaultStats(HeroPortrait); + ConstantButtons(); + DrawMouse(); + } + if (menu == 6) { + DrawPreGameDifficultySelection(HeroPortrait, 1); + RenderDefaultStats(HeroPortrait); + ConstantButtons(); + DrawMouse(); + } + + if (menu == 10) { + ShowCredts(); + } + + if (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_KEYDOWN: + switch (event.key.keysym.sym) { + case SDLK_ESCAPE: + if (menu != 0) { + SetMenu(0); + break; + } + quit = true; + ExitDiablo(); + break; + + case SDLK_BACKSPACE: + if (NewHeroNameIndex > 0) { + HeroUndecidedName[NewHeroNameIndex - 1] = 0; + --NewHeroNameIndex; + } + break; + + case SDLK_UP: + SelectedItem--; + if (SelectedItem < 0) { + SelectedItem = 0; + } + effects_play_sound("sfx\\items\\titlemov.wav"); + break; + + case SDLK_DOWN: + SelectedItem++; + if (SelectedItem > SelectedItemMax) { + SelectedItem = SelectedItemMax; + } + effects_play_sound("sfx\\items\\titlemov.wav"); + break; + + case SDLK_RETURN: + + default: + char letter = event.key.keysym.sym; + if (int(letter) > 96 && int(letter) < 123 || int(letter) == 32) + + if (NewHeroNameIndex < 17) { + HeroUndecidedName[NewHeroNameIndex] = letter; + NewHeroNameIndex++; + } + + break; + } + + case SDL_KEYUP: + break; + + default: + break; + } + + if (event.type == SDL_QUIT) { + quit = true; + ExitDiablo(); + } + + if (event.type == SDL_MOUSEMOTION) { + // Get the mouse offsets + MouseX = event.motion.x; + MouseY = event.motion.y; + } + + // If a key was pressed + if (event.type == SDL_MOUSEBUTTONDOWN /*&& event.button.clicks == 2*/) { + + if (event.button.button == SDL_BUTTON_LEFT) { + x = event.button.x; + y = event.button.y; + printf("X %d , Y %d\n", x, y); + + if (menu == 0) { + + int ClickListStart = 230; + int sizeOfBox = 72; + int WidthOfBox = 430; + int ClickListEnd = 343; + + if ((x > ClickListStart) && (y > ClickListStart) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + sizeOfBox)) { // Single clicked + printf("SinglePlayer Diablo\n"); + SetMenu(2); + } + + if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox) + sizeOfBox)) { // MultiBox clicked + printf("MultiPlayer Diablo\n"); + } + if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 2)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 2) + sizeOfBox)) { // Reply Intro clicked + printf("Credits\n"); + SetMenu(10); + } + if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 4)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 4) + sizeOfBox)) { // ShowCredits clicked + quit = true; + ExitDiablo(); + } + + } // End of this Menu0 + + if (menu == 2) { // Yes, I know. Skipped 1 and I going to hell for it. + // int x = 440; + // int y = 430; + int ClickListStart = 315; + int sizeOfBox = 30; + int WidthOfBox = 400; + int ClickListEnd = 343; + + int CreateHeroY = 555; + int CreateHeroX = 305; + + SDL_Rect CreateHeroCancelBox; + CreateHeroCancelBox.y = 550; + CreateHeroCancelBox.x = 675; + CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; + CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; + + // Render Clicks + if (TotalPlayers >= 1 && (x > ClickListStart) && (y > ClickListStart) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + sizeOfBox)) { // MultiBox clicked + strcpy(chr_name_str, hero_names[0]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if (TotalPlayers >= 2 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox) + sizeOfBox)) { // MultiBox clicked + printf("Player 2 Diablo\n"); + strcpy(chr_name_str, hero_names[1]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if (TotalPlayers >= 3 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 2)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 2) + sizeOfBox)) { // MultiBox clicked + printf("Player 3 Diablo\n"); + strcpy(chr_name_str, hero_names[2]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if (TotalPlayers >= 4 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 3)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 3) + sizeOfBox)) { // MultiBox clicked + printf("Player 4 Diablo\n"); + strcpy(chr_name_str, hero_names[3]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if (TotalPlayers >= 5 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 4)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 4) + sizeOfBox)) { // MultiBox clicked + printf("Player 5 Diablo\n"); + strcpy(chr_name_str, hero_names[4]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if (TotalPlayers >= 6 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 5)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 5) + sizeOfBox)) { // MultiBox clicked + printf("Player 6 Diablo\n"); + strcpy(chr_name_str, hero_names[5]); + printf("Player %s\n", chr_name_str); + SetMenu(5); + // break; + } + + if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { + HeroPortrait = 3; + + printf("Cancel\n\n\n"); + SetMenu(0); + } + if ((x > CreateHeroX) && (y > CreateHeroY) && (x < CreateHeroX + WidthOfBox) && (y < CreateHeroY + sizeOfBox)) { + printf("Clicked Create Hero Box\n"); + SetMenu(3); + } + } + if (menu == 3) { + // SinglePlayerMenuItemsLoaded = 0; + printf("\n\nmenu3 X%d Y%d \n ", x, y); + + int WarriorSelectBoxY = 430; + int WarriorSelectBoxW = 100; + int WarriorSelectBoxS = 100; + + int RogueSelectBoxX = 450; + int RogueSelectBoxY = 392; + int SorcerorSelectBoxX = 383; + int SorcerorSelectBoxY = 365; + int CreateHeroOkBoxX = 330; + int CreateHeroOkBoxY = 441; + int CreateHeroCanBBoxX = 445; + int CreateHeroCanBBoxY = 473; + + // int x = 280; + // int y = 430; + + SDL_Rect WarriorSelectBox; + WarriorSelectBox.y = 350; + WarriorSelectBox.x = 280; + WarriorSelectBox.w = WarriorSelectBox.x + 100; + WarriorSelectBox.h = WarriorSelectBox.y + 30; + + SDL_Rect RogueSelectBox; + RogueSelectBox.y = 392; + RogueSelectBox.x = 280; + RogueSelectBox.w = RogueSelectBox.x + 100; + RogueSelectBox.h = RogueSelectBox.y + 30; + // X450 Y 392 ; + + SDL_Rect SorcerorSelectBox; + SorcerorSelectBox.y = 428; + SorcerorSelectBox.x = 280; + SorcerorSelectBox.w = SorcerorSelectBox.x + 100; + SorcerorSelectBox.h = SorcerorSelectBox.y + 30; + // X 447 Y 428 + + SDL_Rect CreateHeroCancelBox; + CreateHeroCancelBox.y = 550; + CreateHeroCancelBox.x = 675; + CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; + CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; + + if ((x > WarriorSelectBox.x) && (y > WarriorSelectBox.y) && (x < WarriorSelectBox.w) && (y < WarriorSelectBox.h)) { + + printf(" warrior I was hit\n\n\n"); + HeroPortrait = 0; + HeroChosen = 0; + SetMenu(4); + } + if ((x > RogueSelectBox.x) && (y > RogueSelectBox.y) && (x < RogueSelectBox.w) && (y < RogueSelectBox.h)) { + + printf(" rogue I was hit\n\n\n"); + HeroPortrait = 1; + HeroChosen = 1; + SetMenu(4); + } + if ((x > SorcerorSelectBox.x) && (y > SorcerorSelectBox.y) && (x < SorcerorSelectBox.w) && (y < SorcerorSelectBox.h)) { + HeroPortrait = 2; + printf("sorceror I was hit\n\n\n"); + HeroChosen = 2; + SetMenu(4); + } + + if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { + HeroPortrait = 3; + + printf("Cancel\n\n\n"); + --menu; + } + } + if (menu == 4) { + printf("sozdat geroya"); + SDL_Rect CreateHeroCancelBox; + CreateHeroCancelBox.y = 550; + CreateHeroCancelBox.x = 675; + CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; + CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; + + // X 549 , Y 551 + SDL_Rect ClickOkBox; + ClickOkBox.y = 550; + ClickOkBox.x = 550; + ClickOkBox.w = ClickOkBox.x + 30; + ClickOkBox.h = ClickOkBox.y + 30; + + if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { + memset(HeroUndecidedName, 0, 17); + + NewHeroNameIndex = 0; + + printf("Cancel\n\n\n"); + HeroPortrait = 3; + SetMenu(3); + } + + if ((x > ClickOkBox.x) && (y > ClickOkBox.y) && (x < ClickOkBox.w) && (y < ClickOkBox.h)) { + + printf("Ok\n"); + CreateSinglePlayerChar = 1; + const char *test_name = HeroUndecidedName; + printf("%s\n", test_name); + break; + } + } + + clock_t start, end; + double cpu_time_used; + + if (menu == 5) { + if (timestart == 0) { + start = clock(); + timestart = 1; + } + + end = clock(); + + cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; + + printf("TIEM DELAY %f\n", cpu_time_used); + + int CreateHeroOkBoxX = 330; + int CreateHeroOkBoxY = 441; + int CreateHeroCanBBoxX = 445; + int CreateHeroCanBBoxY = 473; + + SDL_Rect NewGameBox; + NewGameBox.y = 350; + NewGameBox.x = 280; + NewGameBox.w = NewGameBox.x + 300; + NewGameBox.h = NewGameBox.y + 30; + + SDL_Rect LoadGameBox; + LoadGameBox.y = 392; + LoadGameBox.x = 280; + LoadGameBox.w = LoadGameBox.x + 300; + LoadGameBox.h = LoadGameBox.y + 30; + // X450 Y 392 ; + + SDL_Rect SorcerorSelectBox; + SorcerorSelectBox.y = 428; + SorcerorSelectBox.x = 280; + SorcerorSelectBox.w = SorcerorSelectBox.x + 100; + SorcerorSelectBox.h = SorcerorSelectBox.y + 30; + // X 447 Y 428 + + SDL_Rect CreateHeroCancelBox; + CreateHeroCancelBox.y = 550; + CreateHeroCancelBox.x = 675; + CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; + CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; + + if (cpu_time_used > 0.5 && (x > NewGameBox.x) && (y > NewGameBox.y) && (x < NewGameBox.w) && (y < NewGameBox.h)) { + + printf(" New Game I was hit\n\n\n"); + SetMenu(6); + cpu_time_used = 0; + timestart = 0; + start = 0; + } + if (cpu_time_used > 0.5 && (x > LoadGameBox.x) && (y > LoadGameBox.y) && (x < LoadGameBox.w) && (y < LoadGameBox.h)) { + + printf(" Load Game I was hit\n\n\n"); + break; + } + + if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { + HeroPortrait = 3; + timestart = 0; + cpu_time_used = 0; + start = 0; + end = 0; + cpu_time_used = 0; + + printf("Cancel\n\n\n"); + + SetMenu(2); // Return back to select hero menu. + } + } + + if (menu == 6) { + // Choose difficulty + + if (timestart == 0) { + start = clock(); + timestart = 1; + } + + end = clock(); + cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; + + int CreateHeroOkBoxX = 330; + int CreateHeroOkBoxY = 441; + int CreateHeroCanBBoxX = 445; + int CreateHeroCanBBoxY = 473; + + // int x = 280; + // int y = 430; + + SDL_Rect NormalSelectBox; + NormalSelectBox.y = 350; + NormalSelectBox.x = 280; + NormalSelectBox.w = NormalSelectBox.x + 300; + NormalSelectBox.h = NormalSelectBox.y + 30; + + SDL_Rect NightmareSelectBox; + NightmareSelectBox.y = 392; + NightmareSelectBox.x = 280; + NightmareSelectBox.w = NightmareSelectBox.x + 300; + NightmareSelectBox.h = NightmareSelectBox.y + 30; + // X450 Y 392 ; + + SDL_Rect HellSelectBox; + HellSelectBox.y = 428; + HellSelectBox.x = 280; + HellSelectBox.w = HellSelectBox.x + 300; + HellSelectBox.h = HellSelectBox.y + 30; + // X 447 Y 428 + + SDL_Rect CreateHeroCancelBox; + CreateHeroCancelBox.y = 550; + CreateHeroCancelBox.x = 675; + CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; + CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; + + if (cpu_time_used > 0.5 && (x > NormalSelectBox.x) && (y > NormalSelectBox.y) && (x < NormalSelectBox.w) && (y < NormalSelectBox.h)) { + StartNewGame = 1; + gnDifficulty = DIFF_NORMAL; + break; + } + if (cpu_time_used > 0.5 && (x > NightmareSelectBox.x) && (y > NightmareSelectBox.y) && (x < NightmareSelectBox.w) && (y < NightmareSelectBox.h)) { + StartNewGame = 1; + gnDifficulty = DIFF_NIGHTMARE; + break; + } + if (cpu_time_used > 1 && (x > HellSelectBox.x) && (y > HellSelectBox.y) && (x < HellSelectBox.w) && (y < HellSelectBox.h)) { + gnDifficulty = DIFF_HELL; + StartNewGame = 1; + break; + } + + if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { + HeroPortrait = 3; + timestart = 0; + cpu_time_used = 0; + start = 0; + end = 0; + cpu_time_used = 0; + + printf("Cancel\n\n\n"); + --menu; + } + } + } + } + } + } } static std::vector<_uiheroinfo> hero_infos; @@ -58,7 +628,7 @@ BOOL __stdcall UiSelHeroSingDialog(BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninf // I like this. *difficulty = gnDifficulty ; - + if (StartNewGame) { const char *hero_name = chr_name_str; @@ -74,7 +644,7 @@ BOOL __stdcall UiSelHeroSingDialog(BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninf *dlgresult = 2; // This means load game printf("Difficulty : %d \n",* difficulty); - + } } @@ -200,4 +770,4 @@ int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYE int __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc) { UNIMPLEMENTED(); -} \ No newline at end of file +} diff --git a/Stub/effects.cpp b/Stub/effects.cpp deleted file mode 100644 index 7a6346c50..000000000 --- a/Stub/effects.cpp +++ /dev/null @@ -1,1342 +0,0 @@ -//HEADER_GOES_HERE - -#include "../types.h" - -#include -#include -#include -#include -#include - -#ifndef NO_GLOBALS -int effects_cpp_init_value; // weak - -int sfxdelay; // weak -int sfxdnum; -void *sfx_stream; -TSFX *sfx_data_cur; -#endif - -const int effects_inf = 0x7F800000; // weak -const char monster_action_sounds[] = { 'a', 'h', 'd', 's' }; // idb - -/* data */ - -TSFX sgSFX[NUM_SFX] = -{ - { 2u, "Sfx\\Misc\\Walk1.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk2.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk3.wav", NULL }, - { 2u, "Sfx\\Misc\\Walk4.wav", NULL }, - { 2u, "Sfx\\Misc\\BFire.wav", NULL }, - { 2u, "Sfx\\Misc\\Fmag.wav", NULL }, - { 2u, "Sfx\\Misc\\Tmag.wav", NULL }, - { 2u, "Sfx\\Misc\\Lghit.wav", NULL }, - { 2u, "Sfx\\Misc\\Lghit1.wav", NULL }, - { 2u, "Sfx\\Misc\\Swing.wav", NULL }, - { 2u, "Sfx\\Misc\\Swing2.wav", NULL }, - { 2u, "Sfx\\Misc\\Dead.wav", NULL }, - { 1u, "Sfx\\Misc\\Questdon.wav", NULL }, - { 2u, "Sfx\\Items\\Armrfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Barlfire.wav", NULL }, - { 2u, "Sfx\\Items\\Barrel.wav", NULL }, - { 2u, "Sfx\\Items\\Bhit.wav", NULL }, - { 2u, "Sfx\\Items\\Bhit1.wav", NULL }, - { 2u, "Sfx\\Items\\Chest.wav", NULL }, - { 2u, "Sfx\\Items\\Doorclos.wav", NULL }, - { 2u, "Sfx\\Items\\Dooropen.wav", NULL }, - { 2u, "Sfx\\Items\\Flipanvl.wav", NULL }, - { 2u, "Sfx\\Items\\Flipaxe.wav", NULL }, - { 2u, "Sfx\\Items\\Flipblst.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbody.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbook.wav", NULL }, - { 2u, "Sfx\\Items\\Flipbow.wav", NULL }, - { 2u, "Sfx\\Items\\Flipcap.wav", NULL }, - { 2u, "Sfx\\Items\\Flipharm.wav", NULL }, - { 2u, "Sfx\\Items\\Fliplarm.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmag.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmag1.wav", NULL }, - { 2u, "Sfx\\Items\\Flipmush.wav", NULL }, - { 2u, "Sfx\\Items\\Flippot.wav", NULL }, - { 2u, "Sfx\\Items\\Flipring.wav", NULL }, - { 2u, "Sfx\\Items\\Fliprock.wav", NULL }, - { 2u, "Sfx\\Items\\Flipscrl.wav", NULL }, - { 2u, "Sfx\\Items\\Flipshld.wav", NULL }, - { 2u, "Sfx\\Items\\Flipsign.wav", NULL }, - { 2u, "Sfx\\Items\\Flipstaf.wav", NULL }, - { 2u, "Sfx\\Items\\Flipswor.wav", NULL }, - { 2u, "Sfx\\Items\\Gold.wav", NULL }, - { 2u, "Sfx\\Items\\Hlmtfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Invanvl.wav", NULL }, - { 2u, "Sfx\\Items\\Invaxe.wav", NULL }, - { 2u, "Sfx\\Items\\Invblst.wav", NULL }, - { 2u, "Sfx\\Items\\Invbody.wav", NULL }, - { 2u, "Sfx\\Items\\Invbook.wav", NULL }, - { 2u, "Sfx\\Items\\Invbow.wav", NULL }, - { 2u, "Sfx\\Items\\Invcap.wav", NULL }, - { 2u, "Sfx\\Items\\Invgrab.wav", NULL }, - { 2u, "Sfx\\Items\\Invharm.wav", NULL }, - { 2u, "Sfx\\Items\\Invlarm.wav", NULL }, - { 2u, "Sfx\\Items\\Invmush.wav", NULL }, - { 2u, "Sfx\\Items\\Invpot.wav", NULL }, - { 2u, "Sfx\\Items\\Invring.wav", NULL }, - { 2u, "Sfx\\Items\\Invrock.wav", NULL }, - { 2u, "Sfx\\Items\\Invscrol.wav", NULL }, - { 2u, "Sfx\\Items\\Invshiel.wav", NULL }, - { 2u, "Sfx\\Items\\Invsign.wav", NULL }, - { 2u, "Sfx\\Items\\Invstaf.wav", NULL }, - { 2u, "Sfx\\Items\\Invsword.wav", NULL }, - { 2u, "Sfx\\Items\\Lever.wav", NULL }, - { 2u, "Sfx\\Items\\Magic.wav", NULL }, - { 2u, "Sfx\\Items\\Magic1.wav", NULL }, - { 2u, "Sfx\\Items\\Readbook.wav", NULL }, - { 2u, "Sfx\\Items\\Sarc.wav", NULL }, - { 2u, "Sfx\\Items\\Shielfkd.wav", NULL }, - { 2u, "Sfx\\Items\\Swrdfkd.wav", NULL }, - { 4u, "Sfx\\Items\\Titlemov.wav", NULL }, - { 4u, "Sfx\\Items\\Titlslct.wav", NULL }, - { 4u, "Sfx\\Misc\\blank.wav", NULL }, - { 2u, "Sfx\\Items\\Trap.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast1.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast10.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast12.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast2.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast3.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast4.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast5.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast6.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast7.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast8.wav", NULL }, - { 2u, "Sfx\\Misc\\Cast9.wav", NULL }, - { 2u, "Sfx\\Misc\\Healing.wav", NULL }, - { 2u, "Sfx\\Misc\\Repair.wav", NULL }, - { 2u, "Sfx\\Misc\\Acids1.wav", NULL }, - { 2u, "Sfx\\Misc\\Acids2.wav", NULL }, - { 2u, "Sfx\\Misc\\Apoc.wav", NULL }, - { 2u, "Sfx\\Misc\\Arrowall.wav", NULL }, - { 2u, "Sfx\\Misc\\Bldboil.wav", NULL }, - { 2u, "Sfx\\Misc\\Blodstar.wav", NULL }, - { 2u, "Sfx\\Misc\\Blsimpt.wav", NULL }, - { 2u, "Sfx\\Misc\\Bonesp.wav", NULL }, - { 2u, "Sfx\\Misc\\Bsimpct.wav", NULL }, - { 2u, "Sfx\\Misc\\Caldron.wav", NULL }, - { 2u, "Sfx\\Misc\\Cbolt.wav", NULL }, - { 2u, "Sfx\\Misc\\Chltning.wav", NULL }, - { 2u, "Sfx\\Misc\\DSerp.wav", NULL }, - { 2u, "Sfx\\Misc\\Elecimp1.wav", NULL }, - { 2u, "Sfx\\Misc\\Elementl.wav", NULL }, - { 2u, "Sfx\\Misc\\Ethereal.wav", NULL }, - { 2u, "Sfx\\Misc\\Fball.wav", NULL }, - { 2u, "Sfx\\Misc\\Fbolt1.wav", NULL }, - { 2u, "Sfx\\Misc\\Fbolt2.wav", NULL }, - { 2u, "Sfx\\Misc\\Firimp1.wav", NULL }, - { 2u, "Sfx\\Misc\\Firimp2.wav", NULL }, - { 2u, "Sfx\\Misc\\Flamwave.wav", NULL }, - { 2u, "Sfx\\Misc\\Flash.wav", NULL }, - { 2u, "Sfx\\Misc\\Fountain.wav", NULL }, - { 2u, "Sfx\\Misc\\Golum.wav", NULL }, - { 2u, "Sfx\\Misc\\Golumded.wav", NULL }, - { 2u, "Sfx\\Misc\\Gshrine.wav", NULL }, - { 2u, "Sfx\\Misc\\Guard.wav", NULL }, - { 2u, "Sfx\\Misc\\Grdlanch.wav", NULL }, - { 2u, "Sfx\\Misc\\Holybolt.wav", NULL }, - { 2u, "Sfx\\Misc\\Hyper.wav", NULL }, - { 2u, "Sfx\\Misc\\Infravis.wav", NULL }, - { 2u, "Sfx\\Misc\\Invisibl.wav", NULL }, - { 2u, "Sfx\\Misc\\Invpot.wav", NULL }, - { 2u, "Sfx\\Misc\\Lning1.wav", NULL }, - { 2u, "Sfx\\Misc\\Ltning.wav", NULL }, - { 2u, "Sfx\\Misc\\Mshield.wav", NULL }, - { 2u, "Sfx\\Misc\\Nova.wav", NULL }, - { 2u, "Sfx\\Misc\\Portal.wav", NULL }, - { 2u, "Sfx\\Misc\\Puddle.wav", NULL }, - { 2u, "Sfx\\Misc\\Resur.wav", NULL }, - { 2u, "Sfx\\Misc\\Scurse.wav", NULL }, - { 2u, "Sfx\\Misc\\Scurimp.wav", NULL }, - { 2u, "Sfx\\Misc\\Sentinel.wav", NULL }, - { 2u, "Sfx\\Misc\\Shatter.wav", NULL }, - { 2u, "Sfx\\Misc\\Soulfire.wav", NULL }, - { 2u, "Sfx\\Misc\\Spoutlop.wav", NULL }, - { 2u, "Sfx\\Misc\\Spoutstr.wav", NULL }, - { 2u, "Sfx\\Misc\\Storm.wav", NULL }, - { 2u, "Sfx\\Misc\\Trapdis.wav", NULL }, - { 2u, "Sfx\\Misc\\Teleport.wav", NULL }, - { 2u, "Sfx\\Misc\\Vtheft.wav", NULL }, - { 2u, "Sfx\\Misc\\Wallloop.wav", NULL }, - { 2u, "Sfx\\Misc\\Wallstrt.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid01.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid02.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid03.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid04.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid05.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid06.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid07.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid08.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid09.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid10.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid11.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid12.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid13.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid14.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid15.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid16.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid17.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid18.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid19.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid20.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid21.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid22.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid23.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid24.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid25.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid26.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid27.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid28.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid29.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid30.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid31.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid32.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid33.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid34.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid35.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid36.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid37.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid38.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid39.wav", NULL }, - { 1u, "Sfx\\Towners\\Bmaid40.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith01.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith02.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith03.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith04.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith05.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith06.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith07.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith08.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith09.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith10.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith11.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith12.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith13.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith14.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith15.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith16.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith17.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith18.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith19.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith20.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith21.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith22.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith23.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith24.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith25.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith26.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith27.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith28.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith29.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith30.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith31.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith32.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith33.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith34.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith35.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith36.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith37.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith38.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith39.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith40.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith41.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith42.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith43.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith44.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith45.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith46.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith47.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith48.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith49.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith50.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith51.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith52.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith53.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith54.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith55.wav", NULL }, - { 1u, "Sfx\\Towners\\Bsmith56.wav", NULL }, - { 0u, "Sfx\\Towners\\Cow1.wav", NULL }, - { 0u, "Sfx\\Towners\\Cow2.wav", NULL }, - { 1u, "Sfx\\Towners\\Deadguy2.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk01.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk02.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk03.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk04.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk05.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk06.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk07.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk08.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk09.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk10.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk11.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk12.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk13.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk14.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk15.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk16.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk17.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk18.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk19.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk20.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk21.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk22.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk23.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk24.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk25.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk26.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk27.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk28.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk29.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk30.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk31.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk32.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk33.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk34.wav", NULL }, - { 1u, "Sfx\\Towners\\Drunk35.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer01.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer02.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer03.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer04.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer05.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer06.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer07.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer08.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer09.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer10.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer11.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer12.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer13.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer14.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer15.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer16.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer17.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer18.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer19.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer20.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer21.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer22.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer23.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer24.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer25.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer26.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer27.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer28.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer29.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer30.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer31.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer32.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer33.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer34.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer35.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer36.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer37.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer38.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer39.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer40.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer41.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer42.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer43.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer44.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer45.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer46.wav", NULL }, - { 1u, "Sfx\\Towners\\Healer47.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy01.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy02.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy03.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy04.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy05.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy06.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy07.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy08.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy09.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy10.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy11.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy12.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy13.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy14.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy15.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy16.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy17.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy18.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy19.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy20.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy21.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy22.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy23.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy24.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy25.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy26.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy27.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy28.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy29.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy30.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy31.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy32.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy33.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy34.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy35.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy36.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy37.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy38.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy39.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy40.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy41.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy42.wav", NULL }, - { 1u, "Sfx\\Towners\\Pegboy43.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest00.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest01.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest02.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest03.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest04.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest05.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest06.wav", NULL }, - { 1u, "Sfx\\Towners\\Priest07.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt00.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt01.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt02.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt03.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt04.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt05.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt06.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt07.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt08.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt09.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt10.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt11.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt12.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt13.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt14.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt15.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt16.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt17.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt18.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt19.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt20.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt21.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt22.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt23.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt24.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt25.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt26.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt27.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt28.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt29.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt30.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt31.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt32.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt33.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt34.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt35.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt36.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt37.wav", NULL }, - { 1u, "Sfx\\Towners\\Storyt38.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown00.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown01.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown02.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown03.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown04.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown05.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown06.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown07.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown08.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown09.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown10.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown11.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown12.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown13.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown14.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown15.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown16.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown17.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown18.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown19.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown20.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown21.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown22.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown23.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown24.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown25.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown26.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown27.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown28.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown29.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown30.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown31.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown32.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown33.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown34.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown35.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown36.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown37.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown38.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown39.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown40.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown41.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown42.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown43.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown44.wav", NULL }, - { 1u, "Sfx\\Towners\\Tavown45.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch01.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch02.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch03.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch04.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch05.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch06.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch07.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch08.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch09.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch10.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch11.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch12.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch13.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch14.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch15.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch16.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch17.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch18.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch19.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch20.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch21.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch22.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch23.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch24.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch25.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch26.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch27.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch28.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch29.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch30.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch31.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch32.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch33.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch34.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch35.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch36.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch37.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch38.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch39.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch40.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch41.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch42.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch43.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch44.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch45.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch46.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch47.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch48.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch49.wav", NULL }, - { 1u, "Sfx\\Towners\\Witch50.wav", NULL }, - { 1u, "Sfx\\Towners\\Wound01.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage01.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage02.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage03.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage04.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage05.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage06.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage07.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage08.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage09.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage10.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage11.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage12.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage13.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage14.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage15.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage16.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage17.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage18.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage19.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage20.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage21.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage22.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage23.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage24.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage25.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage26.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage27.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage28.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage29.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage30.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage31.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage32.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage33.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage34.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage35.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage36.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage37.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage38.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage39.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage40.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage41.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage42.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage43.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage44.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage45.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage46.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage47.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage48.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage49.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage50.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage51.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage52.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage53.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage54.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage55.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage56.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage57.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage58.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage59.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage60.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage61.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage62.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage63.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage64.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage65.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage66.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage67.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage68.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage69.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage69b.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage70.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage71.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage72.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage73.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage74.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage75.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage76.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage77.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage78.wav", NULL }, - { 64u, "Sfx\\Sorceror\\Mage79.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage80.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage81.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage82.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage83.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage84.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage85.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage86.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage87.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage88.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage89.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage90.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage91.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage92.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage93.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage94.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage95.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage96.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage97.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage98.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage99.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage100.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage101.wav", NULL }, - { 65u, "Sfx\\Sorceror\\Mage102.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue01.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue02.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue03.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue04.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue05.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue06.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue07.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue08.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue09.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue10.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue11.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue12.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue13.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue14.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue15.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue16.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue17.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue18.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue19.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue20.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue21.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue22.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue23.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue24.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue25.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue26.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue27.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue28.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue29.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue30.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue31.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue32.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue33.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue34.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue35.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue36.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue37.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue38.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue39.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue40.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue41.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue42.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue43.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue44.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue45.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue46.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue47.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue48.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue49.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue50.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue51.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue52.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue53.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue54.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue55.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue56.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue57.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue58.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue59.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue60.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue61.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue62.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue63.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue64.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue65.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue66.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue67.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue68.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue69.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue69b.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue70.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue71.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue72.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue73.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue74.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue75.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue76.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue77.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue78.wav", NULL }, - { 16u, "Sfx\\Rogue\\Rogue79.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue80.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue81.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue82.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue83.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue84.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue85.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue86.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue87.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue88.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue89.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue90.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue91.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue92.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue93.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue94.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue95.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue96.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue97.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue98.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue99.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue100.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue101.wav", NULL }, - { 17u, "Sfx\\Rogue\\Rogue102.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior01.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior02.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior03.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior04.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior05.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior06.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior07.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior08.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior09.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior10.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior11.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior12.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior13.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior14.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario14b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario14c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior15.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario15b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario15c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior16.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario16b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario16c.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior17.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior18.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior19.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior20.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior21.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior22.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior23.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior24.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior25.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior26.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior27.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior28.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior29.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior30.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior31.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior32.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior33.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior34.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior35.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior36.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior37.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior38.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior39.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior40.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior41.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior42.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior43.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior44.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior45.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior46.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior47.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior48.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior49.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior50.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior51.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior52.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior53.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior54.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior55.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior56.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior57.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior58.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior59.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior60.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior61.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior62.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior63.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior64.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior65.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior66.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior67.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior68.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior69.wav", NULL }, - { 32u, "Sfx\\Warrior\\Wario69b.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior70.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior71.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior72.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior73.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior74.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior75.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior76.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior77.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior78.wav", NULL }, - { 32u, "Sfx\\Warrior\\Warior79.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior80.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior81.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior82.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior83.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior84.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior85.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior86.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior87.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior88.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior89.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior90.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior91.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior92.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior93.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior94.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior95.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95b.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95c.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95d.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95e.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario95f.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario96b.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario97.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario98.wav", NULL }, - { 33u, "Sfx\\Warrior\\Warior99.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario100.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario101.wav", NULL }, - { 33u, "Sfx\\Warrior\\Wario102.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar01.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar02.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar03.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar04.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar05.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar06.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar07.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar08.wav", NULL }, - { 1u, "Sfx\\Narrator\\Nar09.wav", NULL }, - { 1u, "Sfx\\Misc\\Lvl16int.wav", NULL }, - { 1u, "Sfx\\Monsters\\Butcher.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Garbud04.wav", NULL }, - { 1u, "Sfx\\Monsters\\Izual01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Lach03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Laz01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Laz02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Sking01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot02.wav", NULL }, - { 1u, "Sfx\\Monsters\\Snot03.wav", NULL }, - { 1u, "Sfx\\Monsters\\Warlrd01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Wlock01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Zhar01.wav", NULL }, - { 1u, "Sfx\\Monsters\\Zhar02.wav", NULL }, - { 1u, "Sfx\\Monsters\\DiabloD.wav", NULL } -}; - -struct effects_cpp_init -{ - effects_cpp_init() - { - effects_cpp_init_value = effects_inf; - } -} _effects_cpp_init; -// 47A468: using guessed type int effects_inf; -// 52A550: using guessed type int effects_cpp_init_value; - -BOOL __fastcall effect_is_playing(int nSFX) -{ - TSFX *v1; // eax - TSnd *v2; // ecx - -printf("effect_is_playing\n"); - v1 = &sgSFX[nSFX]; - v2 = v1->pSnd; - if ( v2 ) - return snd_playing(v2); - if ( v1->bFlags & SFX_STREAM ) - return v1 == sfx_data_cur; - return FALSE; -} - -void __cdecl sfx_stop() -{ - if ( sfx_stream ) { - SFileDdaEnd(sfx_stream); - SFileCloseFile(sfx_stream); - sfx_stream = NULL; - sfx_data_cur = NULL; - } -} - - - - -void * MSounds[10][2]; - -void __fastcall InitMonsterSND(int monst) -{ - TSnd *pSnd; - char name[MAX_PATH]; - char *path; - - - if ( !gbSndInited ) { - return; - } - - int mtype = Monsters[monst].mtype; - for ( int i = 0; i < 4; i++ ) { - if ( monster_action_sounds[i] != 's' || monsterdata[mtype].snd_special ) { - for ( int j = 0; j < 2; j++ ) { - sprintf(name, monsterdata[mtype].sndfile, monster_action_sounds[i], j + 1); - path = (char *)DiabloAllocPtr(strlen(name) + 1); - strcpy(path, name); - //printf("Name : %s\n\n\n", name); - pSnd = sound_file_load(path); - - Monsters[monst].Snds[i][j] = pSnd; - - - printf("\n\nPSND %p\n\n\n", pSnd); - if ( !pSnd ) - mem_free_dbg(path); - } - - } - - } - printf("MonsterWAV %s\n\n", path); -} - -void __cdecl FreeEffects() -{ - for ( int i = 0; i < nummtypes; i++ ) { - int mtype = Monsters[i].mtype; - for ( int j = 0; j < 4; ++j ) { - for ( int k = 0; k < 2; ++k ) { - TSnd *pSnd = Monsters[i].Snds[j][k]; - if ( pSnd ) { - Monsters[i].Snds[j][k] = NULL; - char *file = pSnd->sound_path; - pSnd->sound_path = NULL; - sound_file_cleanup(pSnd); - mem_free_dbg(file); - } - } - } - } -} - -void __fastcall PlayEffect(int i, int mode) -{ - if ( plr[myplr].pLvlLoad ) { - return; - } - - int sndIdx = random(164, 2); - if ( !gbSndInited || !gbSoundOn || gbBufferMsgs ) { - return; - } - - int mi = monster[i]._mMTidx; - - printf("Monster %d\n", mi); - TSnd *snd = Monsters[mi].Snds[mode][sndIdx]; - printf("MONSTER %i, MI %d, MODE %d, SNDINDX %d\n", Monsters[mi], mi, mode,sndIdx); - - // if ( !snd || snd_playing(snd) ) { - // return; - - // } - - int lVolume, lPan; - // if ( !calc_snd_position(monster[i]._mx, monster[i]._my, &lVolume, &lPan) ) - // return; - - - snd_play_snd(snd, lVolume, lPan); -} - - - - - -BOOL __fastcall calc_snd_position(int x, int y, int *plVolume, int *plPan) -{ - x -= plr[myplr].WorldX; - y -= plr[myplr].WorldY; - - int pan = (x - y) << 8; - *plPan = pan; - - if ( abs(pan) > 6400 ) - return FALSE; - - int volume = abs(x) > abs(y) ? abs(x) : abs(y); - volume <<= 6; - *plVolume = volume; - - if ( volume >= 6400 ) - return FALSE; - - *plVolume = -volume; - - return TRUE; -} - -void __fastcall PlaySFX(int psfx) -{ - int v1; // eax - - printf("PlaySFX\n"); - v1 = RndSFX(psfx); - PlaySFX_priv(&sgSFX[v1], 0, 0, 0); -} - -void __fastcall PlaySFX_priv(TSFX *pSFX, BOOL loc, int x, int y) -{ - - printf("PlaySFX_priv %s\n", pSFX->pszName); - - char * WAV = pSFX->pszName; - - LoadAndPlaySound(WAV,1,1); - - // Crash here.,, I forgot what the problem is but we can change that. - // if ( plr[myplr].pLvlLoad && gbMaxPlayers != 1 ) { - // return; - // } - // if ( !gbSndInited || !gbSoundOn || gbBufferMsgs ) { - // return; - // } - - // if ( !(pSFX->bFlags & (SFX_STREAM | SFX_MISC)) && pSFX->pSnd != 0 && snd_playing(pSFX->pSnd) ) { - // return; - // } - - // int lPan = 0; - // int lVolume = 0; - // if ( loc && !calc_snd_position(x, y, &lVolume, &lPan) ) { - // return; - // } - - // if ( pSFX->bFlags & SFX_STREAM ) { - // stream_play(pSFX, lVolume, lPan); - // return; - // } - - // if ( !pSFX->pSnd ) - // pSFX->pSnd = sound_file_load(pSFX->pszName); - - // if ( pSFX->pSnd ) - // snd_play_snd(pSFX->pSnd, lVolume, lPan); -} -// 4A22D5: using guessed type char gbSoundOn; -// 676194: using guessed type char gbBufferMsgs; -// 679660: using guessed type char gbMaxPlayers; - -void __fastcall stream_play(TSFX *pSFX, int lVolume, int lPan) -{ - - printf("stream_play\n"); - sfx_stop(); - lVolume += sound_get_or_set_sound_volume(1); - if ( lVolume >= VOLUME_MIN ) { - if ( lVolume > VOLUME_MAX ) - lVolume = VOLUME_MAX; - if ( !SFileOpenFile(pSFX->pszName, &sfx_stream) ) { - sfx_stream = 0; - } else { - if ( !SFileDdaBeginEx(sfx_stream, 0x40000, 0, 0, lVolume, lPan, 0) ) - sfx_stop(); - else - sfx_data_cur = pSFX; - } - } -} - -int __fastcall RndSFX(int psfx) -{ - int v1; // esi - int v3; // [esp-4h] [ebp-8h] - - v1 = psfx; - switch ( psfx ) - { - case PS_WARR69: - goto LABEL_12; - case PS_WARR14: - case PS_WARR15: - case PS_WARR16: - goto LABEL_19; - case PS_MAGE69: - case PS_ROGUE69: - case PS_SWING: - case LS_ACID: - case IS_FMAG: - case IS_MAGIC: - case IS_BHIT: -LABEL_12: - v3 = 2; -LABEL_15: - return v1 + random(165, v3); - case PS_WARR2: -LABEL_19: - v3 = 3; - goto LABEL_15; - } - return psfx; -} - -void __fastcall PlaySfxLoc(int psfx, int x, int y) -{ - int v3; // esi - int v4; // eax - TSnd *v5; // ecx - - - - printf("PlaySfxLoc\n"); - v3 = x; - v4 = RndSFX(psfx); - if ( v4 >= 0 && v4 <= 3 ) - { - v5 = sgSFX[v4].pSnd; - if ( v5 ) - v5->start_tc = 0; - } - PlaySFX_priv(&sgSFX[v4], 1, v3, y); -} - -void __cdecl FreeMonsterSnd() -{ - snd_update(TRUE); - sfx_stop(); - sound_stop(); - - for ( int i = 0; i < nummtypes; i++ ) { - for ( int j = 0; j < 4; j++ ) { - for ( int k = 0; k < 2; k++ ) { - snd_stop_snd(Monsters[i].Snds[j][k]); - } - - } - } -} - -void __cdecl sound_stop() -{ - int i; // edi - - for(i = 0; i < NUM_SFX; i++) - { - if ( sgSFX[i].pSnd ) - snd_stop_snd(sgSFX[i].pSnd); - } -} - -void __cdecl sound_update() -{ - //int v0; // ebp - //unsigned int v1; // ecx -// int v2; // eax - unsigned int v3; // [esp-Ch] [ebp-Ch] - unsigned int v4; // [esp-8h] [ebp-8h] - //int v5; // [esp-4h] [ebp-4h] - - if ( gbSndInited ) - { - snd_update(0); - //v5 = v0; - //v4 = v1; - //v3 = v1; - if ( sfx_stream ) - { - //_LOBYTE(v2) = SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3); - if ( SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3) ) - { - if ( v4 >= v3 ) - sfx_stop(); - } - } - } -} -// 415DBA: could not find valid save-restore pair for ebp - -void __cdecl effects_cleanup_sfx() -{ - unsigned int v0; // edi - TSnd *v1; // ecx - - FreeMonsterSnd(); - v0 = 0; - do - { - v1 = sgSFX[v0].pSnd; - if ( v1 ) - { - sound_file_cleanup(v1); - sgSFX[v0].pSnd = 0; - } - ++v0; - } - while ( v0 < NUM_SFX ); -} - -void __cdecl stream_update() -{ - char v0; // bl - char v1; // al - - v0 = 0; - if ( (unsigned char)gbMaxPlayers <= 1u ) - { - v1 = plr[myplr]._pClass; - if ( v1 ) - { - if ( v1 == 1 ) - { - v0 = 16; - } - else if ( v1 == 2 ) - { - v0 = 64; - } - else - { - TermMsg("effects:1"); - } - } - else - { - v0 = 32; - } - } - else - { - v0 = 112; - } - priv_sound_init(v0); -} -// 679660: using guessed type char gbMaxPlayers; - -void __fastcall priv_sound_init(int bLoadMask) -{ - unsigned char v1; // bl - unsigned char v2; // cl - unsigned int v3; // esi - unsigned char v4; // al - TSnd *v5; // eax - unsigned char v6; // [esp+0h] [ebp-4h] - - - - - // if ( gbSndInited ) - // { - // v1 = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR); - // v2 = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) ^ bLoadMask; - // v3 = 0; - // v6 = v2; - // do - // { - // if ( !sgSFX[v3].pSnd ) - // { - // v4 = sgSFX[v3].bFlags; - // if ( !(v4 & SFX_STREAM) && (!v2 || v4 & v2) && (!(v4 & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR)) || v4 & v1) ) - // { - // v5 = sound_file_load(sgSFX[v3].pszName); - // v2 = v6; - // sgSFX[v3].pSnd = v5; - // } - // } - // ++v3; - // } - // while ( v3 < NUM_SFX ); - // } -} - -void __cdecl sound_init() -{ - priv_sound_init(4); -} - -void __stdcall effects_play_sound(char *snd_file) -{ - int v1; // edi - unsigned int v2; // esi - TSnd **v3; // esi - //int v4; // eax - - - if ( gbSndInited && gbSoundOn ) - { - v1 = 0; - v2 = 0; - while ( _strcmpi(sgSFX[v2].pszName, snd_file) || !sgSFX[v2].pSnd ) - { - ++v2; - ++v1; - if ( v2 >= NUM_SFX ) - return; - } - v3 = &sgSFX[v1].pSnd; - - - //_LOBYTE(v4) = snd_playing(*v3); - if ( !snd_playing(*v3) ) - snd_play_snd(*v3, 0, 0); - } -} -// 4A22D5: using guessed type char gbSoundOn; diff --git a/Stub/init.cpp b/Stub/init.cpp index 7f74e9ad2..29b764794 100644 --- a/Stub/init.cpp +++ b/Stub/init.cpp @@ -19,8 +19,6 @@ char HeroUndecidedName[17] = { 0 }; bool StartNewGame; bool CreateSinglePlayerChar; int HeroChosen = 0; -int menu = 0; -int SelectedItem = 0; /** * Case insensitive search for a file name in a directory. @@ -71,10 +69,6 @@ void __fastcall init_create_window(int nCmdShow) init_archives(); gmenu_init_menu(); - SDL_Diablo_UI(); - // SDL_ShowCursor(SDL_DISABLE); - // SDL_SetWindowSize(window, 1920,1080); //2560x1440 - SDL_SetRelativeMouseMode(SDL_TRUE); } LRESULT __stdcall MainWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) @@ -103,34 +97,6 @@ void GetAvailableHeroes() { } -void LoadCharNamesintoMemory(int start, int end) -{ - PkPlayerStruct pkplr; - int unused; - void *CharFile; - char *p_hero_names = *hero_names; // Not sure if this is correct - - memset(hero_names, 0, 0x140u); - - while (start != end) { - CharFile = pfile_open_save_archive(&unused, start); - if (CharFile) { - if (pfile_read_hero(CharFile, &pkplr)) { - strcpy(p_hero_names, pkplr.pName); - printf("Player Strength %d\n", (int)pkplr.pBaseStr); - UnPackPlayer(&pkplr, 0, 0); - pfile_archive_contains_game(CharFile); - } - pfile_SFileCloseArchive(CharFile); - } - - p_hero_names += 32; - start++; - } - - // memcpy(shero_names, hero_names, sizeof(hero_names)); -} - void HideCursor() { Uint8 l_data[1]; @@ -142,538 +108,3 @@ void HideCursor() SDL_Cursor *g_cursor = SDL_CreateCursor(l_data, l_mask, 1, 1, 0, 0); SDL_SetCursor(g_cursor); } - -void SetMenu(int MenuId) -{ - void *tmp = pPcxTitleImage; - pPcxTitleImage = NULL; - mem_free_dbg(tmp); - TitleImageLoaded = false; - - menu = MenuId; - SelectedItem = 0; -} - -void ExitDiablo() -{ - printf("Exiting Diablo\n"); - SDL_Quit(); - exit(0); -} - -void SDL_Diablo_UI() // I anticipate to move this later. -{ - // WNDPROC saveProc; - - snd_init(0); - music_start(5); - - int timestart = 0; - - signed int NewHeroNameIndex = 0; - - SetMenu(0); - SDL_Event event; - int x, y; - bool quit = false; - int CharsLoaded = 0; - int HeroPortrait = 3; - - printf("Main Menu Init\n"); - // SDL_ShowCursor(SDL_DISABLE);//Doesn't really work... Use HideCursor() instead. - if (!window) { - SdlDiabloMainWindow(); - } - - ClearScreenBuffer(); - - const Uint8 *state = SDL_GetKeyboardState(NULL); - - // static std::deque message_queue; - - while (!quit) { - DrawMouse(); - PaletteFadeIn(32); - - if (menu == 0) { - SDL_RenderDiabloMainPage(); - } - - if (menu == 2) { - if (CharsLoaded == 0) { - LoadCharNamesintoMemory(0, 7); - // LoadHeroStats(); - CharsLoaded = 1; - } - SDL_RenderDiabloSinglePlayerPage(); - gbMaxPlayers = 1; - DrawMouse(); - ConstantButtons(); - } - - if (menu == 3) { - CreateHeroMenu(); - DrawNewHeroKartinka(HeroPortrait, 1); - ConstantButtons(); - DrawMouse(); - } - - int m4Loaded = 0; - if (menu == 4) { - DrawNewHeroKartinka(HeroPortrait, 0); - RenderDefaultStats(HeroPortrait); - RenderUndecidedHeroName(); - ConstantButtons(); - DrawMouse(); - } - if (menu == 5) { - DrawPreGameOptions(HeroPortrait, 1); - RenderDefaultStats(HeroPortrait); - ConstantButtons(); - DrawMouse(); - } - if (menu == 6) { - DrawPreGameDifficultySelection(HeroPortrait, 1); - RenderDefaultStats(HeroPortrait); - ConstantButtons(); - DrawMouse(); - } - - if (menu == 10) { - ShowCredts(); - } - - if (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case SDLK_ESCAPE: - if (menu != 0) { - SetMenu(0); - break; - } - quit = true; - ExitDiablo(); - break; - - case SDLK_BACKSPACE: - if (NewHeroNameIndex > 0) { - HeroUndecidedName[NewHeroNameIndex - 1] = 0; - --NewHeroNameIndex; - } - break; - - case SDLK_UP: - SelectedItem--; - break; - - case SDLK_DOWN: - SelectedItem++; - break; - - case SDLK_RETURN: - - default: - char letter = event.key.keysym.sym; - if (int(letter) > 96 && int(letter) < 123 || int(letter) == 32) - - if (NewHeroNameIndex < 17) { - HeroUndecidedName[NewHeroNameIndex] = letter; - NewHeroNameIndex++; - } - - break; - } - - case SDL_KEYUP: - break; - - default: - break; - } - - if (event.type == SDL_QUIT) { - quit = true; - ExitDiablo(); - } - - if (event.type == SDL_MOUSEMOTION) { - // Get the mouse offsets - MouseX = event.motion.x; - MouseY = event.motion.y; - } - - // If a key was pressed - if (event.type == SDL_MOUSEBUTTONDOWN /*&& event.button.clicks == 2*/) { - - if (event.button.button == SDL_BUTTON_LEFT) { - x = event.button.x; - y = event.button.y; - printf("X %d , Y %d\n", x, y); - - if (menu == 0) { - - int ClickListStart = 230; - int sizeOfBox = 72; - int WidthOfBox = 430; - int ClickListEnd = 343; - - if ((x > ClickListStart) && (y > ClickListStart) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + sizeOfBox)) { // Single clicked - printf("SinglePlayer Diablo\n"); - SetMenu(2); - } - - if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox) + sizeOfBox)) { // MultiBox clicked - printf("MultiPlayer Diablo\n"); - } - if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 2)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 2) + sizeOfBox)) { // Reply Intro clicked - printf("Credits\n"); - SetMenu(10); - } - if ((x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 4)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 4) + sizeOfBox)) { // ShowCredits clicked - quit = true; - ExitDiablo(); - } - - } // End of this Menu0 - - if (menu == 2) { // Yes, I know. Skipped 1 and I going to hell for it. - // int x = 440; - // int y = 430; - int ClickListStart = 315; - int sizeOfBox = 30; - int WidthOfBox = 400; - int ClickListEnd = 343; - - int CreateHeroY = 555; - int CreateHeroX = 305; - - SDL_Rect CreateHeroCancelBox; - CreateHeroCancelBox.y = 550; - CreateHeroCancelBox.x = 675; - CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; - CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; - - // Render Clicks - if (TotalPlayers >= 1 && (x > ClickListStart) && (y > ClickListStart) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + sizeOfBox)) { // MultiBox clicked - strcpy(chr_name_str, hero_names[0]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if (TotalPlayers >= 2 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox) + sizeOfBox)) { // MultiBox clicked - printf("Player 2 Diablo\n"); - strcpy(chr_name_str, hero_names[1]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if (TotalPlayers >= 3 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 2)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 2) + sizeOfBox)) { // MultiBox clicked - printf("Player 3 Diablo\n"); - strcpy(chr_name_str, hero_names[2]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if (TotalPlayers >= 4 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 3)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 3) + sizeOfBox)) { // MultiBox clicked - printf("Player 4 Diablo\n"); - effects_play_sound("Sfx\\Items\\Titlslct.wav"); - strcpy(chr_name_str, hero_names[3]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if (TotalPlayers >= 5 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 4)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 4) + sizeOfBox)) { // MultiBox clicked - printf("Player 5 Diablo\n"); - effects_play_sound("Sfx\\Items\\Titlslct.wav"); - strcpy(chr_name_str, hero_names[4]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if (TotalPlayers >= 6 && (x > ClickListStart) && (y > ClickListStart + (sizeOfBox * 5)) && (x < ClickListStart + WidthOfBox) && (y < ClickListStart + (sizeOfBox * 5) + sizeOfBox)) { // MultiBox clicked - printf("Player 6 Diablo\n"); - effects_play_sound("Sfx\\Items\\Titlslct.wav"); - strcpy(chr_name_str, hero_names[5]); - printf("Player %s\n", chr_name_str); - SetMenu(5); - // break; - } - - if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { - HeroPortrait = 3; - - printf("Cancel\n\n\n"); - SetMenu(0); - } - if ((x > CreateHeroX) && (y > CreateHeroY) && (x < CreateHeroX + WidthOfBox) && (y < CreateHeroY + sizeOfBox)) { - printf("Clicked Create Hero Box\n"); - SetMenu(3); - } - } - if (menu == 3) { - // SinglePlayerMenuItemsLoaded = 0; - printf("\n\nmenu3 X%d Y%d \n ", x, y); - - int WarriorSelectBoxY = 430; - int WarriorSelectBoxW = 100; - int WarriorSelectBoxS = 100; - - int RogueSelectBoxX = 450; - int RogueSelectBoxY = 392; - int SorcerorSelectBoxX = 383; - int SorcerorSelectBoxY = 365; - int CreateHeroOkBoxX = 330; - int CreateHeroOkBoxY = 441; - int CreateHeroCanBBoxX = 445; - int CreateHeroCanBBoxY = 473; - - // int x = 280; - // int y = 430; - - SDL_Rect WarriorSelectBox; - WarriorSelectBox.y = 350; - WarriorSelectBox.x = 280; - WarriorSelectBox.w = WarriorSelectBox.x + 100; - WarriorSelectBox.h = WarriorSelectBox.y + 30; - - SDL_Rect RogueSelectBox; - RogueSelectBox.y = 392; - RogueSelectBox.x = 280; - RogueSelectBox.w = RogueSelectBox.x + 100; - RogueSelectBox.h = RogueSelectBox.y + 30; - // X450 Y 392 ; - - SDL_Rect SorcerorSelectBox; - SorcerorSelectBox.y = 428; - SorcerorSelectBox.x = 280; - SorcerorSelectBox.w = SorcerorSelectBox.x + 100; - SorcerorSelectBox.h = SorcerorSelectBox.y + 30; - // X 447 Y 428 - - SDL_Rect CreateHeroCancelBox; - CreateHeroCancelBox.y = 550; - CreateHeroCancelBox.x = 675; - CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; - CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; - - if ((x > WarriorSelectBox.x) && (y > WarriorSelectBox.y) && (x < WarriorSelectBox.w) && (y < WarriorSelectBox.h)) { - - printf(" warrior I was hit\n\n\n"); - HeroPortrait = 0; - HeroChosen = 0; - SetMenu(4); - } - if ((x > RogueSelectBox.x) && (y > RogueSelectBox.y) && (x < RogueSelectBox.w) && (y < RogueSelectBox.h)) { - - printf(" rogue I was hit\n\n\n"); - HeroPortrait = 1; - HeroChosen = 1; - SetMenu(4); - } - if ((x > SorcerorSelectBox.x) && (y > SorcerorSelectBox.y) && (x < SorcerorSelectBox.w) && (y < SorcerorSelectBox.h)) { - HeroPortrait = 2; - printf("sorceror I was hit\n\n\n"); - HeroChosen = 2; - SetMenu(4); - } - - if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { - HeroPortrait = 3; - - printf("Cancel\n\n\n"); - --menu; - } - } - if (menu == 4) { - printf("sozdat geroya"); - SDL_Rect CreateHeroCancelBox; - CreateHeroCancelBox.y = 550; - CreateHeroCancelBox.x = 675; - CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; - CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; - - // X 549 , Y 551 - SDL_Rect ClickOkBox; - ClickOkBox.y = 550; - ClickOkBox.x = 550; - ClickOkBox.w = ClickOkBox.x + 30; - ClickOkBox.h = ClickOkBox.y + 30; - - if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { - memset(HeroUndecidedName, 0, 17); - - NewHeroNameIndex = 0; - - printf("Cancel\n\n\n"); - HeroPortrait = 3; - SetMenu(3); - } - - if ((x > ClickOkBox.x) && (y > ClickOkBox.y) && (x < ClickOkBox.w) && (y < ClickOkBox.h)) { - - printf("Ok\n"); - CreateSinglePlayerChar = 1; - const char *test_name = HeroUndecidedName; - printf("%s\n", test_name); - break; - } - } - - clock_t start, end; - double cpu_time_used; - - if (menu == 5) { - if (timestart == 0) { - start = clock(); - timestart = 1; - } - - end = clock(); - - cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; - - printf("TIEM DELAY %f\n", cpu_time_used); - - int CreateHeroOkBoxX = 330; - int CreateHeroOkBoxY = 441; - int CreateHeroCanBBoxX = 445; - int CreateHeroCanBBoxY = 473; - - SDL_Rect NewGameBox; - NewGameBox.y = 350; - NewGameBox.x = 280; - NewGameBox.w = NewGameBox.x + 300; - NewGameBox.h = NewGameBox.y + 30; - - SDL_Rect LoadGameBox; - LoadGameBox.y = 392; - LoadGameBox.x = 280; - LoadGameBox.w = LoadGameBox.x + 300; - LoadGameBox.h = LoadGameBox.y + 30; - // X450 Y 392 ; - - SDL_Rect SorcerorSelectBox; - SorcerorSelectBox.y = 428; - SorcerorSelectBox.x = 280; - SorcerorSelectBox.w = SorcerorSelectBox.x + 100; - SorcerorSelectBox.h = SorcerorSelectBox.y + 30; - // X 447 Y 428 - - SDL_Rect CreateHeroCancelBox; - CreateHeroCancelBox.y = 550; - CreateHeroCancelBox.x = 675; - CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; - CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; - - if (cpu_time_used > 0.5 && (x > NewGameBox.x) && (y > NewGameBox.y) && (x < NewGameBox.w) && (y < NewGameBox.h)) { - - printf(" New Game I was hit\n\n\n"); - SetMenu(6); - cpu_time_used = 0; - timestart = 0; - start = 0; - } - if (cpu_time_used > 0.5 && (x > LoadGameBox.x) && (y > LoadGameBox.y) && (x < LoadGameBox.w) && (y < LoadGameBox.h)) { - - printf(" Load Game I was hit\n\n\n"); - break; - } - - if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { - HeroPortrait = 3; - timestart = 0; - cpu_time_used = 0; - start = 0; - end = 0; - cpu_time_used = 0; - - printf("Cancel\n\n\n"); - - SetMenu(2); // Return back to select hero menu. - } - } - - if (menu == 6) { - // Choose difficulty - - if (timestart == 0) { - start = clock(); - timestart = 1; - } - - end = clock(); - cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; - - int CreateHeroOkBoxX = 330; - int CreateHeroOkBoxY = 441; - int CreateHeroCanBBoxX = 445; - int CreateHeroCanBBoxY = 473; - - // int x = 280; - // int y = 430; - - SDL_Rect NormalSelectBox; - NormalSelectBox.y = 350; - NormalSelectBox.x = 280; - NormalSelectBox.w = NormalSelectBox.x + 300; - NormalSelectBox.h = NormalSelectBox.y + 30; - - SDL_Rect NightmareSelectBox; - NightmareSelectBox.y = 392; - NightmareSelectBox.x = 280; - NightmareSelectBox.w = NightmareSelectBox.x + 300; - NightmareSelectBox.h = NightmareSelectBox.y + 30; - // X450 Y 392 ; - - SDL_Rect HellSelectBox; - HellSelectBox.y = 428; - HellSelectBox.x = 280; - HellSelectBox.w = HellSelectBox.x + 300; - HellSelectBox.h = HellSelectBox.y + 30; - // X 447 Y 428 - - SDL_Rect CreateHeroCancelBox; - CreateHeroCancelBox.y = 550; - CreateHeroCancelBox.x = 675; - CreateHeroCancelBox.w = CreateHeroCancelBox.x + 100; - CreateHeroCancelBox.h = CreateHeroCancelBox.y + 30; - - if (cpu_time_used > 0.5 && (x > NormalSelectBox.x) && (y > NormalSelectBox.y) && (x < NormalSelectBox.w) && (y < NormalSelectBox.h)) { - StartNewGame = 1; - gnDifficulty = DIFF_NORMAL; - break; - } - if (cpu_time_used > 0.5 && (x > NightmareSelectBox.x) && (y > NightmareSelectBox.y) && (x < NightmareSelectBox.w) && (y < NightmareSelectBox.h)) { - StartNewGame = 1; - gnDifficulty = DIFF_NIGHTMARE; - break; - } - if (cpu_time_used > 1 && (x > HellSelectBox.x) && (y > HellSelectBox.y) && (x < HellSelectBox.w) && (y < HellSelectBox.h)) { - gnDifficulty = DIFF_HELL; - StartNewGame = 1; - break; - } - - if ((x > CreateHeroCancelBox.x) && (y > CreateHeroCancelBox.y) && (x < CreateHeroCancelBox.w) && (y < CreateHeroCancelBox.h)) { - HeroPortrait = 3; - timestart = 0; - cpu_time_used = 0; - start = 0; - end = 0; - cpu_time_used = 0; - - printf("Cancel\n\n\n"); - --menu; - } - } - } - } - } - } -} diff --git a/Stub/sdlrender.cpp b/Stub/sdlrender.cpp index c19b88283..51c05cdd6 100644 --- a/Stub/sdlrender.cpp +++ b/Stub/sdlrender.cpp @@ -852,8 +852,13 @@ void SDL_RenderDiabloMainPage() Pentframe = 0; } + int menuTop = 192; + int PentPositionX = GetCenter(42); - int PentPositionY = 192; + int PentPositionY = menuTop + SelectedItem * 43; + if (SelectedItem > 1) { + PentPositionY -= 1; // "Multi Player" and "Replay Intro" has a smaller gap then other items + } DrawArtWithMask(PentPositionX - 234, PentPositionY, 42, 42, Pentframe, 250, MenuPentegram); DrawArtWithMask(PentPositionX + 234, PentPositionY, 42, 42, Pentframe, 250, MenuPentegram); @@ -863,22 +868,14 @@ void SDL_RenderDiabloMainPage() RenderDiabloLogo(); - // print_title_str_large(); - int x = GetCenter(GetPCXFontWidth(MENIITEMS[0], pFont)) - 1; - int y = 192; - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[0], pFont, pPcxFontImage); - x = GetCenter(GetPCXFontWidth(MENIITEMS[1], pFont)) - 1; - y += 43; - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[1], pFont, pPcxFontImage); - x = GetCenter(GetPCXFontWidth(MENIITEMS[2], pFont)) - 1; - y += 42; - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[2], pFont, pPcxFontImage); - x = GetCenter(GetPCXFontWidth(MENIITEMS[3], pFont)) - 1; - y += 43; - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[3], pFont, pPcxFontImage); - x = GetCenter(GetPCXFontWidth(MENIITEMS[4], pFont)) - 1; - y += 43; - DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[4], pFont, pPcxFontImage); + for (int i = 0; i < 5; i++) { + int x = GetCenter(GetPCXFontWidth(MENIITEMS[i], pFont)) - 1; + int y = menuTop + i * 43; + if (i == 1) { + y -= 1; // "Multi Player" and "Replay Intro" has a smaller gap then other items + } + DrawPCXString(x, y, gdwFontWidth, gdwFontHeight, MENIITEMS[i], pFont, pPcxFontImage); + } DrawPCXString(17, 444, gdwFont3Width, gdwFont3Height, gszProductName, pFont16, pPcxFont3Image); diff --git a/Stub/sound.cpp b/Stub/sound.cpp index 9a03a4b84..4912eccdb 100644 --- a/Stub/sound.cpp +++ b/Stub/sound.cpp @@ -25,22 +25,22 @@ Mix_Music *gMusic = NULL; Mix_Chunk *sample; Mix_Music *music; -char *sgszMusicTracks[6] = {"Music\\DTowne.wav", "Music\\DLvlA.wav", "Music\\DLvlB.wav", - "Music\\DLvlC.wav", "Music\\DLvlD.wav", "Music\\Dintro.wav"}; +char *sgszMusicTracks[6] = { "Music\\DTowne.wav", "Music\\DLvlA.wav", "Music\\DLvlB.wav", + "Music\\DLvlC.wav", "Music\\DLvlD.wav", "Music\\Dintro.wav" }; void __fastcall snd_init(HWND hWnd) { DUMMY(); - /* for some reason function __fastcall snd_init seems to be used twice at this time*/ + /* for some reason function __fastcall snd_init seems to be used twice at this time*/ printf("\nSND INIT\n"); // Initialize SDL. if (SDL_Init(SDL_INIT_AUDIO) < 0) { printf("ERROR : %s\n\n", SDL_GetError()); } - - /* following function Mix_AllocateChannels allocates the number of channels of simultaneously played sounds.*/ - printf("Opened %i sound channels\n\n", Mix_AllocateChannels(channels)); - /* for example following possible channels: + + /* following function Mix_AllocateChannels allocates the number of channels of simultaneously played sounds.*/ + printf("Opened %i sound channels\n\n", Mix_AllocateChannels(channels)); + /* for example following possible channels: 1. music is playing 2. walking at the same time (walking sound) 3. reading a quest book at the same time @@ -111,7 +111,6 @@ void __fastcall music_start(int nTrack) // This is a hack.... I don't like it . // If you know this better than I , please help clean it up. - //Mix_OpenAudio(44100, AUDIO_S16LSB, 1, 1024); //No need to Mix_OpenAudio. Already done in the function __fastcall snd_init //Mix_OpenAudio(44100, AUDIO_S16LSB, 2, 1024); @@ -162,18 +161,16 @@ BOOL __fastcall snd_playing(TSnd *pSnd) { printf("snd_playing \n"); + return false; // DUMMY(); // UNIMPLEMENTED(); } - // void __fastcall snd_play_snd(TSnd *pSnd, int lVolume, int lPan) { - - Mix_PlayChannel(-1, (Mix_Chunk*)pSnd, 0); - + Mix_PlayChannel(-1, (Mix_Chunk *)pSnd, 0); } void __fastcall snd_stop_snd(TSnd *pSnd) @@ -182,10 +179,6 @@ void __fastcall snd_stop_snd(TSnd *pSnd) Mix_HaltMusic(); } - - - - void *MSFXBuffer; TSnd *__fastcall sound_file_load(char *path) { @@ -194,24 +187,19 @@ TSnd *__fastcall sound_file_load(char *path) int nrread; void *file; - -//This opens the file and reads it, makes Mix_chunk pointer to it. -//Once this is done the pointer is stored TSnd Struct + //This opens the file and reads it, makes Mix_chunk pointer to it. + //Once this is done the pointer is stored TSnd Struct SFileOpenFile(path, &file); - bytestoread = (int)SFileGetFileSize((HANDLE)file, 0); - MSFXBuffer = DiabloAllocPtr(bytestoread); - SFileReadFile(file, (char *)MSFXBuffer, bytestoread, (unsigned long *)&nrread, 0); - SDL_RWops *rw = SDL_RWFromMem(MSFXBuffer, bytestoread); - Mix_Chunk *SoundFX = Mix_LoadWAV_RW(rw, 1); - - - - + bytestoread = (int)SFileGetFileSize((HANDLE)file, 0); + MSFXBuffer = DiabloAllocPtr(bytestoread); + SFileReadFile(file, (char *)MSFXBuffer, bytestoread, (unsigned long *)&nrread, 0); + SDL_RWops *rw = SDL_RWFromMem(MSFXBuffer, bytestoread); + Mix_Chunk *SoundFX = Mix_LoadWAV_RW(rw, 1); - return (TSnd*)SoundFX; + return (TSnd *)SoundFX; -// printf("Sound_File_Load %s\n", path); + // printf("Sound_File_Load %s\n", path); // UNIMPLEMENTED(); }