Merge branch 'p-speed-damage-soften' into 'master'

Downgrade damage when tripwire lenient

Closes #1375

See merge request kart-krew-dev/ring-racers-internal!2557
This commit is contained in:
Oni VelocitOni 2025-05-20 22:31:29 +00:00
commit 35ab0bd52c
2 changed files with 27 additions and 5 deletions

View file

@ -229,7 +229,8 @@ boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2)
{
P_DamageMobj(t2, t1, t1->target, 1, DMG_WOMBO |
(tumbleitem ? DMG_TUMBLE : DMG_WIPEOUT));
K_KartBouncing(t2, t1);
if (tumbleitem || (gametyperules & GTR_SPHERES) || !t2->player->tripwireLeniency)
K_KartBouncing(t2, t1);
}
S_StartSound(t2, sfx_s3k7b);

View file

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