Graf Zahl wrote:- you somehow managed to mess up AActor::StaticSpawn by getting one random value up front and using it for everything in this function instead of choosing an RNG and get several different values out of it.
It made more sense at the time. I was aiming for making the SSG sync reliant with Vanilla, by mapping out the number of RNG calls for each rotation. For whatever reason, Doom maps a "player target number" to absolutely everything that spawns, even things that don't need it (for example, bullet puffs, and hence the change).
Easy enough to keep that and the floatbob RNG separate, however. Edit: Aaaannndd done.
Graf Zahl wrote:- Under no circumstances must this be used when either recording or playing back a demo or when playing a multiplayer game. Not even Boom tried this due to sync problems. That was the main reason the different RNGs were implemented for. And even if you choose to have them enabled, the demos need to be flagged.
I have no idea why Boom would have so many troubles with it, seeing as Doom goes out of its way to reset the RNG every new game, and it'll be straightforward to flag which PRNG is being used. In ZDoom, Compatflags are synced (one would damn hope so

), and thus the old RNG flag is too. Assuming multiplayer and demos are resetting the RNG tables like they're supposed to, the index will stay in sync as well.
I'll do some thorough tests, but I implemented it the way I did to make sure no such issues would arise. This did also mean skipping old PRNG calls for random sound indexes, simply because I doubt they stay in sync with console specific sounds (although, I would a love an excuse to go in and remove consoleplayer checks from
within the playsim code for sanity reasons.

).
Besides, the complaint usually comes up
in multiplayer (deathmatch, specifically), so it would be partly missing the point if it didn't work in it.
Edit: While are are on the subject of the SSG, is the P_LineAttack pitch supposed to be multiplied by 332063? Vanilla does <<5, and while 332063>>16 does indeed equal 5, 5<<16 is actually 327680. Is there something about the fixed point difference of 0.0668792724609375 I'm not grasping, here?