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
This commit also fixes MF_NOCLIP not working properly on players. Sink now spawns an SPB explosion on successful hit, since dying is no longer a harsh punishment.