foxBot! ExAI-based Multiplayer Coop Bots

[Reusable] foxBot! ExAI-based Multiplayer Coop Bots 1.6

General Changes:
  • Support for 2.2.10
  • Add "addbot" / "removebot" commands to add / remove bots
  • Add "alterbot" command to alter a bot's skin and color
  • Add "ai_maxbots" setting to limit number of added bots per player
  • Add "ai_reserveslot" convar to reserve a player slot for new clients
    • (ensures players are still able to join a game with many bots active)
  • Improve status messages shown with "listbots" command
  • Add support for swapping characters with bots
    • (press Fire while inspecting bot with Weapon Select / Next / Prev keys)
  • Add splitscreen commands (e.g. "addbot2", "setbot2", etc.)
  • Fix SP bots losing their ability AI override on death
AI Behavior Changes:
  • Fix a few issues on 2.2.10, like always facing north
  • Improve "ai_catchup" behavior (which also now works in singleplayer)
  • Fix attempting to target things too far down in goop
  • Fix forgetting how to use shield abilities while holding a Fire Flower
  • Improve use of Armageddon Shield nuke to also consider target health and fret status
  • Fix v1.5 regression causing accidental super transformations while bored / idle
  • Cool!
Reactions: Nightwolf
General Changes:
  • Allow bots to always respawn in special stages, even when player-controlled (e.g. teleported over death pit)
  • Rewrite special stage respawning to be considerably more sane, instead of a hack
  • Fix occasional Lua error from BotRespawn hook in singleplayer
  • Avoid teleporting bots to disconnecting or spectating leaders (unless AI-controlled)
  • Holding Toss Flag while stationary now orders bots to use abilities (like pushing against something)
  • Clean up "bothelp" command to be context-sensitive (with a parameter to show all commands)
  • Add new "overrideaiability" command for overriding jump / spin ability AI
    • (advanced, intended for experimentation w/ custom characters - use "bothelp 1" for more info)
  • Fix rare issue where SP bot could reset your rings to 0 when exiting a level
  • Fix issue where SP bot could grant a perfect bonus with only half a level's rings collected (oops)
  • Fix potential network desync when evaluating a leader's following bots
  • Rework multi-bot following to always arrange bots into a line when following a single leader
  • Allow leader to cycle their following bots with Weapon Next / Prev keys (default Mouse Wheel)
  • Allow leader to inspect their following bots with Weapon Select keys (default 1-7)
  • Truncate player names to 10 characters on bot HUD
  • Fix rare issue where bots occasionally can't pick up rings while their leader is dead
  • Many minor fixes and code cleanups, eradicating most magic numbers
AI Behavior Changes:
  • Fix not targeting minecarts, and sometimes getting confused when jumping on rollout rocks
  • Fix occasionally trying to jump for things we can't actually reach
  • Avoid picking up leader any time we're fly-attacking a target
  • Fix trying to grab gravity box when leader isn't under reverse gravity
  • Allow grabbing Tokens and Emeralds in multiplayer
  • Fix not always not jumping for targets correctly when being carried
  • Allow communicating targets with other AI, increasing efficiency in large groups
  • Add support for all vanilla custom abilities (such as Homing Attack, Telekinesis, and Air Drill)
  • Rewrite existing abilities to be much more responsive when following or in combat
  • Improve understanding of being flown around by other players or bots
  • Add a small reaction time interval to spinning with leader or thokking
  • Improve out-of-sight waypoint navigation, particularly through teleporters
  • Improve Knuckles' glide and climb AI when following
  • Improve Tails' chain-carry behavior at high speeds
  • Add new idle behaviors
  • Fix performance issue where AI could run target selection every frame at certain ranges
  • Fix AI sometimes not busting a bustable wall their leader is pushing against
  • Improve understanding of chain-bopping enemies, particularly when making epic jumps from far above
  • Fix derpy targeting behavior in special stages with enemies present
  • Fix a few remaining movement oddities when scaled (e.g. shrunk)
  • Fix a few v1.3 regressions with Fang's combat AI (and generally improve it a bit)
  • Other miscellaneous tweaks and fixes
  • Cool!
Reactions: JonasSJKNinja
General Changes:
  • Fix disconnecting bots being unable to teleport
  • Fix position resetting when using "setbot" command as a spectator
