Menu

#690 Vanilla compatible bossactions

Always occurs!
open
None
5
2023-08-23
2023-08-21
No

Doom Legacy 1.48.12 uses a modified death check for boss actions.
Line 3548 in function A_Bosstype_Death():

            // Check if really dead and finished the death sequence.
            // [WDJ] Corpse has health < 0.
            // If two monsters are killed at the same time, this test may occur
            // while first is corpse and second is not.  But the simple health
            // test may trigger twice because second monster already has
            // health < 0 during the first death test.
            if( mo2->health > 0  // the old test (doom original 1.9)
                || !(mo2->flags & MF_CORPSE)
                || mo2->state != P_FinalState(mo2->info->deathstate) )
            {
                // other boss not dead
                goto no_action;
            }

This can break WADs that expect the original behaviour. Example:
https://www.doomworld.com/idgames/levels/doom2/megawads/atone
Map 01: Walk forward to the switch behind the first door. It will kill the enemies, but the doors do not open.

It works with the original test, like this:

            if( mo2->health > 0  // the old test (doom original 1.9)
#if 0
                || !(mo2->flags & MF_CORPSE)
                || mo2->state != P_FinalState(mo2->info->deathstate)
#endif

Maybe there should be a config option for this (I would suggest a default behaviour similar to vanilla Doom).

Discussion

  • Wesley Johnson

    Wesley Johnson - 2023-08-22
    • assigned_to: Wesley Johnson
     
  • Wesley Johnson

    Wesley Johnson - 2023-08-22

    Thank you for the information.
    Going to have to think on this a while. First to remember what happened that required the fix.
    I expect that some compatibility switch will have to be invented.
    However, I doubt that any player that walks to that door will ever realize which switch they need to find to make that door work.
    Got any idea what the door logic is that breaks.
    There are always going to be wads that make use of broken behavior and thus break when it gets fixed.

     
  • Michael Bäuerle

    This problem is similar to my voodoo doll problem from #688.
    The switch was already present, but I overlooked it.

    Today it seems that nobody uses Doom Legacy for testing new WADs anymore.
    People use Crispy for Limit removing, PrBoom+/DSDA for Boom, Woof for MBF and GZDoom otherwise to test if their new WAD "works".
    Very few new WADs are created for Doom Legacy and its specific features.

    Speaking as a player, not as a developer:
    Facing reality I would propose to change the default behaviour to follow the engines listed above, for maximum compatibility, so that playing new WADs "just work".
    Currently many of the new WADs do not work with Doom Legacy and the reasons are often minor "fixes", like in this case, not completely missing features like UMAPINFO.
    It is annoying to search for such things every time, even if I get it working at the end.

    To not break existing WADs, that use such specific Doom Legacy features, switches must be present to activate them again.
    Maybe only a single switch "Activate old Doom Legacy behaviour"?
    Otherwise, would it be possible to at least group them into a separate menu like "Doom Legacy specific features"?

     

Log in to post a comment.