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
- Exist for 1.5 seconds before disappearing
- Flickers away in the last half second
- Twice as many spawned, at half the size
- Different arc
- Severely reduced gravity
- Don't jump if they hypothetically touch the floor
- Selected from the mapheader's Audience list
- Since most Prison Break maps don't have Audience lists set, you'll be seeing a lot of Flicky/Motobuddy/Chao for now
- Yes, these will disappear in deathpits like in Sky Chase
- Intentionally did not do this for the CD Special Stage UFO
- Don't require a mapthing to select a random Follower from the Audience list
- Don't print an error message if the mapheader Audience list is empty. This is probably intentional.
- srb2::math::Fixed
- Operator overloads for FixedMul and FixedDiv
- Implicit conversion between fixed_t, Fixed and
floating-point types
- srb2::math::Vec2
- Template to any type
- Operator overloads for arithmetic operations
- Convertible between different types
- srb2::math::LineSegment
- Template to any type
- Holds two Vec2 instances
- Sorting methods and vertical/horizontal test
- srb2::math::LineEquation
- Slope formula from LineSegment
- y method to find y from x
- Intersect algorithm
- Fixed-point specialization to avoid overflows
- srb2::math::LineEquationX
- Inherits LineEquation
- x method to find x from y