From 307001611e1cdcf72a5521f8515d34bd5b0202c6 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Mon, 29 Sep 2025 22:01:43 +0200 Subject: [PATCH 1/4] Make exploding dragged mines hit the player dragging it again (closes #133) baby mine explosions lmao --- src/p_enemy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index beab8cb18..19f15a11e 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -11187,7 +11187,7 @@ void A_SSMineExplode(mobj_t *actor) INT32 locvar1 = var1; mobjtype_t type; skincolornum_t color = SKINCOLOR_KETCHUP; - explodedist = FixedMul((3*actor->info->painchance)/2, actor->scale); + explodedist = FixedMul((3*actor->info->painchance)/2, mapobjectscale); if (LUA_CallAction(A_SSMINEEXPLODE, actor)) return; From db413996907f79d75e7d9344e531a87002c4525e Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Mon, 29 Sep 2025 22:27:56 +0200 Subject: [PATCH 2/4] Fix flame shield not melting items (closes #140) --- src/k_collide.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/k_collide.c b/src/k_collide.c index e66d35f40..eefd54f9b 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -63,7 +63,7 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player->hyudorotimer) return true; // no interaction - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -159,7 +159,7 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) damageitem = true; - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -249,7 +249,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) t2->player->roulettetype = KROULETTETYPE_EGGMAN; } - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -381,7 +381,7 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) if (t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); From 7e810c6923a3a78ea16eb3a5e30f53532174a322 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Tue, 30 Sep 2025 00:24:35 +0200 Subject: [PATCH 3/4] Fix item boxes inside bustable FOFs messing up collision (closes #100) --- src/p_enemy.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 19f15a11e..dbd35965b 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -10632,7 +10632,8 @@ void A_ItemPop(mobj_t *actor) remains->skin = NULL; remains->spawnpoint = actor->spawnpoint; - P_SetTarget(&g_tm.thing, remains); + // a pointless modification of global state causing bizarre collision problems... who could've thought? + //P_SetTarget(&g_tm.thing, remains); //if (actor->info->deathsound) //S_StartSound(remains, actor->info->deathsound); From 9e648d859d5439ef83d59d606f81510e9947d229 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Mon, 29 Sep 2025 21:02:02 -0400 Subject: [PATCH 4/4] Fix saltyhop being broken in software --- src/hardware/hw_main.c | 6 +++--- src/r_things.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 34ab268be..9d6362c5c 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4920,11 +4920,11 @@ static void HWR_ProjectSprite(mobj_t *thing) if (thing->renderflags & RF_ABSOLUTEOFFSETS) { - spr_offset = interp.spritexoffset; + spr_offset = FixedDiv(interp.spritexoffset,highresscale); #ifdef ROTSPRITE - spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); + spr_topoffset = (FixedDiv(interp.spriteyoffset,highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); #else - spr_topoffset = interp.spriteyoffset; + spr_topoffset = FixedDiv(interp.spriteyoffset,highresscale); #endif } else diff --git a/src/r_things.cpp b/src/r_things.cpp index bac424e52..e5309cf3a 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1968,11 +1968,11 @@ static void R_ProjectSprite(mobj_t *thing) if (thing->renderflags & RF_ABSOLUTEOFFSETS) { - spr_offset = interp.spritexoffset; + spr_offset = FixedDiv(interp.spritexoffset, highresscale); #ifdef ROTSPRITE - spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); + spr_topoffset = (FixedDiv(interp.spriteyoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); #else - spr_topoffset = interp.spriteyoffset; + spr_topoffset = FixedDiv(interp.spriteyoffset, highresscale); #endif } else @@ -1984,7 +1984,7 @@ static void R_ProjectSprite(mobj_t *thing) spr_offset += FixedDiv(interp.spritexoffset, highresscale) * flipoffset; #ifdef ROTSPRITE - spr_topoffset += (FixedDiv(interp.spritexoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)) * flipoffset; + spr_topoffset += (FixedDiv(interp.spriteyoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)) * flipoffset; #else spr_topoffset += FixedDiv(interp.spriteyoffset, highresscale) * flipoffset; #endif