- There's a freeze cheat bool to freeze everything except for players.
- There's a level freeze bool to freeze literally everything.
- There's a frozen bool on mobj_t to explicitly control freeze status on an object.
- Add checkpointId to player_t and netsave
- checkpointId persists if the map is reloaded, but not if
the map is changed or if "resetplayers" is ticked
- Players spawn at the last touched checkpoint instead of
at a player start
- Tether sparkles fly out of the player in a circle
Replaced all mentions of starpostnum and Starpost w/ cheatchecknum and CheatCheck (so Ivo can stop asking why we still need it when its going to save our asses on release patches)
- Store a netsynced SINT8 `hudrings` on the player struct which stores the last rings the player has during play
- So this doesn't get updated after you finish the level
- Fixes the issue where the bot ghost that inhabits your body after finishing will use your rings, muddying how many you took into the total
- Fixed order of operations that prevented lives earned with GP rings from being given
- Also uses hudrings for consistency
- Make the life-give context in P_DoPlayerExit cleaner
- GPEVENT_NONE
- no GTR_SPHERES
- Fix the last few bugs I could find with thing args
- Move version update code
- Rename internal variables to `thing_[string]args` to make older code merge issues more obvious
SRB2 uses a LOT of mapthing args compared to Hexen (which has none) and ZDoom (which only has them on objects that will never ever activate scripts). So we really badly needed to separate the two if we want attaching scripts to things to be useful.
- Save retry condition in G_BeginLevelExit
- Apply condition in G_FinishExitLevel
Preparation for ACS level end scripts, since the exit
condition will need be known when the countdown starts,
not when it ends (that'd be too late to do anything in the
level).
- Replaces a few D00DKart objects because the doomednum specifically replaced one of these
- Reports on load if the map has too many, or if one's assigned but the object doesn't exist
This isn't currently the cause of any issue, but found this future footgun while researching the previous commit.
Sometimes functions are turned into macros, which could potentially result in multiple save->p digestions if this was eventually turned into one.
- Guard is always up, not activated by e-brake or spheres
- Guard can still be broken by player contact
- No instawhip cooldown from Guard being up
- No sphere loss while Guard is up
- Guard appears at max size
A much more focused replacement for Hornmod, specc'd out by Tyron and Oni working together and implemented by the author of this commit because it's pretty funny.
- Followers have `hornsound` in their SOC configuration.
- The default sound for all followers without a provided one is sfx_horn00.
- They'll play this sound if you use lookback with one following you, and there's nearby players to get the player looking all the way around.
- Only the players who are successfully considered for lookback will hear it.
- Has a v1-like visual with less randomisation, but still netsynced.
- Also controlled by the cvar `taunthorns`, which, like `tauntvoices`, takes "Tasteful" (default), "Meme", and "Off".
TODO: make the condition for horn a little delayed, so you have to hold lookback for a little bit.