From 2a291165ee48b285f11a7e1d5739c4376eaf47e8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Sep 2017 09:16:26 +0200 Subject: [PATCH] - fixed: For original Hexen, executing a death special should not clear it. This addresses the bell in HexDD's Badlands being rung before it is ready to use. This also removes the redundant special handling in the ZBell actor. --- src/p_map.cpp | 3 ++- wadsrc/static/zscript/hexen/hexenspecialdecs.txt | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index 86444a8f8..569df7f2c 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -6704,7 +6704,8 @@ bool P_ActivateThingSpecial(AActor * thing, AActor * trigger, bool death) false, thing->args[0], thing->args[1], thing->args[2], thing->args[3], thing->args[4]); // Clears the special if it was run on thing's death or if flag is set. - if (death || (thing->activationtype & THINGSPEC_ClearSpecial && res)) thing->special = 0; + // Note that Hexen originally did not clear the special which some original maps depend on (e.g. the bell in HEXDD.) + if ((death && !(level.flags2 & LEVEL2_HEXENHACK)) || (thing->activationtype & THINGSPEC_ClearSpecial && res)) thing->special = 0; } // Returns the result diff --git a/wadsrc/static/zscript/hexen/hexenspecialdecs.txt b/wadsrc/static/zscript/hexen/hexenspecialdecs.txt index feebf515f..51aaaace5 100644 --- a/wadsrc/static/zscript/hexen/hexenspecialdecs.txt +++ b/wadsrc/static/zscript/hexen/hexenspecialdecs.txt @@ -898,11 +898,6 @@ class ZBell : Actor { bNoGravity = true; Height = Default.Height; - if (special) - { // Initiate death action - A_CallSpecial(special, args[0], args[1], args[2], args[3], args[4]); - special = 0; - } } //===========================================================================