diff --git a/src/compatibility.cpp b/src/compatibility.cpp index ab1c98ca7..880f88789 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -89,6 +89,7 @@ static FCompatOption Options[] = { "setslopeoverflow", 0, BCOMPATF_SETSLOPEOVERFLOW }, { "resetplayerspeed", 0, BCOMPATF_RESETPLAYERSPEED }, { "vileghosts", 0, BCOMPATF_VILEGHOSTS }, + { "ignoreteleporttags", 0, BCOMPATF_BADTELEPORTERS }, // list copied from g_mapinfo.cpp { "shorttex", COMPATF_SHORTTEX, 0 }, diff --git a/src/doomdef.h b/src/doomdef.h index 9ad019db4..cad56d642 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -341,6 +341,7 @@ enum BCOMPATF_SETSLOPEOVERFLOW = 1 << 0, // SetSlope things can overflow BCOMPATF_RESETPLAYERSPEED = 1 << 1, // Set player speed to 1.0 when changing maps BCOMPATF_VILEGHOSTS = 1 << 2, // Monsters' radius and height aren't restored properly when resurrected. + BCOMPATF_BADTELEPORTERS = 1 << 3, // Ignore tags on Teleport specials }; // phares 3/20/98: diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index 8fe870e82..6ba60be0e 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -228,6 +228,9 @@ static AActor *SelectTeleDest (int tid, int tag) // behavior is used instead (return the first teleport dest found in a tagged // sector). + // Compatibility hack for some maps that fell victim to a bug in the teleport code in 2.0.9x + if (ib_compatflags & BCOMPATF_BADTELEPORTERS) tag = 0; + if (tid != 0) { NActorIterator iterator (NAME_TeleportDest, tid); diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt index 98528363d..c3a4404aa 100644 --- a/wadsrc/static/compatibility.txt +++ b/wadsrc/static/compatibility.txt @@ -135,3 +135,7 @@ DCE862393CAAA6FF1294FB7056B53057 // UAC Ultra map07: Contains a scroller dependi setlinespecial 391 Sector_CopyScroller 99 6 0 0 0 } +1D9E43988940CCD3555724E15DD8B1AB // Happy Time Circus map01 has bad teleporters +{ + ignoreteleporttags +}