From 25455cb7c67c7d20368d7e7b284c6eb084d18ec1 Mon Sep 17 00:00:00 2001 From: Brad Harding Date: Fri, 17 Jan 2025 07:46:18 +1100 Subject: [PATCH] Fix use of `Retro bits = CRUSHABLE` Thanks BEG! See https://www.doomworld.com/forum/post/2888315. --- releasenotes.md | 3 +++ src/info.c | 68 ++++++++++++++++++++++++------------------------- src/p_map.c | 2 +- 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/releasenotes.md b/releasenotes.md index 7e225321f..96582521d 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -12,6 +12,9 @@ * The vertical offsets of the sprites of cacodemons, lost souls and pain elementals have improved when the `r_fixspriteoffsets` CVAR is `on`. * Minor improvements have been made to the fuzz effect applied to spectres. * The `vid_scaleapi` CVAR is now back to `direct3d9` by default. +* These changes have been made to the support of `DEHACKED` lumps: + * `Retro bits = CRUSHABLE` now works as intended. + * The `Hit points` of decorative corpses have been changed from `0` back to `1000`. ![](https://github.com/bradharding/www.doomretro.com/raw/master/wiki/bigdivider.png) diff --git a/src/info.c b/src/info.c index 5d254b20f..45b03f214 100644 --- a/src/info.c +++ b/src/info.c @@ -44,7 +44,7 @@ { \ /* doomednum */ -1, \ /* spawnstate */ 0, \ - /* spawnhealth */ 0, \ + /* spawnhealth */ 1000, \ /* gibhealth */ 0, \ /* giblevel */ 0, \ /* seestate */ S_NULL, \ @@ -121,7 +121,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_DROPOFF | MF_PICKUP | MF_FRIEND), - /* flags2 */ (MF2_PASSMOBJ | MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_PASSMOBJ | MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -171,7 +171,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_posact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_POSS_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -221,7 +221,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_posact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_SPOS_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -271,7 +271,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_vilact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -371,7 +371,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_skeact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_SKEL_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -521,7 +521,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_posact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_FATT_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -621,7 +621,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_posact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP | MF2_NOMIRROREDCORPSE), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP | MF2_NOMIRROREDCORPSE), /* raisestate */ S_CPOS_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -671,7 +671,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_bgact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_TROO_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -721,7 +721,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_SARG_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -771,7 +771,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_FUZZ | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_SARG_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -821,7 +821,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_FLOAT | MF_NOGRAVITY | MF_COUNTKILL), - /* flags2 */ (MF2_PASSMOBJ | MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_PASSMOBJ | MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_HEAD_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -871,7 +871,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_BOSS_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -971,7 +971,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_BOS2_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -1071,7 +1071,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -1121,7 +1121,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_bspact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_BSPI_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -1171,7 +1171,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dmact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP | MF2_NOMIRROREDCORPSE), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP | MF2_NOMIRROREDCORPSE), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -1271,7 +1271,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_posact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_SSWV_RAISE1, /* frames */ 0, /* fullbright */ false, @@ -5644,7 +5644,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadCacodemon, /* spawnstate */ S_HEAD_DIE6, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5669,7 +5669,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5694,7 +5694,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadPlayer, /* spawnstate */ S_PLAY_DIE7, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5719,7 +5719,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5744,7 +5744,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadZombieman, /* spawnstate */ S_POSS_DIE5, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5769,7 +5769,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5794,7 +5794,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadDemon, /* spawnstate */ S_SARG_DIE6, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5819,7 +5819,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5844,7 +5844,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadLostSoulInvisible, /* spawnstate */ S_SKULL_DIE6, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5894,7 +5894,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadImp, /* spawnstate */ S_TROO_DIE5, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5919,7 +5919,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5944,7 +5944,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ DeadShotgunGuy, /* spawnstate */ S_SPOS_DIE5, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 0, /* seestate */ S_NULL, @@ -5969,7 +5969,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_none, /* flags */ MF_CORPSE, - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_DECORATION | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_DECORATION | MF2_FOOTCLIP), /* raisestate */ S_NULL, /* frames */ 0, /* fullbright */ false, @@ -5994,7 +5994,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ BloodyMess1, /* spawnstate */ S_PLAY_XDIE9, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 1, /* seestate */ S_NULL, @@ -6044,7 +6044,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = { /* doomednum */ BloodyMess2, /* spawnstate */ S_PLAY_XDIE9, - /* spawnhealth */ 0, + /* spawnhealth */ 1000, /* gibhealth */ 0, /* giblevel */ 1, /* seestate */ S_NULL, @@ -7069,7 +7069,7 @@ mobjinfo_t original_mobjinfo[NUMMOBJTYPES] = /* damage */ 0, /* activesound */ sfx_dgact, /* flags */ (MF_SOLID | MF_SHOOTABLE | MF_COUNTKILL), - /* flags2 */ (MF2_CASTSHADOW | MF2_CRUSHABLE | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), + /* flags2 */ (MF2_CASTSHADOW | MF2_NOLIQUIDBOB | MF2_FOOTCLIP), /* raisestate */ S_DOGS_RAISE1, /* frames */ 0, /* fullbright */ false, diff --git a/src/p_map.c b/src/p_map.c index 950b9e750..79cf72083 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -2126,7 +2126,7 @@ static void PIT_ChangeSector(mobj_t *thing) flags = thing->flags; // crunch bodies to giblets - if (thing->health <= 0 && (thing->flags2 & MF2_CRUSHABLE)) + if ((flags & MF_CORPSE) || (thing->flags2 & MF2_CRUSHABLE)) { if (thing->player) {