From 8293f69fa87ec42195236ec41376bf6dd82ce86d Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 6 Sep 2025 15:06:03 -0400 Subject: [PATCH] Allow walltransfer to be enabled per sector --- src/blan/b_soc.h | 2 +- src/blan/internal/b_soc.c | 9 ++++++--- src/d_main.cpp | 2 +- src/d_netcmd.c | 2 +- src/d_netcmd.h | 2 +- src/doomdef.h | 2 +- src/k_kart.c | 2 +- src/p_mobj.c | 2 +- src/p_setup.c | 2 ++ src/r_defs.h | 1 + 10 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/blan/b_soc.h b/src/blan/b_soc.h index 29857856c..2a833f94f 100644 --- a/src/blan/b_soc.h +++ b/src/blan/b_soc.h @@ -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); diff --git a/src/blan/internal/b_soc.c b/src/blan/internal/b_soc.c index c1a813e52..6799cff46 100644 --- a/src/blan/internal/b_soc.c +++ b/src/blan/internal/b_soc.c @@ -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; diff --git a/src/d_main.cpp b/src/d_main.cpp index 52c714584..f1c7fbb12 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -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 diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 6c229bd68..c942b3713 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -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); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 824ba6d4b..af0d652b3 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -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; diff --git a/src/doomdef.h b/src/doomdef.h index f1e9a57fd..af9415968 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -103,7 +103,7 @@ extern "C" { // Special Hashing. //#define NOFILEHASH -//#define NOVERIFYIWADS +//==#define NOVERIFYIWADS // Uncheck this to compile debugging code //#define RANGECHECK diff --git a/src/k_kart.c b/src/k_kart.c index bc4780b14..68817600f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -363,7 +363,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartitembreaker); - CV_RegisterVar(&cv_kartwalltransfer); + //CV_RegisterVar(&cv_kartwalltransfer); CV_RegisterVar(&cv_kartpurpledrift); diff --git a/src/p_mobj.c b/src/p_mobj.c index a32128b27..56f9c8588 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -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 diff --git a/src/p_setup.c b/src/p_setup.c index b5c9584eb..35b21f991 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -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)) diff --git a/src/r_defs.h b/src/r_defs.h index 269c7b406..3c140f888 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -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