release accel to stop waterskipping
This commit is contained in:
minenice55 2025-12-14 20:34:56 -05:00
parent bc96bbba4c
commit 66dcc5c1db
7 changed files with 70 additions and 1 deletions

View file

@ -582,6 +582,8 @@ consvar_t cv_kartairthrust_power2 = CVAR_INIT ("kartairthrust_power2", "0.35", C
consvar_t cv_kartairthrust_power3 = CVAR_INIT ("kartairthrust_power3", "0.5", CV_NETVAR|CV_FLOAT|CV_CHEAT|CV_GUARD, CV_Unsigned, NULL);
consvar_t cv_kartairthrust_power4 = CVAR_INIT ("kartairthrust_power4", "0.75", CV_NETVAR|CV_FLOAT|CV_CHEAT|CV_GUARD, CV_Unsigned, NULL);
consvar_t cv_kartwaterskiplock = CVAR_INIT ("kartwaterskiplock", "No", CV_NETVAR|CV_CALL|CV_NOINIT|CV_GUARD, CV_YesNo, KartWaterSkipLock_OnChange);
consvar_t cv_kartitemlitter = CVAR_INIT ("kartitemlitter", "On", CV_NETVAR|CV_CALL|CV_NOINIT, CV_OnOff, KartItemLitter_OnChange);
consvar_t cv_kartitempush = CVAR_INIT ("kartitempush", "Off", CV_NETVAR|CV_CALL|CV_NOINIT, CV_OnOff, KartItemPush_OnChange);
@ -8241,6 +8243,39 @@ static void KartAirThrust_OnChange(void)
}
}
static void KartWaterSkipLock_OnChange(void)
{
if (K_CanChangeRules(false) == false)
{
return;
}
if (!K_WaterskipBricksActive() && cv_kartwaterskiplock.value)
{
if (leveltime < starttime)
{
waterskipbricks = true;
CONS_Printf(M_GetText("Waterskip Lock has been turned \"On\".\n"));
}
else
{
CONS_Printf(M_GetText("Waterskip Lock will be turned \"On\" Next Round.\n"));
}
}
else if (K_WaterskipBricksActive() && !cv_kartwaterskiplock.value)
{
if (leveltime < starttime)
{
waterskipbricks = false;
CONS_Printf(M_GetText("Waterskip Lock has been turned \"Off\".\n"));
}
else
{
CONS_Printf(M_GetText("Waterskip Lock will be turned \"Off\" next round.\n"));
}
}
}
static void KartItemLitter_OnChange(void)
{
if (K_CanChangeRules(false) == false)

View file

@ -208,6 +208,8 @@ extern consvar_t cv_kartairthrust_power2;
extern consvar_t cv_kartairthrust_power3;
extern consvar_t cv_kartairthrust_power4;
extern consvar_t cv_kartwaterskiplock;
extern consvar_t cv_kartitemlitter, cv_kartitempush;
extern consvar_t cv_kartantibump;

View file

@ -11225,6 +11225,17 @@ boolean K_AirThrustActive(void)
return false;
}
boolean K_WaterskipBricksActive(void)
{
if (waterskipbricks)
{
// Water Skip Lock is enabled!
return true;
}
return false;
}
boolean K_ItemLitterActive(void)
{
if (itemlittering)
@ -11407,4 +11418,16 @@ void K_QuiteSaltyHop(player_t *player)
}
}
boolean K_CheckWaterskipLockout(player_t *player)
{
if (K_WaterskipBricksActive())
{
return (player->cmd.buttons & BT_ACCELERATE) == BT_ACCELERATE;
}
else
{
return true;
}
}
//}

View file

@ -359,6 +359,7 @@ boolean K_SlopeBoostActive(void);
boolean K_DraftingActive(void);
boolean K_AirDropActive(void);
boolean K_AirThrustActive(void);
boolean K_WaterskipBricksActive(void);
boolean K_ItemLitterActive(void);
boolean K_ItemListActive(void);
boolean K_ItemPushingActive(void);
@ -383,6 +384,7 @@ typedef enum
void K_AwardScaledPlayerRings(player_t *player, SINT8 mode);
void K_QuiteSaltyHop(player_t *player);
boolean K_CheckWaterskipLockout(player_t *player);
typedef enum
{

View file

@ -3443,7 +3443,8 @@ void P_MobjCheckWater(mobj_t *mobj)
P_SetScale(splish, mobj->scale);
// skipping stone!
if (p && p->waterskip < 2
if (p && K_CheckWaterskipLockout(p)
&& p->waterskip < 2
&& ((p->speed/3 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water.
|| (p->speed > K_GetKartSpeed(p,false,true)/3 && p->waterskip)) // Already skipped once, so you can skip once more!
&& ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop)

View file

@ -619,6 +619,7 @@ extern boolean slopeboostactive;
extern boolean draftingactive;
extern boolean airdropactive;
extern boolean airthrustactive;
extern boolean waterskipbricks;
extern boolean itemlittering;
extern boolean itempushing;
extern UINT8 bumpsparkactive;

View file

@ -162,6 +162,7 @@ boolean slopeboostactive;
boolean draftingactive;
boolean airdropactive;
boolean airthrustactive;
boolean waterskipbricks;
boolean itemlittering;
boolean itempushing;
UINT8 bumpsparkactive;
@ -8177,6 +8178,7 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
draftingactive = false;
airdropactive = false;
airthrustactive = false;
waterskipbricks = false;
itemlittering = false;
itempushing = false;
itemlistactive = false;
@ -8210,6 +8212,9 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
if (cv_kartairthrust.value)
airthrustactive = true;
if (cv_kartwaterskiplock.value)
waterskipbricks = true;
if (cv_kartitemlitter.value)
itemlittering = true;