AI Behavior Changes:
  • Fix Tails again attempting to fly-attack underwater or grounded targets
  • Fix Tails constantly trying to grab rings with flight (unless already flying)
  • Fix Tails being unable to fly-attack targets with an attraction shield
  • Fix disconnecting bots getting stuck trying to grab rings etc.
  • Clean up movement, particularly when close or in combat (allows more short hops)
  • Allow using elemental shield to quickly stop, if close enough to ground
  • Fix a few cases of accidentally jump-cancelling a spindash
  • Account for momentum when determining attack range for custom SF_NOJUMPDAMAGE characters
  • Fix nonsense attraction shield target range check
  • Don't extend target distance for rings etc. in special stages
  • Fix targeting invisible things
  • Allow Tails to fly-attack targets a bit further away, and fly around in goop smarter
  • Fix various longstanding issues with relative height checks in reverse gravity or at scale
  • Try switching targets if we've failed to hit our current target after 3 jumps
  • Attempt to join matches when spectating by pressing fire
  • Support for CBW's Chaos Mode mod - prioritize objectives, ready up by jumping into emblems
  • Other miscellaneous tweaks and fixes
  • Cool!
Reactions: JonasSJKNinja
General Changes:
  • Fix potential softlock from bots respawning in special stages
AI Behavior Changes:
  • Improve Tails' fly and fly-attack AI behaviors
  • Fix sometimes repeatedly jumping for rings etc. when we shouldn't
  • Fix sometimes aborting jump logic against certain targets too early
  • Fix jittery movement when tracking slow-moving targets
General Changes:
  • Fix shields sometimes getting popped when they shouldn't (should only happen when leader gets hit)
  • Allow nukes etc. to be set off when shield gets popped
  • Spread out bots more when assigned to a random leader (ai_defaultleader 32)
  • Fix SP bot sometimes resetting rings on respawn
AI Behavior Changes:
  • Fix v1.2 regression causing AI to no longer understand custom SF_NOJUMPDAMAGE characters
  • Fix a few cases where AI might not charge a spindash properly
  • Rewrite Fang's combat AI with cleaner logic that should derp out less
  • Reduce time Amy waits to shield-buff friendlies again after previously failing
  • Limit range AI will attempt to engage targets while being carried
  • Fix Tails forgetting how to chain-carry a tired flying leader w/ super form available
  • Tails AI now toggles between super / normal thinkfly (up arrow) every second if available
General Changes:
  • Allow bots to respawn in special stages when AI-controlled
  • Allow SP bot to inherit player's powerups (thus allowing shield behaviors to be seen in SP)
  • Invulnerable bots' shields are now popped when their leader takes a hit without a shield
  • Fix issue where SP bot could sometimes carry player without actually flying
  • Allow players to remember their "real" ring / life counts as a bot
  • Allow teleporting to leader even if they're spectating
  • Wait a second before teleporting to leader on respawn
  • Fix various life-sync issues with 0 lives
  • Raise minimum ai_seekdist to a more reasonable 64 fracunits
  • Fix a few issues with vertical aiming reset when taking back control of a bot
  • Fix issue where "AI Control In..." would still display when ai_sys was off
  • Fix issue where thinkfly overlay (up arrow) was spawned and destroyed every frame
  • Assorted code cleanup and other minor fixes
AI Behavior Changes:
  • Add support for CoopOrDie enemy tagging / target priority mechanics
  • Hop out of spin if going too slow, also try to steer an active spin into targets more
  • Improve Tails' flight logic to descend a bit more aggressively and land near leader quicker
  • Mirror leader's OLDC votes
  • Improve movement prediction, particularly underwater and against fast-moving targets
  • Prefer spindashing targets on slopes (and rev it longer if needed)
  • Allow Sonic to thok-attack targets
  • Allow Knuckles to glide/slide-attack targets
  • Always use ability when jumping out of special stage water
  • Wiggle free from Pterabytes!
  • Fix Tails attempting to fly-attack underwater or grounded targets
  • Improve Sonic thok usage, avoiding it when it would actually slow us down
  • Improve Metal Sonic / Super Sonic float usage, with better height checks
  • Allow whirlwind shield ability to be used against passive targets (e.g. collecting rings)
  • Fix longstanding issue where AI only searched for targets half as often as intended
  • Allow Fire Flower to be used against monitors (and targets above or below)
  • Fix AI sometimes getting stuck spindashing against an obstacle
  • Fix not attacking DSZ3 boss (due to being unable to "see" it)
  • Make sure we're actually on target before attempting to spin-attack a target
  • Tweak Amy's hammer attack logic to account for LHRT range a bit more
  • Fix vertical spectator movement in reverse gravity
  • Fix Fang sometimes getting stuck below targets we're trying to shoot
  • Fix AI sometimes flipping out when recalled to leader during combat
  • Fix up out-of-sight waypoint placement (can better follow leader through teleporters etc.)
  • Check vertical distance to waypoint when determining if we've reached it or not
  • Fix v1.1 regression causing flame shield ability to not be considered at long ranges
  • Allow bubble shield to be used as a double-jump when close enough to ground
  • Fix sometimes getting stuck in zoom tubes (e.g. ERZ1 2D tube section)
  • Other miscellaneous behavior fixes and improvements
  • Cool!
Reactions: RoimWolf