Multiplayer Bot Features (aka AddPlayer)
- Establishes constants and types for 
player->bot: 0BOT_NONE, 1BOT_2PAI, 2BOT_2PHUMAN, 3BOT_MPAI. 0-2 function the same as always, while 3 serves as an alternative bot type with full player functionality. - Adds the lua function 
G_AddPlayer(*skin, *color, *name, *bot), which adds an unmanned player instance to the game. Built off of code started by Tatsuru. - Adds the lua function 
G_RemovePlayer(*playernum). Despite the name, this is currently set up to only kick players that do not have bot typeBOT_NONE. - MPAI bots will respond to the 
BotTiccmdhook. - Bots has been reworked to allow support for multiple AI per game, in both online and offline environments.
 - 
player.blockedhas been created and is read+writable to lua. It tracks whether movement was blocked during the last input frame. - 
player.lastbuttonshas been created and is read+writable to lua. It stores the player's cmd button inputs from last frame. - 
player.botleaderhas been created and is read+writable to lua. By default, AI will follow this player, and 2P AI will respawn to them. - Various other minor tweaks
 
Notes:
- MPAI bot types have their own lives and checkpoint status, and will not respawn to a botleader when far away. They can receive game overs in single player, but they will respawn with three lives during the next level load sequence and will not consume continues.
 - For general gameplay purposes, it is recommended that only 
BOT_2PAIandBOT_MPAItypes are spawned.BOT_2PHUMANbots spawned throughG_AddPlayer()will be instantly reset toBOT_2PAI.G_AddPlayer()allows for the creation ofBOT_NONEtypes, but this is strictly as a developer tool to modders; keep in mind thatBOT_NONEplayers cannot be removed with theG_RemovePlayerfunction. - 
player->botmemhas been created as an internal struct for storing AI variables through netcode. However, the struct is potentially subject to change in a future update, and as such has not been made available through the lua framework. - This branch makes the default co-operative Tails AI compatible in multiplayer environments, but no new AI logic has been added for other gametypes or characters. Modders are encouraged to use the 
BotTiccmdhook to overwrite the default bot behavior with their own scripts. 
Example
addplayer.wad
addbot <bot type> - Adds a bot player instance to the game.
kickbot <playernum> - Removes a bot player from the game.
getbots - Outputs player bot-related variable information in the console.
Edited  by Claire Ellis
