mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'aerial-boost-shenanigans' into 'master'
Tripwire leniency decreases at 1/5x speed in the air See merge request kart-krew-dev/ring-racers-internal!2656
This commit is contained in:
commit
bb9d461aca
4 changed files with 34 additions and 3 deletions
|
|
@ -791,6 +791,7 @@ struct player_t
|
||||||
UINT8 tripwireState; // see tripwirestate_t
|
UINT8 tripwireState; // see tripwirestate_t
|
||||||
UINT8 tripwirePass; // see tripwirepass_t
|
UINT8 tripwirePass; // see tripwirepass_t
|
||||||
UINT16 tripwireLeniency; // When reaching a state that lets you go thru tripwire, you get an extra second leniency after it ends to still go through it.
|
UINT16 tripwireLeniency; // When reaching a state that lets you go thru tripwire, you get an extra second leniency after it ends to still go through it.
|
||||||
|
UINT8 tripwireAirLeniency; // Timer that elongates tripwire leniency when in midair.
|
||||||
UINT8 fakeBoost; // Some items need to grant tripwire pass briefly, even when their effect is thrust/instathrust. This is a fake boost type to control that.
|
UINT8 fakeBoost; // Some items need to grant tripwire pass briefly, even when their effect is thrust/instathrust. This is a fake boost type to control that.
|
||||||
|
|
||||||
itemroulette_t itemRoulette; // Item roulette data
|
itemroulette_t itemRoulette; // Item roulette data
|
||||||
|
|
|
||||||
30
src/k_kart.c
30
src/k_kart.c
|
|
@ -9295,19 +9295,43 @@ static void K_UpdateTripwire(player_t *player)
|
||||||
// so that stripping Garden Top feels consistent.
|
// so that stripping Garden Top feels consistent.
|
||||||
if (triplevel == TRIPWIRE_NONE || triplevel == TRIPWIRE_CONSUME)
|
if (triplevel == TRIPWIRE_NONE || triplevel == TRIPWIRE_CONSUME)
|
||||||
{
|
{
|
||||||
|
// Peek at the relevant values:
|
||||||
|
/*
|
||||||
|
if (player->airtime == 0)
|
||||||
|
CONS_Printf("airtime: , twLen: %d, twAirLen: %d\n", player->tripwireLeniency, player->tripwireAirLeniency);
|
||||||
|
else
|
||||||
|
CONS_Printf("airtime: %d, twLen: %d, twAirLen: %d\n", player->airtime, player->tripwireLeniency, player->tripwireAirLeniency);
|
||||||
|
*/
|
||||||
|
|
||||||
if (boostExists)
|
if (boostExists)
|
||||||
{
|
{
|
||||||
player->tripwireLeniency--;
|
// If player is MOSTLY on the ground.
|
||||||
if (goodSpeed == false && player->tripwireLeniency > 0)
|
// Takes 3 tics to be considered midair, because midair leniency is NOT meant for twerking
|
||||||
|
if (player->airtime < 3)
|
||||||
{
|
{
|
||||||
// Decrease at double speed when your speed is bad.
|
|
||||||
player->tripwireLeniency--;
|
player->tripwireLeniency--;
|
||||||
|
if (goodSpeed == false && player->tripwireLeniency > 0)
|
||||||
|
{
|
||||||
|
// Decrease at double speed when your speed is bad.
|
||||||
|
player->tripwireLeniency--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ...Until they're NOT, in which case tripwire leniency is reduced at a decimal rate!
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player->tripwireAirLeniency++;
|
||||||
|
if (player->tripwireAirLeniency >= 5) // Once every 5 tics
|
||||||
|
{
|
||||||
|
player->tripwireAirLeniency = 0;
|
||||||
|
player->tripwireLeniency--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->tripwireLeniency <= 0 && triplevel == TRIPWIRE_NONE)
|
if (player->tripwireLeniency <= 0 && triplevel == TRIPWIRE_NONE)
|
||||||
{
|
{
|
||||||
player->tripwirePass = TRIPWIRE_NONE;
|
player->tripwirePass = TRIPWIRE_NONE;
|
||||||
|
player->tripwireAirLeniency = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -378,6 +378,8 @@ static int player_get(lua_State *L)
|
||||||
lua_pushinteger(L, plr->fakeBoost);
|
lua_pushinteger(L, plr->fakeBoost);
|
||||||
else if (fastcmp(field,"tripwireleniency"))
|
else if (fastcmp(field,"tripwireleniency"))
|
||||||
lua_pushinteger(L, plr->tripwireLeniency);
|
lua_pushinteger(L, plr->tripwireLeniency);
|
||||||
|
else if (fastcmp(field,"tripwireairleniency"))
|
||||||
|
lua_pushinteger(L, plr->tripwireAirLeniency);
|
||||||
else if (fastcmp(field,"tripwirerebounddelay"))
|
else if (fastcmp(field,"tripwirerebounddelay"))
|
||||||
lua_pushinteger(L, plr->tripwireReboundDelay);
|
lua_pushinteger(L, plr->tripwireReboundDelay);
|
||||||
else if (fastcmp(field,"eggmantransferdelay"))
|
else if (fastcmp(field,"eggmantransferdelay"))
|
||||||
|
|
@ -1021,6 +1023,8 @@ static int player_set(lua_State *L)
|
||||||
plr->fakeBoost = luaL_checkinteger(L, 3);
|
plr->fakeBoost = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"tripwireleniency"))
|
else if (fastcmp(field,"tripwireleniency"))
|
||||||
plr->tripwireLeniency = luaL_checkinteger(L, 3);
|
plr->tripwireLeniency = luaL_checkinteger(L, 3);
|
||||||
|
else if (fastcmp(field,"tripwireairleniency"))
|
||||||
|
plr->tripwireAirLeniency = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"tripwirerebounddelay"))
|
else if (fastcmp(field,"tripwirerebounddelay"))
|
||||||
plr->tripwireReboundDelay = luaL_checkinteger(L, 3);
|
plr->tripwireReboundDelay = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"eggmantransferdelay"))
|
else if (fastcmp(field,"eggmantransferdelay"))
|
||||||
|
|
|
||||||
|
|
@ -520,6 +520,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
||||||
WRITEUINT8(save->p, players[i].tripwireState);
|
WRITEUINT8(save->p, players[i].tripwireState);
|
||||||
WRITEUINT8(save->p, players[i].tripwirePass);
|
WRITEUINT8(save->p, players[i].tripwirePass);
|
||||||
WRITEUINT16(save->p, players[i].tripwireLeniency);
|
WRITEUINT16(save->p, players[i].tripwireLeniency);
|
||||||
|
WRITEUINT8(save->p, players[i].tripwireAirLeniency);
|
||||||
WRITEUINT8(save->p, players[i].fakeBoost);
|
WRITEUINT8(save->p, players[i].fakeBoost);
|
||||||
|
|
||||||
WRITESINT8(save->p, players[i].itemtype);
|
WRITESINT8(save->p, players[i].itemtype);
|
||||||
|
|
@ -1182,6 +1183,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
||||||
players[i].tripwireState = READUINT8(save->p);
|
players[i].tripwireState = READUINT8(save->p);
|
||||||
players[i].tripwirePass = READUINT8(save->p);
|
players[i].tripwirePass = READUINT8(save->p);
|
||||||
players[i].tripwireLeniency = READUINT16(save->p);
|
players[i].tripwireLeniency = READUINT16(save->p);
|
||||||
|
players[i].tripwireAirLeniency = READUINT8(save->p);
|
||||||
players[i].fakeBoost = READUINT8(save->p);
|
players[i].fakeBoost = READUINT8(save->p);
|
||||||
|
|
||||||
players[i].itemtype = READSINT8(save->p);
|
players[i].itemtype = READSINT8(save->p);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue