Negative edge Overdrive

This commit is contained in:
Antonio Martinez 2024-08-24 18:37:57 -07:00
parent 5f7d08fd3c
commit 01dcfafe5c
6 changed files with 32 additions and 2 deletions

View file

@ -1038,6 +1038,7 @@ struct player_t
UINT16 overdrive;
UINT16 overshield;
fixed_t overdrivepower;
UINT8 overdriveready;
UINT8 itemflags; // holds IF_ flags (see itemflags_t)

View file

@ -4125,6 +4125,15 @@ boolean K_Overdrive(player_t *player)
if (player->amps == 0)
return false;
if (player->cmd.buttons & BT_ATTACK)
{
player->overdriveready = OVERDRIVE_STARTUP + 2; // Activates on 1, decremented BEFORE we call this again
return false;
}
if (player->overdriveready > 1)
return false;
K_SpawnDriftBoostExplosion(player, 3);
K_SpawnDriftElectricSparks(player, player->skincolor, true);
S_StartSound(player->mo, sfx_cdfm35);
@ -4135,6 +4144,7 @@ boolean K_Overdrive(player_t *player)
player->overdrivepower = FRACUNIT;
player->amps = 0;
player->overdriveready = 0;
return true;
}
@ -9183,6 +9193,17 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->wavedashboost--;
}
if (player->overdriveready)
{
if (player->amps == 0 || player->rings > 0)
player->overdriveready = 0;
else
{
player->overdriveready--;
K_Overdrive(player);
}
}
if (player->overdrive > 0 && onground == true)
{
player->overdrive--;

View file

@ -50,6 +50,8 @@ Make sure this matches the actual number of states
#define MINCOMBOFLOAT (mapobjectscale*1)
#define MAXCOMBOTIME (TICRATE*4)
#define OVERDRIVE_STARTUP (0)
#define AMPLEVEL (30)
#define FLAMESHIELD_MAX (120)

View file

@ -374,6 +374,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->wavedashpower);
else if (fastcmp(field,"overdrivepower"))
lua_pushinteger(L, plr->overdrivepower);
else if (fastcmp(field,"overdriveready"))
lua_pushinteger(L, plr->overdriveready);
else if (fastcmp(field,"speedpunt"))
lua_pushinteger(L, plr->speedpunt);
else if (fastcmp(field,"trickcharge"))
@ -950,6 +952,8 @@ static int player_set(lua_State *L)
plr->wavedashpower = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdrivepower"))
plr->overdrivepower = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdriveready"))
plr->overdriveready = luaL_checkinteger(L, 3);
else if (fastcmp(field,"speedpunt"))
plr->speedpunt = luaL_checkinteger(L, 3);
else if (fastcmp(field,"trickcharge"))

View file

@ -151,12 +151,12 @@ void Obj_AmpBodyThink (mobj_t *amps)
amps->angle = amps->target->angle;
amps->renderflags |= RF_ADD|RF_FULLBRIGHT;
if (player->overdrive)
if (player->overdrive || player->overdriveready)
amps->renderflags &= ~RF_DONTDRAW;
else
amps->renderflags |= RF_DONTDRAW;
if (player->overdrive < 35 && player->overdrive % 2)
if ((player->overdrive < 35 && player->overdrive % 2) || (player->overdriveready && leveltime % 2))
amps->renderflags |= RF_DONTDRAW;
}
}

View file

@ -587,6 +587,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEUINT16(save->p, players[i].overshield);
WRITEFIXED(save->p, players[i].wavedashpower);
WRITEFIXED(save->p, players[i].overdrivepower);
WRITEUINT8(save->p, players[i].overdriveready);
WRITEUINT16(save->p, players[i].speedpunt);
WRITEUINT16(save->p, players[i].trickcharge);
@ -1201,6 +1202,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
players[i].overshield = READUINT16(save->p);
players[i].wavedashpower = READFIXED(save->p);
players[i].overdrivepower = READFIXED(save->p);
players[i].overdriveready = READUINT8(save->p);
players[i].speedpunt = READUINT16(save->p);
players[i].trickcharge = READUINT16(save->p);