Allow walltransfer to be enabled per sector

This commit is contained in:
NepDisk 2025-09-06 15:06:03 -04:00
parent bc72c2284e
commit 8293f69fa8
10 changed files with 16 additions and 10 deletions

View file

@ -17,7 +17,7 @@ extern "C" {
#include "../doomstat.h"
#include "../deh_soc.h"
boolean B_UseWallTransfer(void);
boolean B_UseWallTransfer(mobj_t *mo);
INT32 B_TrackComplexity(void);
fixed_t K_TrackModifierMax(void);

View file

@ -10,16 +10,19 @@
#include "../b_soc.h"
// Map header toggle for wall transfering.
boolean B_UseWallTransfer(void)
boolean B_UseWallTransfer(mobj_t *mo)
{
const mapheader_t *mapheader = mapheaderinfo[gamemap - 1];
boolean value = false;
if (mo && mo->subsector && (mo->subsector->sector->specialflags & SSF_WALLTRANSFER))
return true;
if (mapnamespace == MNS_RINGRACERS)
return true;
if (cv_kartwalltransfer.value)
return true;
//if (cv_kartwalltransfer.value)
//return true;
if (mapheader->use_walltransfer == true)
value = true;

View file

@ -89,7 +89,7 @@
#define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291
#define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b
#define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9
#define ASSET_HASH_MAIN_PK3 0x5c3c5f3a797479ff
#define ASSET_HASH_MAIN_PK3 0xd9cf115699dc58c4
#define ASSET_HASH_MAPPATCH_PK3 0xf1c7678ded3a2d1b
#define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461
#ifdef USE_PATCH_FILE

View file

@ -520,7 +520,7 @@ consvar_t cv_kartchainingoffroad = CVAR_INIT ("kartchaining_chainoffroad", "No",
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);
//consvar_t cv_kartwalltransfer = CVAR_INIT ("BG_forcewalltransfer", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartusepwrlv = CVAR_INIT ("kartusepwrlv", "Yes", CV_NETVAR, CV_YesNo, NULL);

View file

@ -184,7 +184,7 @@ extern consvar_t cv_kartchaining;
extern consvar_t cv_kartchainingoffroad;
extern consvar_t cv_kartitembreaker;
extern consvar_t cv_kartwalltransfer;
//extern consvar_t cv_kartwalltransfer;
extern consvar_t cv_kartpurpledrift;
extern consvar_t cv_kartbumpspark;
extern consvar_t cv_kartbumpspring;

View file

@ -103,7 +103,7 @@ extern "C" {
// Special Hashing.
//#define NOFILEHASH
//#define NOVERIFYIWADS
//==#define NOVERIFYIWADS
// Uncheck this to compile debugging code
//#define RANGECHECK

View file

@ -363,7 +363,7 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartitembreaker);
CV_RegisterVar(&cv_kartwalltransfer);
//CV_RegisterVar(&cv_kartwalltransfer);
CV_RegisterVar(&cv_kartpurpledrift);

View file

@ -1696,7 +1696,7 @@ void P_XYMovement(mobj_t *mo)
else
{
boolean walltransfered = false;
boolean walltransferok = B_UseWallTransfer();
boolean walltransferok = B_UseWallTransfer(mo);
//if (player || mo->flags & MF_SLIDEME|MF_PUSHABLE)
if (walltransferok)
{ // try to slide along it

View file

@ -1904,6 +1904,8 @@ static void ParseTextmapSectorParameter(UINT32 i, const char *param, const char
sectors[i].specialflags |= SSF_FINISHLINE;
else if (fastcmp(param, "gravityoverride") && fastcmp("true", val))
sectors[i].specialflags |= SSF_GRAVITYOVERRIDE;
else if (fastcmp(param, "walltransfer") && fastcmp("true", val))
sectors[i].specialflags |= SSF_WALLTRANSFER;
else if (fastcmp(param, "nophysics_floor") && fastcmp("true", val))
sectors[i].specialflags |= SSF_NOPHYSICSFLOOR;
else if (fastcmp(param, "nophysics_ceiling") && fastcmp("true", val))

View file

@ -390,6 +390,7 @@ typedef enum
SSF_NOPHYSICSFLOOR = 1<<17,
SSF_NOPHYSICSCEILING = 1<<18,
SSF_GRAVITYOVERRIDE = 1<<19, // combine with MSF_GRAVITYFLIP
SSF_WALLTRANSFER = 1<<20, // combine with MSF_GRAVITYFLIP
} sectorspecialflags_t;
typedef enum