From 6149abe281b8d98f5de36cf68315bbc943208f08 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 28 Aug 2019 23:18:53 +0200 Subject: [PATCH 1/4] [hellfire] init_archives, init_cleanup --- Source/init.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/Source/init.cpp b/Source/init.cpp index c786dce36..2da59d0a4 100644 --- a/Source/init.cpp +++ b/Source/init.cpp @@ -5,7 +5,7 @@ _SNETVERSIONDATA fileinfo; int gbActive; char diablo_exe_path[MAX_PATH]; -HANDLE unused_mpq; +HANDLE hellfire_mpq; char patch_rt_mpq_path[MAX_PATH]; WNDPROC CurrentProc; HANDLE diabdat_mpq; @@ -13,6 +13,23 @@ char diabdat_mpq_path[MAX_PATH]; HANDLE patch_rt_mpq; BOOL killed_mom_parent; BOOLEAN screensaver_enabled_prev; +#ifdef HELLFIRE +char hellfire_mpq_path[MAX_PATH]; +char hfmonk_mpq_path[MAX_PATH]; +char hfbard_mpq_path[MAX_PATH]; +char hfbarb_mpq_path[MAX_PATH]; +char hfmusic_mpq_path[MAX_PATH]; +char hfvoice_mpq_path[MAX_PATH]; +char hfopt1_mpq_path[MAX_PATH]; +char hfopt2_mpq_path[MAX_PATH]; +HANDLE hfmonk_mpq; +HANDLE hfbard_mpq; +HANDLE hfbarb_mpq; +HANDLE hfmusic_mpq; +HANDLE hfvoice_mpq; +HANDLE hfopt1_mpq; +HANDLE hfopt2_mpq; +#endif /* data */ @@ -33,11 +50,40 @@ void init_cleanup(BOOL show_cursor) SFileCloseArchive(patch_rt_mpq); patch_rt_mpq = NULL; } - if (unused_mpq) { - SFileCloseArchive(unused_mpq); - unused_mpq = NULL; + if (hellfire_mpq) { + SFileCloseArchive(hellfire_mpq); + hellfire_mpq = NULL; } - +#ifdef HELLFIRE + if (hfmonk_mpq) { + SFileCloseArchive(hfmonk_mpq); + hfmonk_mpq = NULL; + } + if (hfbard_mpq) { + SFileCloseArchive(hfbard_mpq); + hfbard_mpq = NULL; + } + if (hfbarb_mpq) { + SFileCloseArchive(hfbarb_mpq); + hfbarb_mpq = NULL; + } + if (hfmusic_mpq) { + SFileCloseArchive(hfmusic_mpq); + hfmusic_mpq = NULL; + } + if (hfvoice_mpq) { + SFileCloseArchive(hfvoice_mpq); + hfvoice_mpq = NULL; + } + if (hfopt1_mpq) { + SFileCloseArchive(hfopt1_mpq); + hfopt1_mpq = NULL; + } + if (hfopt2_mpq) { + SFileCloseArchive(hfopt2_mpq); + hfopt2_mpq = NULL; + } +#endif UiDestroy(); effects_cleanup_sfx(); sound_cleanup(); @@ -241,7 +287,7 @@ void init_archives() #endif #endif #ifdef COPYPROT - if (diabdat_mpq) + if (diabdat_mpq != NULL) break; UiCopyProtError(&result); if (result == COPYPROT_CANCEL) @@ -260,6 +306,16 @@ void init_archives() #else patch_rt_mpq = init_test_access(patch_rt_mpq_path, "\\patch_rt.mpq", "DiabloInstall", 2000, FS_PC); #endif +#ifdef HELLFIRE + hellfire_mpq = init_test_access(hellfire_mpq_path, "\\hellfire.mpq", "DiabloInstall", 8000, FS_PC); + hfmonk_mpq = init_test_access(hfmonk_mpq_path, "\\hfmonk.mpq", "DiabloInstall", 8100, FS_PC); + hfbard_mpq = init_test_access(hfbard_mpq_path, "\\hfbard.mpq", "DiabloInstall", 8110, FS_PC); + hfbarb_mpq = init_test_access(hfbarb_mpq_path, "\\hfbarb.mpq", "DiabloInstall", 8120, FS_PC); + hfmusic_mpq = init_test_access(hfmusic_mpq_path, "\\hfmusic.mpq", "DiabloInstall", 8200, FS_PC); + hfvoice_mpq = init_test_access(hfvoice_mpq_path, "\\hfvoice.mpq", "DiabloInstall", 8500, FS_PC); + hfopt1_mpq = init_test_access(hfopt1_mpq_path, "\\hfopt1.mpq", "DiabloInstall", 8600, FS_PC); + hfopt2_mpq = init_test_access(hfopt2_mpq_path, "\\hfopt2.mpq", "DiabloInstall", 8610, FS_PC); +#endif } HANDLE init_test_access(char *mpq_path, char *mpq_name, char *reg_loc, int flags, int fs) From b24d36b1536fbbdf17ef44305acb7af9c4fe4cc4 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Tue, 27 Aug 2019 18:43:07 +0200 Subject: [PATCH 2/4] [Hellfire] items_get_currlevel --- Source/items.cpp | 15 +++++++++++++++ Source/items.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/Source/items.cpp b/Source/items.cpp index 0f970c9b7..a6a054531 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -184,6 +184,21 @@ int ItemInvSnds[ITEMTYPES] = { int idoppely = 16; int premiumlvladd[6] = { -1, -1, 0, 0, 1, 2 }; +#ifdef HELLFIRE +int items_get_currlevel() +{ + int lvl; + + lvl = currlevel; + if (currlevel >= 17 && currlevel <= 20) + lvl = currlevel - 8; + if (currlevel >= 21 && currlevel <= 24) + lvl = currlevel - 7; + + return lvl; +} +#endif + void InitItemGFX() { int i; diff --git a/Source/items.h b/Source/items.h index 7ca3bb78a..d64739d35 100644 --- a/Source/items.h +++ b/Source/items.h @@ -14,6 +14,9 @@ extern BOOL UniqueItemFlag[128]; extern int numitems; extern int gnNumGetRecords; +#ifdef HELLFIRE +int items_get_currlevel(); +#endif void InitItemGFX(); BOOL ItemPlace(int xp, int yp); void AddInitItems(); From 0abe56f006b3277ddab58632fced4835a49243fa Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 28 Aug 2019 15:29:32 +0200 Subject: [PATCH 3/4] [hellfire] RndSFX, stream_update and priv_sound_init --- Source/effects.cpp | 214 +++++++++++++++++++++++++++++++++++++++++++-- enums.h | 189 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 395 insertions(+), 8 deletions(-) diff --git a/Source/effects.cpp b/Source/effects.cpp index fc4915bb9..0d979986e 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -25,10 +25,20 @@ TSFX sgSFX[] = { { SFX_MISC, "Sfx\\Misc\\Swing.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Swing2.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Dead.wav", NULL }, +#ifdef HELLFIRE + { SFX_MISC, "Sfx\\Misc\\Sting1.wav", NULL }, + { SFX_MISC, "Sfx\\Misc\\FBallBow.wav", NULL }, +#endif { SFX_STREAM, "Sfx\\Misc\\Questdon.wav", NULL }, { SFX_MISC, "Sfx\\Items\\Armrfkd.wav", NULL }, { SFX_MISC, "Sfx\\Items\\Barlfire.wav", NULL }, { SFX_MISC, "Sfx\\Items\\Barrel.wav", NULL }, +#ifdef HELLFIRE + { SFX_MISC, "Sfx\\Items\\PodPop8.wav", NULL }, + { SFX_MISC, "Sfx\\Items\\PodPop5.wav", NULL }, + { SFX_MISC, "Sfx\\Items\\UrnPop3.wav", NULL }, + { SFX_MISC, "Sfx\\Items\\UrnPop2.wav", NULL }, +#endif { SFX_MISC, "Sfx\\Items\\Bhit.wav", NULL }, { SFX_MISC, "Sfx\\Items\\Bhit1.wav", NULL }, { SFX_MISC, "Sfx\\Items\\Chest.wav", NULL }, @@ -136,6 +146,9 @@ TSFX sgSFX[] = { { SFX_MISC, "Sfx\\Misc\\Lning1.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Ltning.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Mshield.wav", NULL }, +#ifdef HELLFIRE + { SFX_MISC, "Sfx\\Misc\\NestXpld.wav", NULL }, +#endif { SFX_MISC, "Sfx\\Misc\\Nova.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Portal.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Puddle.wav", NULL }, @@ -153,6 +166,9 @@ TSFX sgSFX[] = { { SFX_MISC, "Sfx\\Misc\\Vtheft.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Wallloop.wav", NULL }, { SFX_MISC, "Sfx\\Misc\\Wallstrt.wav", NULL }, +#ifdef HELLFIRE + { SFX_MISC, "Sfx\\Misc\\LMag.wav", NULL }, +#endif #ifndef SPAWN { SFX_STREAM, "Sfx\\Towners\\Bmaid01.wav", NULL }, { SFX_STREAM, "Sfx\\Towners\\Bmaid02.wav", NULL }, @@ -257,6 +273,10 @@ TSFX sgSFX[] = { #endif { 0, "Sfx\\Towners\\Cow1.wav", NULL }, { 0, "Sfx\\Towners\\Cow2.wav", NULL }, +#ifdef HELLFIRE + { 0, "Sfx\\Towners\\Cow7.wav", NULL }, + { 0, "Sfx\\Towners\\Cow8.wav", NULL }, +#endif #ifndef SPAWN { SFX_STREAM, "Sfx\\Towners\\Deadguy2.wav", NULL }, { SFX_STREAM, "Sfx\\Towners\\Drunk01.wav", NULL }, @@ -866,6 +886,113 @@ TSFX sgSFX[] = { { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario100.wav", NULL }, { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario101.wav", NULL }, { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario102.wav", NULL }, +#endif +#ifdef HELLFIRE + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk01.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk08.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk09.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk10.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk11.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk12.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk13.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk14.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk15.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk16.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk24.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk27.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk29.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk34.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk35.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk43.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk46.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk49.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk50.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk52.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk54.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk55.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk56.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk61.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk62.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk68.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk69.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk69b.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk70.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk71.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_MONK, "Sfx\\Monk\\Monk79.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk80.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk82.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk83.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk87.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk88.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk89.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk91.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk92.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk94.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk95.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk96.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk97.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk98.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Monk\\Monk99.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, + { SFX_STREAM | SFX_MONK, "Sfx\\Misc\\blank.wav", NULL }, +#endif +#ifndef SPAWN { SFX_STREAM, "Sfx\\Narrator\\Nar01.wav", NULL }, { SFX_STREAM, "Sfx\\Narrator\\Nar02.wav", NULL }, { SFX_STREAM, "Sfx\\Narrator\\Nar03.wav", NULL }, @@ -895,7 +1022,60 @@ TSFX sgSFX[] = { { SFX_STREAM, "Sfx\\Monsters\\Wlock01.wav", NULL }, { SFX_STREAM, "Sfx\\Monsters\\Zhar01.wav", NULL }, { SFX_STREAM, "Sfx\\Monsters\\Zhar02.wav", NULL }, - { SFX_STREAM, "Sfx\\Monsters\\DiabloD.wav", NULL } + { SFX_STREAM, "Sfx\\Monsters\\DiabloD.wav", NULL }, +#endif +#ifdef HELLFIRE + { SFX_STREAM, "Sfx\\Hellfire\\Farmer1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer2.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer2A.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer5.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer6.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer7.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer8.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Farmer9.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\TEDDYBR1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\TEDDYBR2.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\TEDDYBR3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\TEDDYBR4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER2.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER8.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER6.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\DEFILER7.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL2.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL5.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NAKRUL6.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\NARATR3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT2.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT3.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT4A.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT5.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT6.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT7.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT8.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT9.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT10.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT11.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\COWSUT12.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Skljrn1.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr6.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr7.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr8.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr5.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr9.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\Naratr4.wav", NULL }, + { SFX_STREAM, "Sfx\\Hellfire\\TRADER1.wav", NULL }, + { SFX_MISC, "Sfx\\Items\\Cropen.wav", NULL }, + { SFX_MISC, "Sfx\\Items\\Crclos.wav", NULL }, #endif // clang-format on }; @@ -1108,6 +1288,10 @@ int RndSFX(int psfx) nRand = 2; else if (psfx == PS_ROGUE69) nRand = 2; +#endif +#ifdef HELLFIRE + else if (psfx == PS_MONK69) + nRand = 2; #endif else if (psfx == PS_SWING) nRand = 2; @@ -1211,12 +1395,23 @@ void stream_update() BYTE mask = 0; if (gbMaxPlayers > 1) { mask = SFX_WARRIOR | SFX_ROGUE | SFX_SORCEROR; +#ifdef HELLFIRE + mask |= SFX_MONK; +#endif } 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; +#ifdef HELLFIRE + } else if (plr[myplr]._pClass == PC_MONK) { + mask = SFX_MONK; + } else if (plr[myplr]._pClass == PC_BARBARIAN) { + mask = SFX_WARRIOR; + } else if (plr[myplr]._pClass == PC_BARD) { + mask = SFX_ROGUE; +#endif } else { app_fatal("effects:1"); } @@ -1226,14 +1421,18 @@ void stream_update() void priv_sound_init(BYTE bLoadMask) { - BYTE pc, bFlags; + BYTE pc; DWORD i; if (!gbSndInited) { return; } +#ifdef HELLFIRE + pc = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR | SFX_MONK); +#else pc = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR); +#endif bLoadMask ^= pc; for (i = 0; i < sizeof(sgSFX) / sizeof(TSFX); i++) { @@ -1241,16 +1440,19 @@ void priv_sound_init(BYTE bLoadMask) continue; } - bFlags = sgSFX[i].bFlags; - if (bFlags & SFX_STREAM) { + if (sgSFX[i].bFlags & SFX_STREAM) { continue; } - if (bLoadMask && !(bFlags & bLoadMask)) { + if (bLoadMask && !(sgSFX[i].bFlags & bLoadMask)) { continue; } - if (bFlags & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) && !(bFlags & pc)) { +#ifdef HELLFIRE + if (sgSFX[i].bFlags & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR | SFX_MONK) && !(sgSFX[i].bFlags & pc)) { +#else + if (sgSFX[i].bFlags & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) && !(sgSFX[i].bFlags & pc)) { +#endif continue; } diff --git a/enums.h b/enums.h index a0f521b87..e90aa5ec6 100644 --- a/enums.h +++ b/enums.h @@ -285,10 +285,20 @@ typedef enum _sfx_id { PS_SWING, PS_SWING2, PS_DEAD, +#ifdef HELLFIRE + IS_STING1, + IS_FBALLBOW, +#endif IS_QUESTDN, IS_ARMRFKD, IS_BARLFIRE, IS_BARREL, +#ifdef HELLFIRE + IS_POPPOP8, + IS_POPPOP5, + IS_POPPOP3, + IS_POPPOP2, +#endif IS_BHIT, IS_BHIT1, IS_CHEST, @@ -396,6 +406,9 @@ typedef enum _sfx_id { LS_LNING1, LS_LTNING, LS_MSHIELD, +#ifdef HELLFIRE + LS_NESTXPLD, +#endif LS_NOVA, LS_PORTAL, LS_PUDDLE, @@ -413,6 +426,9 @@ typedef enum _sfx_id { LS_VTHEFT, LS_WALLLOOP, LS_WALLSTRT, +#ifdef HELLFIRE + LS_LMAG, +#endif #ifndef SPAWN TSFX_BMAID1, TSFX_BMAID2, @@ -517,6 +533,10 @@ typedef enum _sfx_id { #endif TSFX_COW1, TSFX_COW2, +#ifdef HELLFIRE + TSFX_COW7, + TSFX_COW8, +#endif #ifndef SPAWN TSFX_DEADGUY, TSFX_DRUNK1, @@ -1126,6 +1146,113 @@ typedef enum _sfx_id { PS_WARR100, PS_WARR101, PS_WARR102, +#endif +#ifdef HELLFIRE + PS_MONK1, + PS_MONK2, + PS_MONK3, + PS_MONK4, + PS_MONK5, + PS_MONK6, + PS_MONK7, + PS_MONK8, + PS_MONK9, + PS_MONK10, + PS_MONK11, + PS_MONK12, + PS_MONK13, + PS_MONK14, + PS_MONK15, + PS_MONK16, + PS_MONK17, + PS_MONK18, + PS_MONK19, + PS_MONK20, + PS_MONK21, + PS_MONK22, + PS_MONK23, + PS_MONK24, + PS_MONK25, + PS_MONK26, + PS_MONK27, + PS_MONK28, + PS_MONK29, + PS_MONK30, + PS_MONK31, + PS_MONK32, + PS_MONK33, + PS_MONK34, + PS_MONK35, + PS_MONK36, + PS_MONK37, + PS_MONK38, + PS_MONK39, + PS_MONK40, + PS_MONK41, + PS_MONK42, + PS_MONK43, + PS_MONK44, + PS_MONK45, + PS_MONK46, + PS_MONK47, + PS_MONK48, + PS_MONK49, + PS_MONK50, + PS_MONK51, + PS_MONK52, + PS_MONK53, + PS_MONK54, + PS_MONK55, + PS_MONK56, + PS_MONK57, + PS_MONK58, + PS_MONK59, + PS_MONK60, + PS_MONK61, + PS_MONK62, + PS_MONK63, + PS_MONK64, + PS_MONK65, + PS_MONK66, + PS_MONK67, + PS_MONK68, + PS_MONK69, + PS_MONK69B, + PS_MONK70, + PS_MONK71, + PS_MONK72, + PS_MONK73, + PS_MONK74, + PS_MONK75, + PS_MONK76, + PS_MONK77, + PS_MONK78, + PS_MONK79, + PS_MONK80, + PS_MONK81, + PS_MONK82, + PS_MONK83, + PS_MONK84, + PS_MONK85, + PS_MONK86, + PS_MONK87, + PS_MONK88, + PS_MONK89, + PS_MONK90, + PS_MONK91, + PS_MONK92, + PS_MONK93, + PS_MONK94, + PS_MONK95, + PS_MONK96, + PS_MONK97, + PS_MONK98, + PS_MONK99, + PS_MONK100, + PS_MONK101, + PS_MONK102, +#endif +#ifndef SPAWN PS_NAR1, PS_NAR2, PS_NAR3, @@ -1157,13 +1284,66 @@ typedef enum _sfx_id { USFX_ZHAR2, USFX_DIABLOD, #endif +#ifdef HELLFIRE + TSFX_FARMER1, + TSFX_FARMER2, + TSFX_FARMER2A, + TSFX_FARMER3, + TSFX_FARMER4, + TSFX_FARMER5, + TSFX_FARMER6, + TSFX_FARMER7, + TSFX_FARMER8, + TSFX_FARMER9, + TSFX_TEDDYBR1, + TSFX_TEDDYBR2, + TSFX_TEDDYBR3, + TSFX_TEDDYBR4, + USFX_DEFILER1, + USFX_DEFILER2, + USFX_DEFILER3, + USFX_DEFILER4, + USFX_DEFILER8, + USFX_DEFILER6, + USFX_DEFILER7, + USFX_NAKRUL1, + USFX_NAKRUL2, + USFX_NAKRUL3, + USFX_NAKRUL4, + USFX_NAKRUL5, + USFX_NAKRUL6, + PS_NARATR3, + TSFX_COWSUT1, + TSFX_COWSUT2, + TSFX_COWSUT3, + TSFX_COWSUT4, + TSFX_COWSUT4A, + TSFX_COWSUT5, + TSFX_COWSUT6, + TSFX_COWSUT7, + TSFX_COWSUT8, + TSFX_COWSUT9, + TSFX_COWSUT10, + TSFX_COWSUT11, + TSFX_COWSUT12, + USFX_SKLJRN1, + PS_NARATR6, + PS_NARATR7, + PS_NARATR8, + PS_NARATR5, + PS_NARATR9, + PS_NARATR4, + TSFX_TRADER1, + IS_CROPEN, + IS_CRCLOS, +#endif } _sfx_id; typedef enum sfx_flag { SFX_STREAM = 0x01, SFX_MISC = 0x02, SFX_UI = 0x04, - SFX_08 = 0x08, + SFX_MONK = 0x08, SFX_ROGUE = 0x10, SFX_WARRIOR = 0x20, SFX_SORCEROR = 0x40, @@ -2696,6 +2876,11 @@ typedef enum plr_class { PC_WARRIOR = 0x0, PC_ROGUE = 0x1, PC_SORCERER = 0x2, +#ifdef HELLFIRE + PC_MONK = 0x3, + PC_BARD = 0x4, + PC_BARBARIAN = 0x5, +#endif NUM_CLASSES } plr_class; @@ -2854,7 +3039,7 @@ typedef enum anim_weapon_id { } anim_weapon_id; typedef enum anim_armor_id { - ANIM_ID_LIGHT_ARMOR = 0x00, + ANIM_ID_LIGHT_ARMOR = 0x00, #ifndef SPAWN ANIM_ID_MEDIUM_ARMOR = 0x10, ANIM_ID_HEAVY_ARMOR = 0x20 From 06bdf57f0db44d53b9283c5bd687910cd03dbdf6 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 14 Aug 2019 20:09:18 +0200 Subject: [PATCH 4/4] [Hellfire] OperateSlainHero --- Source/objects.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Source/objects.cpp b/Source/objects.cpp index d30428e54..e7946e0f6 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2697,6 +2697,17 @@ void OperateSlainHero(int pnum, int i, BOOL sendmsg) CreateSpellBook(object[i]._ox, object[i]._oy, SPL_LIGHTNING, FALSE, TRUE); #ifndef SPAWN PlaySfxLoc(PS_MAGE9, plr[myplr].WorldX, plr[myplr].WorldY); +#endif +#ifdef HELLFIRE + } else if (plr[pnum]._pClass == PC_MONK) { + CreateMagicWeapon(object[i]._ox, object[i]._oy, ITYPE_STAFF, ICURS_WAR_STAFF, FALSE, TRUE); + PlaySfxLoc(PS_MONK9, plr[myplr].WorldX, plr[myplr].WorldY); + } else if (plr[pnum]._pClass == PC_BARD) { + CreateMagicWeapon(object[i]._ox, object[i]._oy, ITYPE_SWORD, ICURS_BASTARD_SWORD, FALSE, TRUE); + PlaySfxLoc(PS_ROGUE9, plr[myplr].WorldX, plr[myplr].WorldY); + } else if (plr[pnum]._pClass == PC_BARBARIAN) { + CreateMagicWeapon(object[i]._ox, object[i]._oy, ITYPE_AXE, ICURS_BATTLE_AXE, FALSE, TRUE); + PlaySfxLoc(PS_WARR9, plr[myplr].WorldX, plr[myplr].WorldY); #endif } if (pnum == myplr)