diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 6f29dc633..43390b191 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -262,6 +262,11 @@ static consvar_t cv_dummyconsvar = CVAR_INIT ("dummyconsvar", "Off", CV_CALL|CV_ consvar_t cv_restrictskinchange = CVAR_INIT ("restrictskinchange", "No", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL); consvar_t cv_allowteamchange = CVAR_INIT ("allowteamchange", "Yes", CV_NETVAR, CV_YesNo, NULL); +#ifdef DEVELOP + // change the default value in doomdef.h (so it affects release builds too) + consvar_t cv_debugtraversemax = CVAR_INIT ("restrictskinchange", TOSTR2(TRAVERSE_MAX), CV_NETVAR|CV_CHEAT, CV_Unsigned, NULL); +#endif + static CV_PossibleValue_t ingamecap_cons_t[] = {{0, "MIN"}, {MAXPLAYERS-1, "MAX"}, {0, NULL}}; consvar_t cv_ingamecap = CVAR_INIT ("ingamecap", "0", CV_NETVAR, ingamecap_cons_t, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index abf3dcb6d..7b1f6aba7 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -65,6 +65,10 @@ extern consvar_t cv_pause; extern consvar_t cv_restrictskinchange, cv_allowteamchange, cv_ingamecap, cv_respawntime; extern consvar_t cv_spectatorreentry, cv_antigrief; +#ifdef DEVELOP + extern consvar_t cv_debugtraversemax; +#endif + // SRB2kart items extern consvar_t cv_superring, cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana; extern consvar_t cv_eggmanmonitor, cv_orbinaut, cv_jawz, cv_mine, cv_landmine, cv_droptarget; diff --git a/src/doomdef.h b/src/doomdef.h index 75487e48a..098ecb18e 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -281,6 +281,9 @@ enum { LE_PARAMWIDTH = -100 // If an object that calls LinedefExecute has a nonzero parameter value, this times the parameter will be subtracted. (Mostly for the purpose of coexisting bosses...) }; +#define TOSTR(x) #x +#define TOSTR2(x) TOSTR(x) // expand x first + // Name of local directory for config files and savegames #if (((defined (__unix__) && !defined (MSDOS)) || defined (UNIXCOMMON)) && !defined (__CYGWIN__)) && !defined (__APPLE__) #define DEFAULTDIR ".srb2kart-v2" @@ -569,6 +572,9 @@ extern int compuncommitted; /// Camera always has noclip. #define NOCLIPCAM +// p_sight.c +#define TRAVERSE_MAX 8 + /// Other karma comeback modes //#define OTHERKARMAMODES diff --git a/src/p_sight.c b/src/p_sight.c index ca4608a1a..f934e1a6d 100644 --- a/src/p_sight.c +++ b/src/p_sight.c @@ -1,8 +1,10 @@ -// SONIC ROBO BLAST 2 +// DR. ROBOTNIK'S RING RACERS //----------------------------------------------------------------------------- -// Copyright (C) 1993-1996 by id Software, Inc. -// Copyright (C) 1998-2000 by DooM Legacy Team. -// Copyright (C) 1999-2020 by Sonic Team Junior. +// Copyright (C) 2024 by Sally "TehRealSalt" Cochenour. +// Copyright (C) 2024 by Kart Krew. +// Copyright (C) 2020 by Sonic Team Junior. +// Copyright (C) 2000 by DooM Legacy Team. +// Copyright (C) 1996 by id Software, Inc. // // This program is free software distributed under the // terms of the GNU General Public License, version 2. @@ -37,7 +39,6 @@ typedef struct mobj_t *t1, *t2; boolean alreadyHates; // For bot traversal, for if the bot is already in a sector it doesn't want to be UINT8 traversed; - mobj_t *compareThing; // Original thing } los_t; typedef boolean (*los_init_t)(mobj_t *, mobj_t *, register los_t *); @@ -53,7 +54,11 @@ typedef struct static INT32 sightcounts[2]; -#define TRAVERSE_MAX (8) +#ifdef DEVELOP +extern consvar_t cv_debugtraversemax; +#undef TRAVERSE_MAX +#define TRAVERSE_MAX (cv_debugtraversemax.value) +#endif // // P_DivlineSide @@ -470,10 +475,11 @@ static boolean P_CrossSubsector(size_t num, register los_t *los, register los_fu seg_t *seg; INT32 count; -#ifdef RANGECHECK if (num >= numsubsectors) - I_Error("P_CrossSubsector: ss %s with numss = %s\n", sizeu1(num), sizeu2(numsubsectors)); -#endif + { + CONS_Debug(DBG_RENDER, "P_CrossSubsector: ss %s with numss = %s\n", sizeu1(num), sizeu2(numsubsectors)); + return true; + } // haleyjd 02/23/06: this assignment should be after the above check seg = segs + subsectors[num].firstline; @@ -556,11 +562,6 @@ static boolean P_CrossSubsector(size_t num, register los_t *los, register los_fu static boolean P_CrossBSPNode(INT32 bspnum, register los_t *los, register los_funcs_t *funcs) { - if (funcs->validate == NULL) - { - return false; - } - while (!(bspnum & NF_SUBSECTOR)) { register node_t *bsp = nodes + bspnum;