Most of it works all right but random errors keep popping up that will be really hard to fix. Using a certain shade of blue in the saved avatar function causes console errors and the bot to turn red and black instead. When I run internet servers with it bots occasionally pick up events from others in completely different places, so a standing bot will suddenly start attacking the closest people to it which seems odd.

Most of it works all right but random errors keep popping up that will be really hard to fix. Using a certain shade of blue in the saved avatar function causes console errors and the bot to turn red and black instead. When I run internet servers with it bots occasionally pick up events from others in completely different places, so a standing bot will suddenly start attacking the closest people to it which seems odd.

"And here are our automated defenders, courtesy of Space Guy's Bot mod. I've programmed them to only attack people not given a special designation. To us they are completely-- WOAH! OMG!! HE'S FIRING THE LASER! RUN FOR IT, JIM!"

Maybe something wrong with, well, I don't know how to say this, but when the bots go to check which spawn plate they are from, they pick up the wrong spawn and use the foreign plate's events instead of their own?

For some events like "setBotMoveDestination" and "setBotFireTarget" I'm using a layout similar to Rotondo's setPlayerTransform event where you can use <Named Brick> -> setBotMoveDestination or Player -> setBotFireTarget and the last bot triggered will go to the target set.

The problem is that when using some things like onBotTouch as an input event they're triggered for multiple bricks at once in the engine so the "last event bot" will be one on some other plate rather than the one I spawned and want to go places.

All the actions of the bots are controlled by events. There will be a standard "Bot Spawn" which just automatically creates a standing bot and an "AI Bot Spawn" with several events to control it in minigames so that it'll attack enemies that it sees, follow friendly players and retaliate if attacked. They respond to the "setTeamAllied" event for Team Deathmatch - if that mod is enabled then it also adds some "Team Bot Spawn" bricks.

For some events like "setBotMoveDestination" and "setBotFireTarget" I'm using a layout similar to Rotondo's setPlayerTransform event where you can use <Named Brick> -> setBotMoveDestination or Player -> setBotFireTarget and the last bot triggered will go to the target set.

The problem is that when using some things like onBotTouch as an input event they're triggered for multiple bricks at once in the engine so the "last event bot" will be one on some other plate rather than the one I spawned and want to go places.All the actions of the bots are controlled by events. There will be a standard "Bot Spawn" which just automatically creates a standing bot and an "AI Bot Spawn" with several events to control it in minigames so that it'll attack enemies that it sees, follow friendly players and retaliate if attacked. They respond to the "setTeamAllied" event for Team Deathmatch - if that mod is enabled then it also adds some "Team Bot Spawn" bricks.

I haven't used his for a great length of time so I don't know too much. I think that mine is more versatile and easier to set up for things like deathmatches (place one brick and it works) and custom appearances. (Change one event rather than strange /commands and "hidenode" stuff)

Current events I have:

Input events (bricks)onBotLoaded - When events are changed or when brick is placedonBotInjured - When bot is hurt by weapons fireonBotDeath - When the bot diesonBotKill - When the bot kills a player/enemyonBotRespawn - Triggered after the minigame's respawn time or few seconds after it diesonBotSpawned - When the bot is spawned by eventsonBotLoseTarget - When the bot immediately can't see its targetonBotChaseTarget - While the bot is chasing a targetonBotLoseChaseTarget - When the bot cannot navigate to its target from the last known positiononBotNoTarget - While the bot has no targetonBotSeeFriendly - When a friendly player is in view (works with TDM, ZAPT, Rotondo's Zombies)onBotSeeEnemy - When an enemy player is in viewonBotSenseProjectile - When an enemy projectile is detected in a radius around it

Output events (bricks, bots and players: function of some varies based on targets)setBotAim [Vector, Absolute] - makes the bot aim a specific direction relative to itself or the worldsetBotMove [Vector, Absolute] - makes the bot move a specific amount relative to itself or the worldsetBotMoveObject [Target] - makes the bot follow a specific player target (e.g. activating player, closest enemy, closest player]clearBotMove - clears the bot's current move objectsetBotJump [checkbox] - if on, the bot continually jumpssetBotCrouch [checkbox] - if on, the bot continually crouchessetBotJet [checkbox] - if on, the bot continually jetssetBotFiring [checkbox] - if on, the bot continually fires its current weaponsetBotFireTarget [Target] - makes the bot aim at and attempt to fire at a specific target (like moveobject or aiming at the brick)botWander - Moves the bot once in a random direction/distance in front of it, turning at walls (used with onBotNoTarget)botChase - Bot chases its current target (used with onBotLoseTarget and onBotChaseTarget)

I'm unsure whether to do the input events like "onBotActivated" and "onBotTouched" as that'd basically be copying Amade's.