mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-20 06:53:00 +00:00
Merge branch 'extended-whip-whiff' into 'master'
Extended Insta-Whip punish window See merge request kart-krew-dev/ring-racers-internal!2758
This commit is contained in:
commit
15390c97d0
5 changed files with 18 additions and 8 deletions
|
|
@ -1101,12 +1101,14 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
|
||||||
if (K_TryPickMeUp(attacker, victim, true))
|
if (K_TryPickMeUp(attacker, victim, true))
|
||||||
{
|
{
|
||||||
shield->hitlag = attacker->hitlag; // players hitlag is handled in K_TryPickMeUp, and we need to set for the shield too
|
shield->hitlag = attacker->hitlag; // players hitlag is handled in K_TryPickMeUp, and we need to set for the shield too
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
P_DamageMobj(victim, shield, attacker, 1, DMG_NORMAL);
|
P_DamageMobj(victim, shield, attacker, 1, DMG_NORMAL);
|
||||||
K_AddHitLag(attacker, attackerHitlag, false);
|
K_AddHitLag(attacker, attackerHitlag, false);
|
||||||
shield->hitlag = attacker->hitlag;
|
shield->hitlag = attacker->hitlag;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -14454,7 +14454,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
// which is allowed during painstate as a last-ditch defensive option.
|
// which is allowed during painstate as a last-ditch defensive option.
|
||||||
if (player && player->mo && player->mo->health > 0 && !player->spectator && !mapreset && leveltime > introtime)
|
if (player && player->mo && player->mo->health > 0 && !player->spectator && !mapreset && leveltime > introtime)
|
||||||
{
|
{
|
||||||
boolean chargingwhip = (cmd->buttons & BT_ATTACK) && (player->rings <= 0) && (!player->instaWhipChargeLockout) && (!player->itemRoulette.active);
|
boolean chargingwhip = (cmd->buttons & BT_ATTACK) && (player->rings <= 0) && (!player->instaWhipChargeLockout) && (player->defenseLockout <= PUNISHWINDOW) && (!player->itemRoulette.active);
|
||||||
boolean releasedwhip = (!(cmd->buttons & BT_ATTACK)) && (player->rings <= 0 && player->instaWhipCharge) && !(P_PlayerInPain(player));
|
boolean releasedwhip = (!(cmd->buttons & BT_ATTACK)) && (player->rings <= 0 && player->instaWhipCharge) && !(P_PlayerInPain(player));
|
||||||
|
|
||||||
if (K_PowerUpRemaining(player, POWERUP_BADGE))
|
if (K_PowerUpRemaining(player, POWERUP_BADGE))
|
||||||
|
|
@ -14530,7 +14530,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
player->instaWhipCharge = 0;
|
player->instaWhipCharge = 0;
|
||||||
if (!K_PowerUpRemaining(player, POWERUP_BARRIER))
|
if (!K_PowerUpRemaining(player, POWERUP_BARRIER))
|
||||||
{
|
{
|
||||||
player->defenseLockout = PUNISHWINDOW;
|
player->defenseLockout = 2*PUNISHWINDOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
S_StartSound(player->mo, sfx_iwhp);
|
S_StartSound(player->mo, sfx_iwhp);
|
||||||
|
|
|
||||||
|
|
@ -3503,7 +3503,8 @@ void A_AttractChase(mobj_t *actor)
|
||||||
|
|
||||||
if (actor->extravalue1 && actor->type != MT_EMERALD) // SRB2Kart
|
if (actor->extravalue1 && actor->type != MT_EMERALD) // SRB2Kart
|
||||||
{
|
{
|
||||||
if (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player || actor->target->player->baildrop || actor->target->player->bailcharge)
|
if (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player
|
||||||
|
|| actor->target->player->baildrop || actor->target->player->bailcharge || actor->target->player->defenseLockout > PUNISHWINDOW)
|
||||||
{
|
{
|
||||||
P_RemoveMobj(actor);
|
P_RemoveMobj(actor);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -731,7 +731,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
if (player->instaWhipCharge)
|
if (player->instaWhipCharge)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (player->baildrop || player->bailcharge)
|
if (player->baildrop || player->bailcharge || player->defenseLockout > PUNISHWINDOW)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Don't immediately pick up spilled rings
|
// Don't immediately pick up spilled rings
|
||||||
|
|
|
||||||
|
|
@ -749,7 +749,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
return BMIT_CONTINUE; // overhead
|
return BMIT_CONTINUE; // overhead
|
||||||
if (g_tm.thing->z + g_tm.thing->height < thing->z)
|
if (g_tm.thing->z + g_tm.thing->height < thing->z)
|
||||||
return BMIT_CONTINUE; // underneath
|
return BMIT_CONTINUE; // underneath
|
||||||
K_InstaWhipCollide(g_tm.thing, thing);
|
|
||||||
|
boolean hit = K_InstaWhipCollide(g_tm.thing, thing);
|
||||||
|
if (hit && g_tm.thing->target && !P_MobjWasRemoved(g_tm.thing->target) && g_tm.thing->target->player)
|
||||||
|
{
|
||||||
|
player_t *attacker = g_tm.thing->target->player;
|
||||||
|
if (attacker->defenseLockout > PUNISHWINDOW)
|
||||||
|
attacker->defenseLockout -= PUNISHWINDOW;
|
||||||
|
}
|
||||||
return BMIT_CONTINUE;
|
return BMIT_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue