Orbital/backspam downgrade cleanup

This commit is contained in:
Antonio Martinez 2025-09-22 04:41:42 -04:00
parent 4b94f06186
commit 587eddeb70
3 changed files with 16 additions and 14 deletions

View file

@ -1034,8 +1034,6 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
}
// if you're here, you're getting hit
// Damage is a bit hacky, we want only a small loss-of-control
// while still behaving as if it's a "real" hit.
P_DamageMobj(victim, shield, attacker, 1, DMG_WHUMBLE);
K_DropPowerUps(victimPlayer);

View file

@ -215,18 +215,12 @@ boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2)
else
{
// Player Damage
if ((t1->type == MT_ORBINAUT_SHIELD || t1->type == MT_JAWZ_SHIELD)
&& !t2->player->invincibilitytimer && !K_IsBigger(t2, t1)) // UGH. Stumble ignores invinc. Fix this damage type someday.
{
P_DamageMobj(t2, t1, t1->target, 1, DMG_WOMBO | DMG_WHUMBLE);
}
else
{
P_DamageMobj(t2, t1, t1->target, 1, DMG_WOMBO |
(tumbleitem ? DMG_TUMBLE : DMG_WIPEOUT));
if (tumbleitem || (gametyperules & GTR_SPHERES) || !t2->player->tripwireLeniency)
if (tumbleitem || !t2->player->tripwireLeniency)
if ((gametyperules & GTR_SPHERES) || (t1->type != MT_ORBINAUT_SHIELD && t1->type != MT_JAWZ_SHIELD))
K_KartBouncing(t2, t1);
}
S_StartSound(t2, sfx_s3k7b);
}

View file

@ -3466,12 +3466,22 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
S_StartSound(target, sfx_gshc7);
player->flashing = TICRATE;
type = DMG_STUMBLE;
downgraded = true;
}
// Downgrade backthrown items that are not dedicated traps.
if (inflictor && !P_MobjWasRemoved(inflictor) && P_IsKartItem(inflictor->type) && inflictor->cvmem
&& inflictor->type != MT_BANANA) // Are there other designed trap items that can be deployed and dropped? If you add one, list it here!
&& inflictor->type != MT_BANANA)
{
type = DMG_WHUMBLE;
downgraded = true;
}
// Downgrade orbital items.
if (inflictor && !P_MobjWasRemoved(inflictor) && (inflictor->type == MT_ORBINAUT_SHIELD || inflictor->type == MT_JAWZ_SHIELD))
{
type = DMG_WHUMBLE;
downgraded = true;
}
if (!(gametyperules & GTR_SPHERES) && player->tripwireLeniency && !P_PlayerInPain(player))