During deathmatch in vanilla Heretic and Hexen, the Ring of Invulnerability and Icon of the Defender do not respawn when picked up during play, in contrast to the other artifacts in the level.
However, in GZDOOM and it's derivatives, this is not the case. They will respawn with the other artifacts after a cooldown. Even when having sv_respawnsuper set to false, they will do so anyway.
I'm guessing the engine doesn't view them as super items?
Small bug regarding artifacts in Heretic/Hexen
Moderator: GZDoom Developers
Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
- Player701
-
- Posts: 1636
- Joined: Wed May 13, 2009 3:15 am
- Graphics Processor: nVidia with Vulkan support
- Contact:
Re: Small bug regarding artifacts in Heretic/Hexen
It looks like these items don't have the INVENTORY.BIGPOWERUP flag.
Re: Small bug regarding artifacts in Heretic/Hexen
Looking at Heretic's source code, at the very least, it appears that there is code preventing the Ring of Invincibility from respawning, but it's not in quite as obvious a place.
However, looking at Hexen's source code it appears to be a whole different story - I actually don't even know what to make of this. https://github.com/videogamepreservatio ... #L878-L901
It suggests that there are actually respawn "states" where it respawns said artifacts after a period of time as defined by their wait state.
How deep does this rabbit hole go? Well, I went and looked up the actual state the artifact goes in (in-world) when it is picked up. https://github.com/videogamepreservatio ... #L411-L431
What conclusion to draw from this? It comes back after 10 minutes, plus a short amount of animation time. Furthermore, the other artifacts as defined near the links I gave above, have different periods of respawn time, and if not specifically defined, do not respawn at all.
I kind of figured fixing this would not be as simple as adding flags. Some more evaluation and discussion is merited for how to handle this.
However, looking at Hexen's source code it appears to be a whole different story - I actually don't even know what to make of this. https://github.com/videogamepreservatio ... #L878-L901
It suggests that there are actually respawn "states" where it respawns said artifacts after a period of time as defined by their wait state.
How deep does this rabbit hole go? Well, I went and looked up the actual state the artifact goes in (in-world) when it is picked up. https://github.com/videogamepreservatio ... #L411-L431
What conclusion to draw from this? It comes back after 10 minutes, plus a short amount of animation time. Furthermore, the other artifacts as defined near the links I gave above, have different periods of respawn time, and if not specifically defined, do not respawn at all.
I kind of figured fixing this would not be as simple as adding flags. Some more evaluation and discussion is merited for how to handle this.
- drfrag
- Vintage GZDoom Developer
- Posts: 3141
- Joined: Fri Apr 23, 2004 3:51 am
- Location: Spain
- Contact:
Re: Small bug regarding artifacts in Heretic/Hexen
So it's okay to add the INVENTORY.BIGPOWERUP flag to the ring of invincibility?
Re: Small bug regarding artifacts in Heretic/Hexen
Maybe, I haven't done that yet because I don't know how to handle Hexen's. The issue with Hexen's is no artifact respawns - except 4 specific ones and those are on a timer. And that's a big issue because it doesn't work that way in Heretic, and those artifacts share the same actor class.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Small bug regarding artifacts in Heretic/Hexen
All that Hexen shit is already encapsulated in the base class. All that's needed is the flag, the base implementation will take care of the rest.
I just added the flags.
I just added the flags.