Item littering toggle
With item littering off, dropped items immediately despawn themselves
This commit is contained in:
parent
9449e5aa28
commit
1f392e1cee
10 changed files with 85 additions and 9 deletions
|
|
@ -161,6 +161,7 @@ static void KartSlipdash_OnChange(void);
|
|||
static void KartSlopeBoost_OnChange(void);
|
||||
static void KartDrafting_OnChange(void);
|
||||
static void KartAirDrop_OnChange(void);
|
||||
static void KartItemLitter_OnChange(void);
|
||||
static void KartItemBreaker_OnChange(void);
|
||||
static void KartInvinType_OnChange(void);
|
||||
static void KartBumpSpark_OnChange(void);
|
||||
|
|
@ -387,7 +388,7 @@ consvar_t cv_eggmanmonitor = CVAR_INIT ("eggmanmonitor", "On", CV_NETVAR|CV_C
|
|||
consvar_t cv_orbinaut = CVAR_INIT ("orbinaut", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_jawz = CVAR_INIT ("jawz", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_mine = CVAR_INIT ("mine", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_ballhog = CVAR_INIT ("ballhog", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_ballhog = CVAR_INIT ("ballhog", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_selfpropelledbomb = CVAR_INIT ("selfpropelledbomb", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_grow = CVAR_INIT ("grow", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_shrink = CVAR_INIT ("shrink", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
|
|
@ -405,7 +406,7 @@ consvar_t cv_triplesneaker = CVAR_INIT ("triplesneaker", "On", CV_NETVAR|CV_C
|
|||
consvar_t cv_triplebanana = CVAR_INIT ("triplebanana", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_decabanana = CVAR_INIT ("decabanana", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_tripleorbinaut = CVAR_INIT ("tripleorbinaut", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_quadorbinaut = CVAR_INIT ("quadorbinaut", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_quadorbinaut = CVAR_INIT ("quadorbinaut", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
consvar_t cv_dualjawz = CVAR_INIT ("dualjawz", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||
|
||||
static CV_PossibleValue_t kartminimap_cons_t[] = {{0, "MIN"}, {10, "MAX"}, {0, NULL}};
|
||||
|
|
@ -567,16 +568,17 @@ consvar_t cv_kartdrafting_closedeadzone = CVAR_INIT ("kartdrafting_closedeadzone
|
|||
consvar_t cv_kartdrafting_basedistance = CVAR_INIT ("kartdrafting_basedistance", "2560", CV_NETVAR|CV_CHEAT, CV_Unsigned, NULL);
|
||||
|
||||
consvar_t cv_kartairdrop = CVAR_INIT ("kartairdrop", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartAirDrop_OnChange);
|
||||
consvar_t cv_kartitemlitter = CVAR_INIT ("kartitemlitter", "On", CV_NETVAR|CV_CALL|CV_NOINIT, CV_OnOff, KartItemLitter_OnChange);
|
||||
|
||||
// Odds distancing
|
||||
#define MAXODDSDIST ((INT32_MAX / FRACUNIT) / 2)
|
||||
static CV_PossibleValue_t distvar_cons_t[] = {{1, "MIN"}, {MAXODDSDIST, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_kartoddsdist = CVAR_INIT ("kartoddsdist", "2048", CV_NETVAR|CV_CHEAT, distvar_cons_t, NULL);
|
||||
consvar_t cv_kartlegacyoddsdist = CVAR_INIT ("kartlegacyoddsdist", "2048", CV_NETVAR|CV_CHEAT, distvar_cons_t, NULL);
|
||||
consvar_t cv_kartoddsdist = CVAR_INIT ("kartoddsdist", "1640", CV_NETVAR|CV_CHEAT, distvar_cons_t, NULL);
|
||||
consvar_t cv_kartlegacyoddsdist = CVAR_INIT ("kartlegacyoddsdist", "1640", CV_NETVAR|CV_CHEAT, distvar_cons_t, NULL);
|
||||
|
||||
// SPB distance; no legacy modifiers currently (lazy)
|
||||
static CV_PossibleValue_t spbdist_cons_t[] = {{1, "MIN"}, {32000, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_kartspbdist = CVAR_INIT ("kartspbdist", "8192", CV_NETVAR|CV_CHEAT, spbdist_cons_t, NULL);
|
||||
consvar_t cv_kartspbdist = CVAR_INIT ("kartspbdist", "6144", CV_NETVAR|CV_CHEAT, spbdist_cons_t, NULL);
|
||||
#undef MAXODDSDIST
|
||||
|
||||
// Invincibility modifiers
|
||||
|
|
@ -7631,7 +7633,6 @@ static void KartDrafting_OnChange(void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void KartAirDrop_OnChange(void)
|
||||
{
|
||||
if (K_CanChangeRules() == false)
|
||||
|
|
@ -7665,6 +7666,39 @@ static void KartAirDrop_OnChange(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void KartItemLitter_OnChange(void)
|
||||
{
|
||||
if (K_CanChangeRules() == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!K_ItemLitterActive() && cv_kartitemlitter.value)
|
||||
{
|
||||
if (leveltime < starttime)
|
||||
{
|
||||
itemlittering = true;
|
||||
CONS_Printf(M_GetText("Item littering has been turned \"On\".\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Printf(M_GetText("Item littering will be turned \"On\" Next Round.\n"));
|
||||
}
|
||||
}
|
||||
else if (K_ItemLitterActive() && !cv_kartitemlitter.value)
|
||||
{
|
||||
if (leveltime < starttime)
|
||||
{
|
||||
itemlittering = false;
|
||||
CONS_Printf(M_GetText("Item littering has been turned \"Off\".\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Printf(M_GetText("Item littering will be turned \"Off\" next round.\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void KartItemBreaker_OnChange(void)
|
||||
{
|
||||
if (K_CanChangeRules() == false)
|
||||
|
|
|
|||
|
|
@ -208,6 +208,8 @@ extern consvar_t cv_kartinvin_midtime;
|
|||
|
||||
extern consvar_t cv_kartairdrop;
|
||||
|
||||
extern consvar_t cv_kartitemlitter;
|
||||
|
||||
extern consvar_t cv_kartoddsdist;
|
||||
extern consvar_t cv_kartlegacyoddsdist;
|
||||
extern consvar_t cv_kartspbdist;
|
||||
|
|
|
|||
|
|
@ -2423,7 +2423,7 @@ void K_SetScoreboardModStatus(const char *name, SINT8 active)
|
|||
CONS_Alert(CONS_WARNING, "Server mod '%s' does not exist so status cannot be changed.\n", name);
|
||||
}
|
||||
|
||||
#define BASEMODS 14
|
||||
#define BASEMODS 15
|
||||
static void K_DrawServerMods(INT32 x, INT32 y)
|
||||
{
|
||||
UINT8 i, j;
|
||||
|
|
@ -2432,6 +2432,7 @@ static void K_DrawServerMods(INT32 x, INT32 y)
|
|||
|
||||
servermods_t basemods[BASEMODS] =
|
||||
{
|
||||
{"Item Littering", 0, NULL, K_ItemLitterActive() > 0, true},
|
||||
{"Rings", 0, NULL, K_RingsActive() > 0, true},
|
||||
{"4-Tier Drifts", 0, NULL, K_PurpleDriftActive() > 0, true},
|
||||
{"Slipdash", 0, NULL, K_SlipdashActive() > 0, true},
|
||||
|
|
@ -5539,7 +5540,8 @@ static void K_drawDistributionDebugger(void)
|
|||
stplyr->distancetofinish,
|
||||
stplyr->distancefromcluster,
|
||||
0,
|
||||
spbrush, stplyr->bot, (stplyr->bot && stplyr->botvars.rival)
|
||||
spbrush, stplyr->bot, (stplyr->bot && stplyr->botvars.rival),
|
||||
K_IsPlayerLosing(stplyr)
|
||||
);
|
||||
|
||||
if (itemodds <= 0)
|
||||
|
|
|
|||
20
src/k_kart.c
20
src/k_kart.c
|
|
@ -375,6 +375,7 @@ void K_RegisterKartStuff(void)
|
|||
CV_RegisterVar(&cv_kartchainingsound);
|
||||
|
||||
CV_RegisterVar(&cv_kartairdrop);
|
||||
CV_RegisterVar(&cv_kartitemlitter);
|
||||
|
||||
CV_RegisterVar(&cv_kartitembreaker);
|
||||
|
||||
|
|
@ -5233,6 +5234,12 @@ void K_DropHnextList(player_t *player)
|
|||
dropwork->flags &= ~MF_NOCLIPTHING;
|
||||
}
|
||||
|
||||
if (!itemlittering)
|
||||
{
|
||||
// Bring it to life... just to kill it.
|
||||
P_KillMobj(dropwork, NULL, NULL, DMG_NORMAL);
|
||||
}
|
||||
|
||||
P_RemoveMobj(work);
|
||||
}
|
||||
|
||||
|
|
@ -5414,7 +5421,7 @@ mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8
|
|||
UINT32_MAX,
|
||||
0,
|
||||
0,
|
||||
false, false, false
|
||||
false, false, false, false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -11269,6 +11276,17 @@ boolean K_AirDropActive(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
boolean K_ItemLitterActive(void)
|
||||
{
|
||||
if (itemlittering)
|
||||
{
|
||||
// Item littering is enabled!
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean K_GetKartInvinType(void)
|
||||
{
|
||||
return invintype;
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@ boolean K_SlipdashActive(void);
|
|||
boolean K_SlopeBoostActive(void);
|
||||
boolean K_DraftingActive(void);
|
||||
boolean K_AirDropActive(void);
|
||||
boolean K_ItemLitterActive(void);
|
||||
boolean K_GetKartInvinType(void);
|
||||
INT32 K_GetBumpSpark(void);
|
||||
boolean K_BoostChain(player_t *player, INT32 timer, boolean chainsound);
|
||||
|
|
|
|||
|
|
@ -4181,6 +4181,13 @@ static int lib_kAirDropActive(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
// Checks if item littering is active.
|
||||
static int lib_kItemLitterActive(lua_State *L)
|
||||
{
|
||||
lua_pushboolean(L, K_ItemLitterActive());
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Grabs the currently active invintype.
|
||||
static int lib_kGetKartInvinType(lua_State *L)
|
||||
{
|
||||
|
|
@ -5285,6 +5292,7 @@ static luaL_Reg lib[] = {
|
|||
{"K_SlopeBoostActive",lib_kSlopeBoostActive},
|
||||
{"K_DraftingActive",lib_kDraftingActive},
|
||||
{"K_AirDropActive",lib_kAirDropActive},
|
||||
{"K_ItemLitterActive",lib_kItemLitterActive},
|
||||
{"K_GetBumpSpark",lib_kGetBumpSpark},
|
||||
{"K_GetKartInvinType",lib_kGetKartInvinType},
|
||||
{"K_UsingLegacyCheckpoints",lib_kUsingLegacyCheckpoints},
|
||||
|
|
|
|||
|
|
@ -402,12 +402,16 @@ int LUA_PushGlobals(lua_State *L, const char *word)
|
|||
return 1;
|
||||
} else if (fastcmp(word,"airdropactive")) {
|
||||
lua_pushinteger(L, airdropactive);
|
||||
return 1;
|
||||
} else if (fastcmp(word,"bumpsparkactive")) {
|
||||
lua_pushinteger(L, bumpsparkactive);
|
||||
return 1;
|
||||
} else if (fastcmp(word,"purpledriftactive")) {
|
||||
lua_pushinteger(L, purpledriftactive);
|
||||
return 1;
|
||||
} else if (fastcmp(word,"itemlittering")) {
|
||||
lua_pushinteger(L, itemlittering);
|
||||
return 1;
|
||||
} else if (fastcmp(word,"invintype")) {
|
||||
lua_pushinteger(L, invintype);
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -610,6 +610,7 @@ extern boolean purpledriftactive;
|
|||
extern boolean slopeboostactive;
|
||||
extern boolean draftingactive;
|
||||
extern boolean airdropactive;
|
||||
extern boolean itemlittering;
|
||||
extern UINT8 bumpsparkactive;
|
||||
extern UINT16 bossdisabled;
|
||||
extern boolean stoppedclock;
|
||||
|
|
|
|||
|
|
@ -4176,6 +4176,7 @@ static boolean P_NetSyncMisc(savebuffer_t *save, boolean resending)
|
|||
SYNCBOOLEAN(slopeboostactive);
|
||||
SYNCBOOLEAN(draftingactive);
|
||||
SYNCBOOLEAN(airdropactive);
|
||||
SYNCBOOLEAN(itemlittering);
|
||||
SYNC(bumpsparkactive);
|
||||
SYNC(invintype);
|
||||
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ boolean purpledriftactive;
|
|||
boolean slopeboostactive;
|
||||
boolean draftingactive;
|
||||
boolean airdropactive;
|
||||
boolean itemlittering;
|
||||
UINT8 bumpsparkactive;
|
||||
UINT16 bossdisabled;
|
||||
boolean stoppedclock;
|
||||
|
|
@ -8040,6 +8041,7 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
|
|||
slopeboostactive = false;
|
||||
draftingactive = false;
|
||||
airdropactive = false;
|
||||
itemlittering = false;
|
||||
bumpsparkactive = 0;
|
||||
|
||||
if (cv_kartrings.value)
|
||||
|
|
@ -8066,6 +8068,9 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
|
|||
if (cv_kartairdrop.value)
|
||||
airdropactive = true;
|
||||
|
||||
if (cv_kartitemlitter.value)
|
||||
itemlittering = true;
|
||||
|
||||
bumpsparkactive = (UINT8)cv_kartbumpspark.value;
|
||||
invintype = (UINT8)cv_kartinvintype.value;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue