WIP: low-ring conveyance fixups

This commit is contained in:
AJ Martinez 2024-03-03 00:46:21 -07:00
parent 09d2644241
commit 647ab66c2f
5 changed files with 46 additions and 0 deletions

View file

@ -987,6 +987,7 @@ struct player_t
INT16 incontrol; // -1 to -175 when spinning out or tumbling, 1 to 175 when not. Use to check for combo hits or emergency inputs.
UINT16 progressivethrust; // When getting beat up in GTR_BUMPERS, speed up the longer you've been out of control.
UINT8 ringvisualwarning;
boolean analoginput; // Has an input been recorded that requires analog usage? For input display.

View file

@ -8437,6 +8437,20 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
debtflag->color = player->skincolor;
debtflag->fuse = 2;
if (!(gametyperules & GTR_SPHERES))
{
P_SetScale(debtflag,
Easing_InQuint(
min(FRACUNIT, FRACUNIT*player->ringvisualwarning/(TICRATE*3)),
debtflag->scale,
debtflag->scale*2
)
);
if (player->ringvisualwarning <= 1)
debtflag->renderflags = K_GetPlayerDontDrawFlag(player);
}
}
if (player->springstars && (leveltime & 1))
@ -9013,6 +9027,21 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->incontrol++;
}
if (player->rings <= 0)
{
if (player->ringvisualwarning > 1)
player->ringvisualwarning--;
}
else
{
player->ringvisualwarning = 0;
}
if (player->ringvisualwarning == 0 && player->rings <= 0)
{
player->ringvisualwarning = 6*TICRATE/2;
}
player->incontrol = min(player->incontrol, 5*TICRATE);
player->incontrol = max(player->incontrol, -5*TICRATE);

View file

@ -263,6 +263,8 @@ static int player_get(lua_State *L)
lua_pushboolean(L, plr->incontrol);
else if (fastcmp(field,"progressivethrust"))
lua_pushboolean(L, plr->progressivethrust);
else if (fastcmp(field,"ringvisualwarning"))
lua_pushboolean(L, plr->ringvisualwarning);
else if (fastcmp(field,"dotrickfx"))
lua_pushboolean(L, plr->dotrickfx);
else if (fastcmp(field,"bumperinflate"))
@ -801,6 +803,8 @@ static int player_set(lua_State *L)
plr->incontrol = luaL_checkinteger(L, 3);
else if (fastcmp(field,"progressivethrust"))
plr->progressivethrust = luaL_checkboolean(L, 3);
else if (fastcmp(field,"ringvisualwarning"))
plr->ringvisualwarning = luaL_checkboolean(L, 3);
else if (fastcmp(field,"analoginput"))
plr->markedfordeath = luaL_checkboolean(L, 3);
else if (fastcmp(field,"markedfordeath"))

View file

@ -3522,6 +3522,16 @@ void A_AttractChase(mobj_t *actor)
S_ReducedVFXSoundAtVolume(actor->target, sfx_s1b5, actor->target->player->ringvolume, NULL);
if (actor->target->player->rings <= 10 && P_IsDisplayPlayer(actor->target->player))
{
S_ReducedVFXSoundAtVolume(actor->target, sfx_gshab,
255 - 10*actor->target->player->rings
, NULL);
if (actor->target->player->rings == 0)
S_ReducedVFXSoundAtVolume(actor->target, sfx_gshad, 255, NULL);
}
actor->target->player->ringvolume -= RINGVOLUMEUSEPENALTY;
sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS);

View file

@ -598,6 +598,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEINT16(save->p, players[i].incontrol);
WRITEUINT16(save->p, players[i].progressivethrust);
WRITEUINT8(save->p, players[i].ringvisualwarning);
WRITEUINT8(save->p, players[i].analoginput);
@ -1184,6 +1185,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
players[i].incontrol = READINT16(save->p);
players[i].progressivethrust = READUINT16(save->p);
players[i].ringvisualwarning = READUINT8(save->p);
players[i].analoginput = READUINT8(save->p);