From 5af1e6f734b631bca677559324477bf319c1cd1c Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Tue, 2 Jul 2013 14:15:08 -0500 Subject: [PATCH] - Added a compatibility option to fix Super Sonic Doom's first bonus stage leaving you frozen when you finished it. --- src/compatibility.cpp | 1 + src/doomdef.h | 1 + src/p_lnspec.cpp | 5 +++++ wadsrc/static/compatibility.txt | 8 ++++++++ 4 files changed, 15 insertions(+) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index 4a4f19d6b..7bbff7322 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -105,6 +105,7 @@ static FCompatOption Options[] = { "vileghosts", BCOMPATF_VILEGHOSTS, SLOT_BCOMPAT }, { "ignoreteleporttags", BCOMPATF_BADTELEPORTERS, SLOT_BCOMPAT }, { "rebuildnodes", BCOMPATF_REBUILDNODES, SLOT_BCOMPAT }, + { "linkfrozenprops", BCOMPATF_LINKFROZENPROPS, SLOT_BCOMPAT }, // list copied from g_mapinfo.cpp { "shorttex", COMPATF_SHORTTEX, SLOT_COMPAT }, diff --git a/src/doomdef.h b/src/doomdef.h index 3a3c31e6a..675923b4a 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -349,6 +349,7 @@ enum BCOMPATF_BADTELEPORTERS = 1 << 3, // Ignore tags on Teleport specials BCOMPATF_BADPORTALS = 1 << 4, // Restores the old unstable portal behavior BCOMPATF_REBUILDNODES = 1 << 5, // Force node rebuild + BCOMPATF_LINKFROZENPROPS = 1 << 6, // Clearing PROP_TOTALLYFROZEN or PROP_FROZEN also clears the other }; // phares 3/20/98: diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 67df3def1..a0164ab82 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -2813,6 +2813,11 @@ FUNC(LS_SetPlayerProperty) { int i; + if ((ib_compatflags & BCOMPATF_LINKFROZENPROPS) && (mask & (CF_FROZEN | CF_TOTALLYFROZEN))) + { // Clearing one of these properties clears both of them (if the compat flag is set.) + mask = CF_FROZEN | CF_TOTALLYFROZEN; + } + for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i]) diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt index a84ba218b..795b9348a 100644 --- a/wadsrc/static/compatibility.txt +++ b/wadsrc/static/compatibility.txt @@ -353,3 +353,11 @@ F481922F4881F74760F3C0437FD5EDD0 // map03 // make the blue key spawn above the 3D floor setthingz 918 296 } + +64B6CE3CB7349B6F6B1A885C449ACB96 // Super Sonic Doom, map31 +{ + // During the end-of-level tally, both PROP_FROZEN and PROP_TOTALLYFROZEN + // are set, but only PROP_TOTALLYFROZEN is cleared, so PROP_FROZEN is + // still set when returning to the origin map. + linkfrozenprops +}