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; - } } //===========================================================================