Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Allow voodoo dolls to trigger exit line after death #814

Open
andrikpowell opened this issue Oct 21, 2023 · 4 comments
Open

[Bug] Allow voodoo dolls to trigger exit line after death #814

andrikpowell opened this issue Oct 21, 2023 · 4 comments
Assignees

Comments

@andrikpowell
Copy link

Hey Brad, I noticed that the death exit in MAP12 of Hell Revealations doesn't actually work correctly.

At first I thought it was the barrel physics, but after some tests I've deduced it is due to a voodoo doll unable to trigger the exit line after another voodoo doll kills the player. Obviously it's important to be able to kill the player to enter the next map.

Basically the way the exit is set up is that there are two vanilla conveyors (crusher and barrel) that each push a voodoo doll over an action line. The first conveyor pushes a voodoo doll to telefrag another voodoo doll to ensure the player's death. The second conveyor that happens a little bit after pushes a voodoo doll over an exit line.

For some reason Doom Retro doesn't allow the voodoo doll to cross over the exit line if the player is already dead, and therefore the player is unable to continue to the next map.

@bradharding bradharding self-assigned this Oct 21, 2023
@dashodanger
Copy link

Just a pot shot, but does it have anything to do with the compat_zombie check from 7e95a45 ?

@andrikpowell
Copy link
Author

andrikpowell commented Oct 22, 2023

Just a pot shot, but does it have anything to do with the compat_zombie check from 7e95a45 ?

I don't think this would fix it, since the setup works completely fine in GZDoom and old ZDoom ports, and they don't even have a compat_zombie setting (nor can it be forced in ZMAPINFO).

Also, just to try it, I did add compat_zombie to the RMAPINFO map entry, and it did not fix it. Just player dying without entering the next map.

I can see in IDDT that the voodoo doll does get pushed over the exit line, it just doesn't move to the next map.

@bradharding
Copy link
Owner

Just a pot shot, but does it have anything to do with the compat_zombie check from 7e95a45 ?

I think you're right, @dashodanger, it does. The compatibility flag should be enabled by default, which I've now done so in 559fac0.

The other problem is that compat_zombie isn't being parsed correctly in MAPINFO lumps, so that's why using it wouldn't work. (The MAPINFO parsing code needs a complete rewrite. It's a mess.)

@andrikpowell, is this issue now resolved with that commit?

@andrikpowell
Copy link
Author

@andrikpowell, is this issue now resolved with that commit?

Yes, this did solve the problem.

Although, I'm still a little confused why that option allows it to work specifically in Doom Retro, since ZDoom ports do not allow for the player to become a Zombie, and yet the death exit worked fine in those ports without any compatibility settings having to be added.

The other problem is that compat_zombie isn't being parsed correctly in MAPINFO lumps, so that's why using it wouldn't work.

Ah, so that's why it didn't do anything when I added compat_zombie to the RMAPINFO.

(The MAPINFO parsing code needs a complete rewrite. It's a mess.)

If you are doing a rewrite of the MAPINFO code, can I request something similar to ZMAPINFO's defaultmap?

defaultmap { properties }
Sets the defaults that will be automatically used for all subsequent map definitions.

This way instead of having to put this under every map entry:

MAP MAP01
{
	   levelname = "Fucking Hell"
	   levelpic = "CWILV00"
	   skytexture = "SKY1"
	   next = "MAP02"
	   music = "D_RUNNIN"
	   partime = 30
	   compat_floormove
	   compat_limitpain
	   compat_nopassover
	   compat_useblocking
	   nojump
}

MAP MAP02
{
	   levelname = "Isle Near Radar"
	   levelpic = "CWILV01"
	   skytexture = "SKY1"
	   next = "MAP03"
	   music = "D_STALKS"
	   partime = 300
	   compat_floormove
	   compat_limitpain
	   compat_nopassover
	   compat_useblocking
	   nojump
	   compat_zombie
}

I could just do something like this, and have compatibility settings applied to every map below it:
(and only add compatibility options specific to one map just on that one map entry - in this example: compat_zombie)

defaultmap
{
	   compat_floormove
	   compat_limitpain
	   compat_nopassover
	   compat_useblocking
	   nojump
}

MAP MAP01
{
	   levelname = "Fucking Hell"
	   levelpic = "CWILV00"
	   skytexture = "SKY1"
	   next = "MAP02"
	   music = "D_RUNNIN"
	   partime = 30
}

MAP MAP02
{
	   levelname = "Isle Near Radar"
	   levelpic = "CWILV01"
	   skytexture = "SKY1"
	   next = "MAP03"
	   music = "D_STALKS"
	   partime = 300
           compat_zombie
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants