From cd2f7fc4d4bbe54ca01c9ed4141358396adb6db6 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 19 Sep 2020 14:12:40 +0200 Subject: [PATCH] Fix mapping objects and monsters Added sound to fire trap lever Added damage to fire trap Fix rendering of skull pile Remove one to many hellfire monsters Remove duplicate items from ObjTypeConv Remove slain hero (crashes game on low level heros) Remove water (it's miss aligned and not realy useful) Added trap variants of all chests Added book stand Removed door objects (they aren't of much use and will crash the game if used on the wrong levels) Rmoved all story books (crashes game if not use on the right level, tied to specific quests etc) --- Source/monstdat.cpp | 53 ++++++++++++++++++++++----------------------- Source/objdat.cpp | 18 ++++----------- Source/objects.cpp | 15 +++++++++++++ 3 files changed, 45 insertions(+), 41 deletions(-) diff --git a/Source/monstdat.cpp b/Source/monstdat.cpp index 41a587b8c..a7eea5f9f 100644 --- a/Source/monstdat.cpp +++ b/Source/monstdat.cpp @@ -257,33 +257,32 @@ BYTE MonstConvTbl[] = { MT_NZOMBIE, MT_BIGFALL, MT_DARKMAGE, - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire - 0, // Reserved for Hellfire + 0, // Hellfire: Hellboar + 0, // Hellfire: Stinger + 0, // Hellfire: Psychorb + 0, // Hellfire: Arachnon + 0, // Hellfire: Felltwin + 0, // Hellfire: Hork Spawn + 0, // Hellfire: Stinger (duplicate) + 0, // Hellfire: Psychorb (duplicate) + 0, // Hellfire: Arachnon (duplicate) + 0, // Hellfire: Lashworm + 0, // Hellfire: Torchant + 0, // Hellfire: Hork Demon + 0, // Hellfire: Hell Bug + 0, // Hellfire: Gravedigger + 0, // Hellfire: Tomb Rat + 0, // Hellfire: Firebat + 0, // Hellfire: Skullwing + 0, // Hellfire: Lich + 0, // Hellfire: Crypt Demon + 0, // Hellfire: Firebat (duplicate) + 0, // Hellfire: Skullwing (duplicate) + 0, // Hellfire: Lich (duplicate) + 0, // Hellfire: Biclops + 0, // Hellfire: Flesh Thing + 0, // Hellfire: Reaper + 0, // Hellfire: Na-Krul MT_CLEAVER, MT_INVILORD, MT_LRDSAYTR, diff --git a/Source/objdat.cpp b/Source/objdat.cpp index 0b1082595..3d709cead 100644 --- a/Source/objdat.cpp +++ b/Source/objdat.cpp @@ -127,12 +127,8 @@ int ObjTypeConv[] = { OBJ_BOOKSHELF, OBJ_BOOKCASEL, OBJ_BOOKCASER, - OBJ_ARMORSTAND, OBJ_ARMORSTANDN, - OBJ_WEAPONRACK, OBJ_WEAPONRACKN, - OBJ_SLAINHERO, - OBJ_WATER, OBJ_BLOODFTN, OBJ_PURIFYINGFTN, OBJ_SHRINEL, @@ -141,17 +137,11 @@ int ObjTypeConv[] = { OBJ_MURKYFTN, OBJ_TEARFTN, OBJ_DECAP, + OBJ_TCHEST1, OBJ_TCHEST2, - OBJ_STORYBOOK, - OBJ_L1LDOOR, - OBJ_L1RDOOR, - OBJ_L2LDOOR, - OBJ_L2RDOOR, - OBJ_L3LDOOR, - OBJ_L3RDOOR, - OBJ_BLINDBOOK, - OBJ_BLOODBOOK, + OBJ_TCHEST3, OBJ_LAZSTAND, + OBJ_BOOKSTAND, }; /** Contains the data related to each object ID. */ @@ -172,7 +162,7 @@ ObjDataStruct AllObjects[99] = { { 3, OFILE_BANNER, 0, 0, DTYPE_TOWN, THEME_SKELROOM, -1, 0, 2, 0, 96, TRUE, TRUE, TRUE, 0, 0, FALSE }, { 3, OFILE_BANNER, 0, 0, DTYPE_TOWN, THEME_SKELROOM, -1, 0, 1, 0, 96, TRUE, TRUE, TRUE, 0, 0, FALSE }, { 3, OFILE_BANNER, 0, 0, DTYPE_TOWN, THEME_SKELROOM, -1, 0, 3, 0, 96, TRUE, TRUE, TRUE, 0, 0, FALSE }, - { 2, OFILE_SKULPILE, 1, 4, DTYPE_TOWN, THEME_NONE, -1, 0, 0, 1, 96, TRUE, TRUE, TRUE, 0, 0, FALSE }, + { 2, OFILE_SKULPILE, 1, 4, DTYPE_TOWN, THEME_NONE, -1, 0, 1, 1, 96, TRUE, TRUE, TRUE, 0, 0, FALSE }, { 2, OFILE_L1BRAZ, 0, 0, DTYPE_TOWN, THEME_NONE, -1, 0, 0, 0, 0, FALSE, FALSE, FALSE, 0, 0, FALSE }, { 2, OFILE_L1BRAZ, 0, 0, DTYPE_TOWN, THEME_NONE, -1, 0, 0, 0, 0, FALSE, FALSE, FALSE, 0, 0, FALSE }, { 2, OFILE_L1BRAZ, 0, 0, DTYPE_TOWN, THEME_NONE, -1, 0, 0, 0, 0, FALSE, FALSE, FALSE, 0, 0, FALSE }, diff --git a/Source/objects.cpp b/Source/objects.cpp index 9593b1f86..10e63432d 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1622,6 +1622,18 @@ void Obj_FlameTrap(int i) if (object[i]._oVar4) ActivateTrapLine(object[i]._otype, object[i]._oVar1); } else { + int damage[4] = { 6, 8, 10, 12 }; + + int mindam = damage[leveltype - 1]; + int maxdam = mindam * 2; + + x = object[i]._ox; + y = object[i]._oy; + if (dMonster[x][y] > 0) + MonsterTrapHit(dMonster[x][y] - 1, mindam / 2, maxdam / 2, 0, MIS_FIREWALLC, FALSE); + if (dPlayer[x][y] > 0) + PlayerMHit(dPlayer[x][y] - 1, -1, 0, mindam, maxdam, MIS_FIREWALLC, FALSE, 0); + if (object[i]._oAnimFrame == object[i]._oAnimLen) object[i]._oAnimFrame = 11; if (object[i]._oAnimFrame <= 5) @@ -2672,6 +2684,9 @@ void OperateTrapLvr(int i) frame = object[i]._oAnimFrame; j = 0; + if (!deltaload) + PlaySfxLoc(IS_LEVER, object[i]._ox, object[i]._oy); + if (frame == 1) { object[i]._oAnimFrame = 2; for (; j < nobjects; j++) {