Finalize Cvar and push check to lua

This commit is contained in:
NepDisk 2025-03-31 14:04:06 -04:00
parent e92803dd25
commit 2e2b90f843
6 changed files with 66 additions and 8 deletions

View file

@ -153,6 +153,7 @@ static void KartEliminateLast_OnChange(void);
static void KartRings_OnChange(void);
static void KartStacking_OnChange(void);
static void KartChaining_OnChange(void);
static void KartSlipdash_OnChange(void);
static void KartItemBreaker_OnChange(void);
static void Schedule_OnChange(void);
@ -478,7 +479,7 @@ consvar_t cv_kartstacking_ring_accelboost = CVAR_INIT ("vanillaboost_ring_accelb
consvar_t cv_kartchaining = CVAR_INIT ("kartchaining", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartChaining_OnChange);
consvar_t cv_kartchainingoffroad = CVAR_INIT ("kartchaining_chainoffroad", "No", CV_NETVAR, CV_YesNo, NULL);
consvar_t cv_kartitembreaker = CVAR_INIT ("kartitembreaker", "No", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_YesNo, KartItemBreaker_OnChange);
consvar_t cv_kartitembreaker = CVAR_INIT ("kartitembreaker", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartItemBreaker_OnChange);
consvar_t cv_kartwalltransfer = CVAR_INIT ("BG_forcewalltransfer", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
@ -490,7 +491,7 @@ consvar_t cv_kartbumpspark = CVAR_INIT ("kartbumpspark", "No", CV_NETVAR, CV_Yes
consvar_t cv_kartbumpspring = CVAR_INIT ("kartbumpspring", "No", CV_NETVAR, CV_YesNo, NULL);
consvar_t cv_kartslipdash = CVAR_INIT ("kartslipdash", "No", CV_NETVAR, CV_YesNo, NULL);
consvar_t cv_kartslipdash = CVAR_INIT ("kartslipdash", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartSlipdash_OnChange);
static CV_PossibleValue_t kartdebugitem_cons_t[] =
{
@ -7115,6 +7116,39 @@ static void KartChaining_OnChange(void)
}
}
static void KartSlipdash_OnChange(void)
{
if (K_CanChangeRules() == false)
{
return;
}
if (!slipdashactive && cv_kartslipdash.value)
{
if (leveltime < starttime)
{
slipdashactive = true;
CONS_Printf(M_GetText("Slipdashing has been turned \"On\".\n"));
}
else
{
CONS_Printf(M_GetText("Slipdashing will be turned \"On\" Next Round.\n"));
}
}
else if (slipdashactive && !cv_kartslipdash.value)
{
if (leveltime < starttime)
{
slipdashactive = false;
CONS_Printf(M_GetText("Slipdashing has been turned \"Off\".\n"));
}
else
{
CONS_Printf(M_GetText("Slipdashing will be turned \"Off\" next round.\n"));
}
}
}
static void KartItemBreaker_OnChange(void)
{
if (K_CanChangeRules() == false)

View file

@ -10726,6 +10726,17 @@ boolean K_ChainingActive(void)
return false;
}
boolean K_SlipdashActive(void)
{
if (slipdashactive)
{
// Slipdash is enabled!
return true;
}
return false;
}
boolean K_UsingLegacyCheckpoints(void)
{
if (numbosswaypoints > 0)

View file

@ -229,6 +229,7 @@ boolean K_SafeRespawnPosition(mobj_t * mo);
boolean K_RingsActive(void);
boolean K_StackingActive(void);
boolean K_ChainingActive(void);
boolean K_SlipdashActive(void);
boolean K_BoostChain(player_t *player, INT32 timer, boolean chainsound);
INT32 K_ChainOrDeincrementTime(player_t *player, INT32 timer, INT32 deincrement, boolean chainsound);
boolean K_UsingLegacyCheckpoints(void);

View file

@ -3999,6 +3999,13 @@ static int lib_kChainingActive(lua_State *L)
return 1;
}
// Checks if Chaining is active.
static int lib_kSlipdashActive(lua_State *L)
{
lua_pushboolean(L, K_SlipdashActive());
return 1;
}
// Checks if current map is using legacy boss3 bassed checkpoints. Useful for map compat.
static int lib_kUsingLegacyCheckpoints(lua_State *L)
{
@ -4360,6 +4367,7 @@ static luaL_Reg lib[] = {
{"K_RingsActive",lib_kRingsActive},
{"K_StackingActive",lib_kStackingActive},
{"K_ChainingActive",lib_kChainingActive},
{"K_SlipdashActive",lib_kSlipdashActive},
{"K_UsingLegacyCheckpoints",lib_kUsingLegacyCheckpoints},
{"K_DoBoost",lib_kDoBoost},
{"K_ClearBoost",lib_kClearBoost},

View file

@ -580,6 +580,7 @@ extern INT32 numbosswaypoints;
extern boolean ringsactive;
extern boolean stackingactive;
extern boolean chainingactive;
extern boolean slipdashactive;
extern UINT16 bossdisabled;
extern boolean stoppedclock;

View file

@ -145,6 +145,7 @@ INT32 numbosswaypoints;
boolean ringsactive = false;
boolean stackingactive = false;
boolean chainingactive = false;
boolean slipdashactive = false;
UINT16 bossdisabled;
boolean stoppedclock;
boolean levelloading;
@ -7879,21 +7880,23 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
nummapboxes = numgotboxes = 0;
numtargets = 0;
itembreaker = false;
ringsactive = false;
stackingactive = false;
chainingactive = false;
slipdashactive = false;
if (cv_kartrings.value)
ringsactive = true;
else
ringsactive = false;
if (cv_kartstacking.value)
stackingactive = true;
else
stackingactive = false;
if (cv_kartchaining.value)
chainingactive = true;
else
chainingactive = false;
if (cv_kartslipdash.value)
slipdashactive = true;
// emerald hunt
hunt1 = hunt2 = hunt3 = NULL;