If player is in one of these states:
- Invincibility
- Grow (K_IsBigger)
- Flame Shield dash
- Over 200% speed
And the other object:
- Does not have MF_DONTPUNT
Then, touching a solid object:
- Punts the object, unless the object has MF_ELEMENTAL
- Fizzles the object, if the object has MF_ELEMENTAL
Or, when an object damages the player:
- That object is punted, unless it has MF_ELEMENTAL
- The object fizzles, if it has MF_ELEMENTAL
Punting means:
- A copy of the object is made
- Both the player and copy receive 5 tics of hitlag
- The copy is thrust away from the player at a minimum of
60 FU, or 2x either the player's or object's momentum,
whichever is ultimately greater
- The copy despawns after 2 seconds
- The copy flickers constantly, while thrust away
Fizzling means:
- The object disappears completely
- A puff of smoke is spawned in place of the object
- No hitlag is applied to the player
Both punting and fizzling:
- Hide the original object (intangible and invisible)
- The original object reppears after 30 seconds
- For 2 seconds before reappearing, the object flickers
back in, but is still intangible
The way the cap was being handled was kind of messed up, and was trying to subtract your existing Super Ring count.
But because the datatype doesn't support negative numbers, it rolled under to approx UINT16_MAX!
Fix the datatypes and add the extra over-range check to prevent this from happening again.
- No need to call CV_RegisterVar
- Cvar definitions live in only one file, easier to locate
- Organized into sections -- netvars, cheats, etc.
- Use builder pattern to initialize cvars
- Still need to extern if you want to read the cvar value
Since gravity is not involved, this will be more
consistent but it is also slightly different than before.
I tried to match it closely to how it behaved before,
though.
- Re-entry SHOULDN'T get stuck nonzero on first join for a given node
- Set to 0 for all players on level start
- Set to 0 for all players on level end
- DEFINITELY never intentionally set on join with teamchange finalisation
- This basically just prevents people from spamming New Challenger after hopping out mid-session, since the previous version, in addition to being buggy, was a little annoying.
- New Challenger no longer happens on tic 0 of mapload
- Handles any late, pending PF_PF_WANTSTOJOINs without threat of reset in P_PostLoadLevel
- Dropped power-ups become paper items (overloaded to
store power-ups instead of items).
- The dropped power-up stores its remaining duration.
- The power-up can be picked up during any state.
- If you already have the same kind of power-up, the
duration is simply extended.
- Added new spindashing conditions:
- In offroad.
- Trying to go up-hill on a steep slope.
- On a conveyor going the opposite direction they're trying to go. (Barren Badlands)
- Instead of checking for any spindash condition and adding to the confirm timer, it adds to the confirm timer for every single condition.
- Increased the confirm time from 2sec to 3sec to accommodate for this change.
- Fixed not using precise momentum angle, causing the low-speed scenarios spindash is intended for to not always work.
- Bots now check for spindash conditions even in damage states, allowing for spindashes after a spinout.
- Fixed the spindash confirm not decreasing over time when entering a condition and then exiting it, causing random spindashes when it wouldn't make sense.
- Y is now additionally another macro for HOLD!
- Disable HOLD! drop from respawning when done with Ring Shooter.
- Immediate release Ring Shooter now goes back a waypoint, and does not have a minimum distance to go forward anymore.