- Right on the line, P_PointOnLineSide may disagree with
P_TraceWaypointTraversal.
- If this happens, nextwaypoint may update ahead of the
finish line before the player crosses it.
- This bloats the finish line distance and triggers lap
cheat prevention, preventing the player from gaining a
lap.
- Since this only seems like it can happen very near to
the line, simply don't update waypoints if the player is
touching the line but hasn't crossed it.
- This will cause distancetofinish to jump but only for a
very short distance (the radius of the player).
Before
- Each time / once only activates when the mobj's sector
changes
- The activation may depend on the mobj touching the floor
- If the mobj is in the air when the sector changes, the
action will never be activated
After
- Each time / once actions that require floor touching
also activate every time the mobj lands on the ground
from the air (regardless of whether the sector changed)
- Flung a little higher into the air
- Takes momentum of whatever killed the player
- Bounces off walls
- Bounces off the floor once
- After bouncing off the floor once, corpse noclips
through walls and floors
Notable deletions:
- Metal Sonic Race
- Includes all the specialised recording/playback apparatus which made g_demo.c harder to read
- A bunch of hyperspecialised code inside several A_ actions
- EXCEPTION: intentfully left in the spriteless SMK stuff for Sal's add-on down the line.
There is a Nova Shore enemy that switches between
MF_SPRING and MF_ENEMY, and the upper bits of the mass
field are conflicting.
We don't use this functionality aside from some SRB2
holdovers, but who cares about those? ;)
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