Defensive Overdrive when hit into debt

This commit is contained in:
Antonio Martinez 2024-08-04 00:09:16 -07:00
parent ed1dde5788
commit 83be26cd76
3 changed files with 24 additions and 0 deletions

View file

@ -4087,6 +4087,27 @@ boolean K_Overdrive(player_t *player)
return true;
}
boolean K_DefensiveOverdrive(player_t *player)
{
if (player->amps == 0)
return false;
if (player->rings > 0)
return false;
K_SpawnDriftBoostExplosion(player, 3);
K_SpawnDriftElectricSparks(player, player->skincolor, true);
S_StartSound(player->mo, sfx_cdfm35);
S_StartSound(player->mo, sfx_cdfm13);
player->overdrive += (player->amps)*4;
player->overshield += (player->amps)*2 + TICRATE*2;
player->overdrivepower = FRACUNIT;
player->amps = 0;
return true;
}
void K_DoInstashield(player_t *player)
{
mobj_t *layera;

View file

@ -135,6 +135,7 @@ void K_SpawnAmps(player_t *player, UINT8 amps, mobj_t *impact);
void K_AwardPlayerAmps(player_t *player, UINT8 amps);
void K_AwardPlayerRings(player_t *player, UINT16 rings, boolean overload);
boolean K_Overdrive(player_t *player);
boolean K_DefensiveOverdrive(player_t *player);
void K_DoInstashield(player_t *player);
void K_DoPowerClash(mobj_t *t1, mobj_t *t2);
void K_DoGuardBreak(mobj_t *t1, mobj_t *t2);

View file

@ -3357,6 +3357,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
{
player->flipDI = true;
}
K_DefensiveOverdrive(target->player);
}
}
else