- Fixes relative teleport not updating floorz/ceilingz,
causing camera to potentially get clipped by old
position
- Fixes absolute teleport not resetting viewpoint
interpolation
In levels with tens of thousands of precipmobjs, the
overhead of running a thinker for all of them is too much,
no matter how small the thinker is.
ALL thinking is done inside the renderer now, where it can
be limited by distance. Precipmobjs track the last
leveltime they thunk, so interpolated frames don't think
twice.
stringarg[0] and stringarg[1] are now are used as doubles of arg[0] and arg[1]. Specials that use both string args and regular args need to shift their args up to accomedate. This makes the behavior align more closely with the other Doom ports and removes a dumb manual string arg amount thing in callSpecImpl.
I only adjusted the specials that can be called from ACS. I did not mess with level load specials or thing types, since it's not as important. It would be nice to clean them up before release for consistency, though.
- For P_Ticker()'s calls to M_UpdateUnlockablesAndExtraEmblems
- Do not check non-UCRP_REQUIRESPLAYING conditions
- Controlled by a new `boolean doall` parameter to M_UpdateUnlockablesAndExtraEmblems
- Most other contexts have this as true
- Forced true if update is meant to be silent
- Only check UCRP_REQUIRESPLAYING conditions if a relevant property has been touched
- Controlled by a new `boolean checkthisframe` property on roundcondition_t
- Set in all contexts where roundcondition_t is modified
- Would also be set on lap change, but that case is already covered by the following
- Check all conditions, both UCRP_REQUIRESPLAYING and not, on:
- local player K_HandleLapIncrement
- local player P_DoPlayerExit
- local player P_DoTimeOver
- Controlled by a new `boolean deferredconditioncheck` property on gamedata_t
- UDMF: use args[1] instead of line tag.
- Binary: do not add thing angle to thing's tag list, just
compare angle directly. Seemed weird that this was the
only place in the code to alter the tags list like that.
- Previously was extern scope UINT32 for all players, but this permits one player in a netgame taking a secret path while others don't.
- Attempted to make user-specifiable string, but while I can undo the effects of strtok for the condition, I cannot undo the effects of strupr - so it's disabled for now until we come up with a more robust and hopefully direct system.
- Also removed some old SRB2-originated assumptions that you couldn't unlock anything in multiplayer from the unlocktrigger system.
- Move ranking to its own file.
- gpRank (the variable) -> g_gpRank
- gpRank (the struct) -> gpRank_t
- Functions that worked on the global directly now take a pointer to a struct
- Fixed total ring increment
- Fixed final lap's lapPoints being discarded
- Capsules are now added when exiting with the rest of the stuff
- Record starting position properly for easing
- Uses linear easing now (everything else ended up looking bad with multiple waypoints, would to calculate splines if you wanted to ease that)
- arg4 is now how long the camera spends between each waypoint
- arg2: TID of an object to make the camera's angle/pitch follow.
- arg3: Zoom tube waypoint sequence to start following.
- Ceremony uses one-screen, regardless of previous splitscreen-ed-ness
- Combine multiple adjacent saves
- Generally could happen during game ticking, combined via gamedata->deferredstate
- DEFINITELY happened in splitscreen PWR handling, adjust those loops directly
- Write "dirty" state via gamedata->crashflags on everything except safe, intentful unloads
- Add UC_CRASH, which unlocks dependent on the above "dirty" state being present at gamedata load
- We can use this for something more useful and less funny later.
- Play "O_LOSERC" on the menu, starting with the Challenges screen, if a UC_CRASH condition has been met.
- P_ProcessSpecial: Correct likely copypaste error in desired plane height and texture
- Was using sector floor's height and texture instead of ceiling's.
- P_ConvertBinaryLinedefTypes: assign affected plane in a saner way
- Resolves issue #429