Downgrade damage when tripwire lenient

This commit is contained in:
Antonio Martinez 2025-05-20 14:12:05 -04:00
parent f2c92efa67
commit 91b15905d2

View file

@ -3190,7 +3190,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
damage = 0; damage = 0;
} }
boolean hitFromInvinc = false; boolean softenTumble = false;
// Sting and stumble shouldn't be rewarding Battle hits. // Sting and stumble shouldn't be rewarding Battle hits.
if (type == DMG_STING || type == DMG_STUMBLE) if (type == DMG_STING || type == DMG_STUMBLE)
@ -3212,7 +3212,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
{ {
tic_t kinvextend; tic_t kinvextend;
hitFromInvinc = true; softenTumble = true;
if (gametyperules & GTR_CLOSERPLAYERS) if (gametyperules & GTR_CLOSERPLAYERS)
kinvextend = 2*TICRATE; kinvextend = 2*TICRATE;
@ -3332,6 +3332,26 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
K_PopPlayerShield(player); K_PopPlayerShield(player);
} }
if (!(gametyperules & GTR_SPHERES) && player->tripwireLeniency)
{
switch (type)
{
case DMG_EXPLODE:
type = DMG_TUMBLE;
break;
case DMG_TUMBLE:
softenTumble = true;
break;
case DMG_NORMAL:
type = DMG_STUMBLE;
player->ringburst += 5; // THERE IS SIMPLY NO HOPE AT THIS POINT
K_PopPlayerShield(player);
break;
default:
break;
}
}
switch (type) switch (type)
{ {
case DMG_STING: case DMG_STING:
@ -3345,7 +3365,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
ringburst = 0; ringburst = 0;
break; break;
case DMG_TUMBLE: case DMG_TUMBLE:
K_TumblePlayer(player, inflictor, source, hitFromInvinc); K_TumblePlayer(player, inflictor, source, softenTumble);
ringburst = 10; ringburst = 10;
break; break;
case DMG_EXPLODE: case DMG_EXPLODE:
@ -3389,7 +3409,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
if (gametyperules & GTR_BUMPERS) if (gametyperules & GTR_BUMPERS)
player->spheres = min(player->spheres + 10, 40); player->spheres = min(player->spheres + 10, 40);
if ((hardhit == true && !hitFromInvinc) || cv_kartdebughuddrop.value) if ((hardhit == true && !softenTumble) || cv_kartdebughuddrop.value)
{ {
K_DropItems(player); K_DropItems(player);
} }