- 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.
- If they're already turning in one direction, they are more likely to steer in that direction for objects
- Bots have to want to turn in 1 direction for a few frames in a row before it'll let them
Prevents twitching & makes them less indecisive in general
- Add unique frames for inward and outward drifting.
- Increase the speed threshold required to reach your "fast driving" frames.
- Use slow driving frames when you're slowing down, even if you're techincally above the fast speed threshold.
- Use frameangle to smooth out the transition into drifting, instead of having "pre-turned" drift frames.
- Massive improvements to object steering -- they do it more often and more strongly
- Steering towards hurtable players is now weighted on acceleration, and steering away from painful players is weighted on handling
- Bots now can get & use Thunder Shield
- Bots now know how to detontate Eggman Item explosions early
- Top speed gets a buff to make up for them losing lots of speed without drifting, weighted more heavily towards low acceleration characters
- 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
This is accomplished by simply preserving
the player's body after disconnecting.
Bodies will despawn after the number of minutes
specified by the "rejointimeout" console variable (float).
A value of 0 disables the feature completely.
Clients rejoining are identified by their IP address,
and may rejoin even if the server is full or joins are disabled,
for as long as their body remains.
From a technical standpoint, when the user disconnects,
the player they were controlling does not leave,
the underlying player_t just keeps working normally,
except it does not receive any input anymore.
When the user reconnects, they are simply "relinked"
to their player_t.
Those "soulless" players can be identified through
their "quittime" field, which is the number of tics
elapsed since the user disconnected, or zero
if still connected. "quittime" is exposed to Lua.