The old condition for player movement was...
1. player hasn't finished
2. player not in pain, or player in pain but on the ground
The else condition to this is therefore player has finished or player in pain
and in the air.
I believe K_MomentumToFacing (prior to bots) was only for letting the player
turn around after crossing the finish line, to face the camera.
(K_MomentumToFacing also does nothing in the air.)
Kart's manual player friction adjustments were being called after movefactor was reset, meaning friction changed but movefactor was default, essentially creating old 2.1 friction again
Instead of doing its best to avoid P_DamageMobj, it embraces it, using the damagetype system to decide how the player takes damage. Overall less stupid.
My rewrites clean up a LOT of weird/misleading behavior anyway, so I'm gonna push this regardless. Someone else will have to figure out another way to reimplement braking friction though -- we can't use it as is because it prevents being able to bump people.
- Split HUD stuff into k_hud.c/h
- V_SPLITSCREEN replaces the old function that sets V_SPLITSCREEN/V_HORZSCREEN flags system, and instead automatically moves it based on player number
- V_SLIDEIN makes HUD items slide in after the intro animation.
New function specifically for dropping rocketsneakers K_DropRocketSneaker
Used by Eggbox touchspecial to properly dispose of shoes and clean up hnext
Now also used by the shoe thinker to drop themselves
Fixes angle of spent shoe launch
- Moved respawn code to its own file
- Reorganized a lot of the code related to respawning
- As a result of the massive reorganization, I squashed several bugs. Most notably: mid-game joiners having weird spawns, being able to skip laps by respawning.
- Respawn lightsnake no longer takes you straight to your nextwaypoint -- it now has a minimum distance forward that it tries to put you at when you respawn.
Bots will steer *towards* rings, items, ring-stingable players, and players with lower weight. They will steer *away* from projectiles, traps, players using damaging items (such as invincibility), players with shields, and players with higher weight.
- Make ring usage smarter
- Ring usage threshold varies between characters (Tails will be more willing to dump rings, Metal will hold onto them)
- Decrease ring use threshold when they have a speed boost (tethering)
- Decrease ring use threshold when slowed down more than usual
- Properly implement Triple Sneaker & Rocket Sneaker usage
- Use smallest radius of all waypoints being predicted, to improve precision
- Bots never use prev waypoints
- Use sneaker if held for too long without a proper use
- Use sneaker if losing too much speed
- Use sneaker if you have another boost (tether, boosters)
- Add triple sneaker & rocket sneaker support
- Don't go towards shortcut waypoints without a shortcut item
- Bots get naturally better handling
- Only look for players who can pick up the item. Serves as a subtle tell for other players holding onto items, and lets you see the canon color more often
- Held eggman item uses black instead of player color
- Fix karma items not animating