Ugh. Not again. In his infinite wisdom Randi once chose to make most of Hexen's pickups NOGRAVITY, so that they work better with the altered floatbobbing and it can't really be surprising that this now causes problems.
The first time such a thing got reported I was able to work around it with some compatibility.txt handling, but it seems that something needs to be done about it for real.
Well, to be honest, I have no idea how Randi even got the idea that this fix might be proper.
Just starting an old version of ZDoom, flying into the air and summoning some pickup, it certainly falls down, just like anything else.
So whatever this was supposed to accomplish, the solution is dead wrong.
Ok, well, the original code was even nastier. It yanks the item to the floor each frame so that they never fly.
Which still doesn't mean that NOGRAVITY is even remotely the correct thing to do here. My guess is that some random guy complained about his own ineptness at DECORATing and Randi dilligently complied.
But whatever, in Hexen these things do not fly in the air, in old ZDoom they didn't and I don't think they should now. If someone needs a NOGRAVITY item, do it yourselves!
And this had nothing to do with the change of how floatbobbing works, that map doesn't work as described in older ZDooms as well. I'd really like to run some comparisons with another engine but is there even something that can run Hexen and is not Doomsday and comes with a readily compilable source?
I'd like to address this issue properly, not by a band-aid change that does more harm than good.
Ok, so just looking at the Chocolate source revealed something really sneaky:
Hexen performs some very special actions when the FLOATBOB flag is set:
The item's map height value is not just used for spawning, it is also stored in 'special1'.
Now when the actual floatbobbing is performed it actually calculates: item->floorz+item->special1+floatboboffset.
Of course this behavior is completely and utterly incompatible with anything ZDoom does and unconditionally enabling it will inevitably break many, many ZDoom mods out there.
What this needs is a real compatibility option that gets set for any Hexen IWAD map and any map coming with a Hexen format MAPINFO, anything else will inevitably blow up again.
No, just some short explanation what it does.
ZDoom never hat the 'special1' part so obviously the items never behaved as intended and the last attempt to fix it inevitably backfired because it was done withut even checking the original implementation.
Well, anyway, I managed to address the real problem properly now, but doing so only for old Hexen maps.
I think this should teach one lesson: Sometimes a quick band-aid fix seems to be attractive but many times this will backfire miserably later.
It's always better to investigate what's going on and try to address an issue properly. In this case it wouls have spared us from a lot of trouble - and some people may even notice now that some maps they made over the last few months (not that there are many Hexen projects to begin with...) no longer behave as intended. Well, sorry, can't be helped in this situation.