You are viewing a potentially older version of this package. View all versions.
TRizzle-LethalBots-2.0.0 icon

LethalBots

A Lethal Company Mod that adds bot players to the game. Based off of the code of the mod Lethal Internship.

Date uploaded a day ago
Version 2.0.0
Download link TRizzle-LethalBots-2.0.0.zip
Downloads 367
Dependency string TRizzle-LethalBots-2.0.0

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
Evaisa-LethalLib-0.16.1 icon
Evaisa-LethalLib

Personal modding tools for Lethal Company

Preferred version: 0.16.1
Sigurd-CSync-5.0.1 icon
Sigurd-CSync

Configuration file syncing library for BepInEx.

Preferred version: 5.0.1
Rune580-LethalCompany_InputUtils-0.7.4 icon
Rune580-LethalCompany_InputUtils

API/Library for creating Unity InputActions with in-game re-binding support. Provides an alternative UI that allows for supporting mods to have in-game re-bindable keybinds.

Preferred version: 0.7.4
JS03-PySpeech-1.0.1 icon
JS03-PySpeech

Automatic speech recognition API for Lethal Company

Preferred version: 1.0.1
Kittenji-NavMeshInCompany-1.0.3 icon
Kittenji-NavMeshInCompany

Enables the use of AI pathfinding and navigation in the Company Building allowing other mods to spawn Enemies.

Preferred version: 1.0.3

README

Lethal-Bots

A Lethal Company Mod that adds bot players to the game. Based off of the code of the mod Lethal Internship.
Everyone must have the mod in order for it to work!

I also have a discord server as well for any questions or support: https://discord.gg/TVqJst8yHf

Preramble:

Playing solo in Lethal Company is hard, as the game is inherently designed around a team of 4 players.

Now, there are certain mechanics that automatically adjust for single player, but you still run into multiple disadvantages.

Loosing all your scrap if you die, enemies like the butler and coil head really screwing you over, turrets, landimes, big doors, and many other issues that are a lot easier to deal with multiple players.

After I discovered the mod Lethal Interns, it inspired me in a way. I realized I could use my previous modding experience with player bots and use it to finally create player-like bots for Lethal Company.

And that is how this mod came to be, and you would not believe how long it took me to get here. There are many older verison of this mod, lost to time.

In the end, while they may never be as smart as a real player, its still better than playing alone.

Oh, and before I forget, this mod is 100% MULTIPLAYER friendly, so feel free to add them to assist your Duo or Trio.


bots_example

Bots and how they spawn

These passionate workers spawn in after you start landing on a moon. The number of bots that spawn players that join depend on how many player slots are available and the maximum number of bots players set in the config

They return to the ship
If they lose the player they are following and it starts getting late out,
they will automatically return to the ship.

They always follow you unless told otherwise
Or at least try to follow you, or another player.
The moons are not very welcoming and your bots new co-workers may have (some) difficulties to navigate smoothly in those tricky areas due to how the navmesh is made.

They can loot on their own
You are able to command your Bots new co-workers to enter the facility and they will search for scrap and will only return to the ship when full or after a while!

They continue the round after you die
In the event of your demise, bots your new co-workers are capable of continuing to collect scrap without you,
You can vote to leave early which will tell bots your new co-workers to return to the ship
They will automatically return to the ship if not following a player after the sun sets

How to use the mod

  • Bots will take up player slots that are open, if you have a full server this addon won't do anything.
  • Bots leave after the ship returns to orbit, don't worry they will come back next time you land!
    This is done so other players can join if you have some kind of late join mod!
  • Bots automatically revive after returning to orbit.
  • You can revive bots and bots can revive you with other mods like 'Revive company', 'Bunkbed revives' and 'Zaprillator'
  • Bots can sell scrap at the company. You can configure if they sell everything, or only to quota

While they are spawned, while looking at them:

  • You can command them to follow you with as well as tell them to loot on their own with [E]
  • Make them drop their held item with [G], they will automatically swap to the next item in their inventory
  • Change the suit of the bot by the one you're wearing with [X]
  • All input are configurable.

Configuration files

Lots of settings for the bot's AI can be configured, so go check them !
Mod is compatible with InputUtils so you can change your inputs !
There's also a config file for the identities of the bots (a name, preferred suit, a voice)
folder_config
Identities can be found in a new config file at Your_profile_folder\BepInEx\config\LethalBots\ConfigIdentitiesDefault.json
If you want to make your own file, name it 'ConfigIdentitiesUser.json' and the default one will be ignored. Details can be found in the default json.
folder_config
To link the voice folder to the bot, simply change the "VoiceFolder" property in the identity you want.

Fully voiced bots

T-Rizzle: I may change the voice lines along with using TTS in the future, but since the original mod was under an MIT license, I will keep the original voice lines for now.
A big thanks to Mathew Kelly and his incredible voice acting, there's more than 700 (!!) voice lines for those little guys.
Chilling with you, following, founding loot, panicking, you name it, there's a voice line for every state of mind !
You may know him as Dragon-V0942 from FurAffinity, and you can find some of his voice acting works on youtube (Voice acting example).

Have fun with cosmetic mods !

This mod is compatible with ModelReplacementAPI and all of its users (tooManySuits, MoreSuits, ThiccCompany, etc...). It is also compatible with the emotes mod, emote in front of bot and they will copy your dance moves !


Lethal-Bots-Suits

Chat and Voice commands!

The bots have a few chat and voice commands that you can use to tell them to do certain things. Please note that these commands are not case sensitive, so you can use any combination of upper and lower case letters. Also, the bot only checks for the keywords anywhere in the message, for example, you can use "Jester is going to pop!" and the bot will still respond to it.
jester - The bot will check to see if there is an active jester, if there is, they will try to escape the facility immediately.
start the ship - The bot will check if the host sent the command or if the host is dead, if so, the bot will start the ship.
hop off the terminal - The bot currently on the terminal will hop off for a few seconds, allowing you to use it.
request monitoring - The bot who is currently on the terminal will monitor you rather than cycling through the players.
request teleport - The bot who is currently on the terminal will teleport you back to the ship.
clear monitoring - The bot who is currently on the terminal will stop monitoring you and return to the default behavior of cycling through players.
man the ship - Makes the bot you are looking at go to the ship terminal and start manning it.
transmit (desired message) - The bot who is currently on the terminal will send the given message on the signal translator.
transfer loot - The bot will cycle between facility entrances and transfer any loot they find to the ship.
gear up - Bots that are following the player will automatically swap to the GrabLoadoutState and grab their set loadout.
Please note that you must be in chat range for the bot to hear you. If you are too far away, the bot will not respond to your command. If both you and the bot have a walkie-talkie, you can use the command in the chat and the bot will respond to it.
Please note that these are also voice commands, but they require you to only say the word unlike how they work as said in the chat.

Note: The bot will also respond to commands on the signal translator, but there is a seperate list of commands for that.
return - The bot will return to the ship immediately.
jester - The bot will check to see if there is an active jester, if there is, they will try to escape the facility immediately.

How the bots work

The bots take one of the player objects in the game and I attach an EnemyAI to it for the pathfinding code.
As a result, the game considers the bots as a human player for most intents and purposes, although there are some hacks added since the game runs most of its player logic on the client/local player only.
The bot uses states to run its AI with certain conditions that determine when the bot changes its states.


BrainDead:
The Brain Dead state is when the bot dies in some way shape or form. In this state the bot can vote to make the ship leave early.
There are two conditions in which the bot will vote to leave early.

  1. All human players are dead and its late outside
  2. The ship becomes compromised, aka an enemy is on the ship

NOTE: All players, "humans and bots," must be on the ship before the bot will vote!


SearchingForPlayer
If the bot loses the human player they were following,
they will wander around looking for a human player before searching for scrap on their own.


GetCloseToPlayer
The bot moves closer to the player they are following, they check horizantal and vertical distances when checking if they are close enough.


JustLostPlayer
The bot just lost sight of the player they were following, they will check the last position they saw you at.
If your last known position is near an entrance, the bot will use it!


ChillWithPlayer
The bot is waiting nearby the player they are following. They will mimic emotes the player is using.
If they have any loot in their inventory and they are on the ship, they will drop it off!


FetchingObject
The bot is moving to pickup an object. If they are holding a two handed item, they will set it down to pick up the object.


PlayerInCruiser
The bot will hop into the back of the cruiser the player they are following is in and ride!


Panik
The bot will flee from a nearby enemy. If the bot is near an entrance, it will use it to escape!
NOTE: If the bot escapes the enemy, has scrap, and is not following a player. They will return to drop off scrap early!
If the bot has a weapon and they believe the enemy can be killed, they will swap to the FightEnemyState


ReturnToShip
The bot will leave the facility and return to the ship.


ChillAtShip
The bot is at the ship and will empty their inventory. They will perform a random emote.
If there is no nearby human player and it's not late out, the bot will go back into the facility and look for more loot after a bit!
The bot will start the ship if all human players are dead, all players are on the ship, and one of the following conditions are true:

  1. It's late out
  2. All human players voted to leave early
  3. The ship becomes compromised


SearchingForScrap
The bot is searching the facility for scrap. If one of the following conditions are true, the bot will return to the ship:

  1. The bot has at least one piece of scrap and hasn't found any other scrap recently
  2. The bot's inventory is full
  3. It's late out
  4. All human players voted to leave early


UseInverseTeleport
If the inverse teleporter is active and the bot is on the ship, the bots will move to be teleported by it.
It doesn't matter if the bot successfully teleported or not, they will switch to the SearchingForScrap state after, regardless!


UseKeyOnLockedDoor
The bot will attempt to use a key they have in their inventory on a locked door.
The bot picks the closest side of the door
If both sides of the door are accessible, they will only open it if there is a distance greater than 10 m between the two sides!


MissionControl
The bot will use the ship terminal and monitor the ship's crew while executing commands on the terminal as well as teleporting players as needed.
Here is what the bot can do while on the terminal!

  • Use commands to open heavy doors, turn off turrets, disable landmines, and disable ceiling traps // NOTE: For some reason, they don't seem to be able to disable ceiling traps, I'm looking into this
  • Open heavy doors for the player they are currently monitoring
  • Teleport bodies of dead players
  • Teleport players who they considered in grave danger
  • Use the signal translator to send messages to the crew about enemies and the current time
  • Use the walkie-talkie to keep players' sanity up and receive chat messages from the crew


TransferLoot
The bot will transfer loot from the facility entrances to the ship


CollectScrapToSell
The bot will collect scrap on the ship with the intent of selling it. There are a few items the bots will refuse to sell:

  1. Zed Dogs
    Please note that this does affect any item that inherits from the following classes!
  2. Gift Boxes
  3. Shotguns
  4. Knives
  5. Shovels


SellScrap
The bot goes over to the company desk to sell, ringing the bell and waiting if the desk is out of space.


ChargeHeldItem
The bot will charge its held item using the charging coil
This is called when the bot is in the mission control state, and after returning to the ship


FightEnemy
The bot will fight its current targeted enemy
The bot will pick the shotgun for most enemies, except for snare fleas, where they prefer the shovel or knife!
Here are enemies the bot will always fight as long as they have a weapon

  1. Snare Fleas
  2. Masked
  3. Thumpers
  4. Hoarding Bugs
    Here are the enemies the bot will fight if they have a shotgun
  5. Nutcrackers
  6. Brackens
  7. Bunker Spiders
  8. Baboon Hawks (Only when in close proximity)


UseTZPInhalant
The bot will use the TZPInhalant in its inventory to get a speed boost!
The return to ship state calls this when the bot is carrying heavy loot!


LostInFacility
The bot is lost in the facility and will try to find a way out.
They will wander around the facility, calling out for help.

On a more serious note

This mod is very alpha and I still need some polishing.
I'm just happy to share this project with you, in hope that you find it fun and enjoyable.
T-Rizzle: I have made multiple changes to this from the original addon. While Lethal Interns intend to have the, well you know, interns assist the player, I found it not to my liking, but I saw the potential it had in general.
These bots are to be more player like and this includes advantages such as counting as real players and the downsides like limited stamina.

  • Although they will never be the same a players, they are great for small groups or playing with weak or no internet.
  • Or you could go crazy and use MoreCompany and run around with an army of them.
  • I recommend about 23 to 31 of them. After that it really starts to get laggy and there is only so much I can do to optimize them.

Credits

  • Szumi57 - Original idea and coding of the original mod, Lethal Intership.
  • T-Rizzle - Major code refactor, bug fixes, and new features.
  • Mathew Kelly - Voice acting for the bots, over 700 voice lines!

Things to add

  • More Orders, currently you can tell them to loot and follow you. There are a decent amount of chat commands at least?
  • I hope to make them able to do more on the ship terminal in the future. Like purchasing items and who knows what else!
  • Add some kind of voice recognition software, so bots could respond to simple voice commands. (DEVNOTE: Looks like there are some librarys on thunderstore that could help me with this endeavor!) DONE! :)
  • As stated earlier, add TTS to bots so they can be better at relaying information to players. (DEVNOTE: TTS would be perfect for helping the bots declare enemies on the terminal!)

Bugs to fix

  • The game will lag during the inital landing sequence after the bots spawn. I have no idea what causes this, but it fixes itself after the ship lands. This only seems to happen with about 21 or more bots. If you play with the default lobby size of 4 players, you won't see this issue. (DEVUPATE: Found out it might have something to do with collsion, have a few ideas on how to aleviate it!)
  • Sand spider web trap not working for bots. Transpiler or Postfix should work, just need to find out what would be the best option.
  • Snare Fleas ignore bots that walk under them. The cause is that they only check for the Local Client walks under them, a transpiler or postfix can fix this!
  • Nutcracker ignoring bots. The cause of this is known, but I still don't know a good way to fix it yet! Fixed!
  • Ghost Girl spawns but does nothing if it picks a bot. Plans to fix this are currently in the works! Lets just say its a lot of transpiler work.......
  • Compatibility with modded maps, for environmental hazards damages. The cause is due to most of the player code only running on the local player, I think I can get some kill triggers to work using transpilers/postfixes.
  • Bots don't use ladders, I know this is a major issue, but fixing it is harder than it seems. For now they use the same movement as the masked!
  • Bots can hear you speak if you have push to talk set. The cause of this is how PySpeech works, since it runs a separate application that listens to your microphone. I may be able to fix this......

CHANGELOG

Changelog

2.0.0 - 2026-1-16

Hello and welcome the the first MAJOR patch of Lethal Bots! Please do note that you MUST update your custom identity config files. If not, many errors may occur! Ok, now onto the changes!

Bot Loadouts

You have heard correctly, bots can now have loadouts! No longer will have to give each bot an item when moving out to loot. Just set the bot's loadout in a custom identity config and tell them to "gear up!" Bots that are set to search for scrap will also automatically grab their loadout!

  • Added new LoadoutManager which manages all available loadouts
  • Bots identity files have been updated to have a new member loadoutName. This is the name of the loadout the bot wants to use can be set to Empty to tell the game the bot has no loadout.
  • Bots that are grabbing their loadout will not grab conductive items if the current planet weather is stormy
  • Added new state GrabLoadoutState, bots in this state will find and grab all items that are in their loadout on the ship.
  • Added new chat command, "gear up." Bots that are following the player will automatically swap to the GrabLoadoutState.
  • Added a bunch of important networking functions and classes to sync the host's loadouts for bots to other clients
  • LethalBotNetworkSerializer has a new function SerializeStringArray. This was made to help sync the loadouts between clients.
  • Bots will not automatically drop items that are in their loadout while at the ship. They will drop duplicate loadout items they may have.
  • Multiple inventory functions have been updated to consider loadout items
  • Added new function to LethalBotAI HasDuplicateLoadoutItems. This checks if the bot has more than one of the same items for their particular loadout
  • Added IsGrabbableObjectInLoadout to LethalBotAI and LethalBotLoadout classes. This checks if the given grabbable object is in the bots current loadout.
  • SearchingForScrapState automatically makes bots grab their loadout.

New Default AI States

As requested in #27, bots can now be assigned a default AI state. It gets kind of annoying to make all of the bots lead the way at round start and oops you send the wrong bot to lead the way when you wanted them on the terminal. Well look no further, you can now use a custom Identity file and set their default state.

  1. Dynamic: This is the default, if the bot finds a human player to follow when spawning, the bot will do just that. Other than that the bot will choose which AI state to enter dynamically!
  2. FollowPlayer: Self explanatory, makes the bot follow the nearest human player
  3. SearchForScrap: Makes the bot search for scrap upon spawning
  4. ShipDuty: Makes the bot man the ship upon spawning
  • Added EnumDefaultAIState which is used by bots to check which state to enter upon spawning, there are four options, Dynamic, FollowPlayer, SearchForScrap, ShipDuty. Closes #27
  • GetDesiredAIState has been updated to respect the new bot config option defaultAIState. Bots can now be assigned a default AI state that they swap to upon spawn.
  • Fixed a logic error in GetDesiredAIState where dead players were considered valid follow targets
  • Updated default ConfigIdentity file with the new defaultAIState member

Aiming system overhaul

The aiming system used to be TERRIBLE, no joke it sucked a lot. There was no way to set look at priorities which made it hard to make the bot look where it was running and look at the coil head heading Mack 10 at them.

  • The aiming system bots use has been reworked. Bots can how have priorities set for look targets and can even define how long to look at said look at target.
  • All AIStates have been updated to use this new system.
  • NpcController has been updated to use this new system and expose some helper methods for use as well.
  • Bots that are returning to ship will now look around randomly

Bug Fixes

Of course, we can't have an update without CRUSHING some bugs! Most of these I found while testing.

  • Fixed IsHoldingRangedWeapon and HasRangedWeapon not checking if the bot has ammo for said ranged weapon
  • Fixed a logic error in SellScrapState where there was a rare chance the bot would sell an item that was marked not to be sold.
  • Fixed a logic error in ChillWithPlayerState that would cause bots following the player to not use the inverse teleporter if they were holding any items. (This would cause bots with loadouts to not use the inverse teleporter)
  • Potential fix for Lethal Company VR mod breaking when bots die. I don't have a VR headset so I can't really test if it was fixed. Should fix #24

Misc. Changes

And the changes I don't really know where to put anywhere else, so uh, here you go!

  • Changed ChillAtShipState to be more like ChillWithPlayerState when checking for items in their inventory to charge
  • Bots that are in the SearchingForScrapState and GetCloseToPlayerState will wait for the ship to land before doing anything
  • Cleaned up some code
  • Bots that are returning to the ship will now sprint if they are exposed
  • Made a minor optimization to the loading of this mod's asset bundle.

1.2.1 - 2026-1-12

Hotfix for the 1.2.0 update. I added some experimental retreat code, but it made the bots too afraid to run away at times.

  • Reverted some of the new parts of the experimental retreat code
  • Made bots immediatly reconsider their target safe path postion if they swap states
  • Fixed a minor logic error in the fallback code in BrainDeadState

1.2.0 - 2026-1-9

As you may or may not be aware. Bots have support for some revive mods. Before this update, bots could only be revived and could not revive other players, now they can! There are also some other improvemnets such as better fallback choices when paniking.

Revival and Mod Compatibility

  • Bots, using supported revive mods, can now revive dead players and bots! (Suggestion from GitHub)
  • Improved Bunkbed Revive navigation and RPC calls.
  • Added static CanRevivePlayer function for unified revival checks.
  • Fixed bots revived via Revive Company being fully healed when revived. They will now take ReviveToHeath config into consideration now.
  • Fixed bots not updating the Spectator UI if they were revived

Panik / Fleeing Improvements

  • Rewrote a good chunk of the Panik system. Bots now assess if the path to the node they are thinking about fleeing to will get too close to the enemy they are fleeing from when picking a safe node to fall back to.
  • Fixed a logic error in PanikState that would cause bots to forget that they were running away from jester if another enemy became a more important threat.
  • Fixed bots using facility entrances to flee from outside enemies. This could cause the bot to enter an infinite loop of fleeing the same two inside and outside enemies!
  • Made bots always test node visibility in PanikState
  • Cleaned up code and removed redundant comments in PanikState
  • Made PathIsIntersectedByLineOfSight more consistent with the checks used in the safe path system

Mission Control & other AI State Improvements

  • Improved combat fallback movement with navmesh raycasting, improved edge case handling, and fixed the spectating UI not updating when a bot was revived.
  • Removed the hacky method used by Mission Control bots for collecting bodies. They will now actually pickup the body shortly after teleporting them.
  • Added a helper function to MissionControlState, GetOffTerminal, its designed to get the bot to leave the terminal and stop all active coroutines in the state. Helps reduce duplicated code!
  • After spawning bots will now pick their stating AI state based on the current situation. This is good if you have player revive mods since they will return to searching for scrap if another bot revives them.
  • Added some comments to FightEnemyState
  • Gave MissionControlState a new constructor

Grabbable Object & Enum Changes

  • Added a new enum EnumGrabbableObjectCall which helps IsGrabbableObjectBlackListed determine which items are actually blacklisted.
  • Also changed IsGrabbableObjectGrabbable to accept the new EnumGrabbableObjectCall
  • Made FetchingObjectState accept EnumGrabbableObjectCall instead of a bool for checking if the bot is selling or reviving a player.

Networking, Spawning, & Sync Fixes

  • LethalBotManager can now return all active bot instances.
  • Readded some of ModelReplacementAPIPatch, its needed to fix my mod's support with late join mods!
  • SpawnLethalBotParamsNetworkSerializable.SpawnPosition can now be null. When spawning bots, if SpawnPosition is null, the ship will be used instead!
  • Fixed bots sometimes spawning outside of the ship on round start. This was caused by my mod now waiting for the bot's network object to be ready, which could cause the ship to move too far from the original spawn position.
  • Fixed SetStartingRevivesReviveCompany only being called on the server causing the number of remaining revives to be desynced

Misc.

  • Cleaned up obsolete code and updated plugin initialization.

1.1.1 - 2026-1-4

Hotfix for the 1.1.0 update.

  • Fixed a potential race condition in safe path system.
  • Fixed a logic error where bots checking if an entrance was safe would consider other bots as enemies. (This is since bots are EnemyAI's internally!)

1.1.0 - 2026-1-4

Its time for the first "real" update that isn't just bug fixes. You can now give bots another role! You can now assign, multiple bots to focus on transferring loot between the facility entrances to the ship. Other bots should recognize this and will leave loot they find outside of the building entrances. There are also some bug fixes included as well!

New Features & Gameplay Changes

  • Added TransferLootState for bots to handle transferring loot from facility entrances to the ship, with entrance selection and wait logic.
  • Added new chat and voice command "transfer loot"
  • Bots now drop scrap for loot transfer players near entrances, instead of always returning to the ship if a bot was assigned to transfer loot.
  • Bots that are alone no longer wait to press the elevator button
  • Improve enemy combat logic to consider stunned state. Enemies that bots would only fight with ranged weapons, will now be fought with melee weapons while said enemy is stunned.

AI & State Refactors

  • Refactored looking around coroutine into the base AIState for reuse across states.
  • Updated ReturnToShipState to support early exit when outside, allowing it to be used to move the bot outside if they were inside the facility.
  • Refactor FindClosestEntrance to accept a list of entrances to avoid
  • OnExitState now has a new parameter which is the state the bot is changing to
  • Refactor Bot item selection with virtual helper methods
  • Added virtual FindObject/FindBetterObject in AIState for item selection and comparison.
  • Refactor state logic to override these methods, replacing redundant helpers.

Chat, Voice, & Interaction Improvements

  • Added new helper function IsBotBeingAddressed, this helper was provided by https://github.com/iSeeEthan
  • Bots will now respond in the chat upon "hearing" or "seeing" a chat command
  • Added new config option AllowBotsToChat and improved SendChatMessage
  • AllowBotsToChat controls if bots can reply to chat or voice commands by sending a chat message. NOTE: This doesn't affect the bots ability to declare jesters!
  • SendChatMessage has been updated to no longer cut off words in long messages if possible. The bot will try to send the rest of the word on another line.

Loot & Item Handling Changes

  • Refactored IsGrabbableObjectGrabbable to allow bots set to transfer loot, to grab items near entrances. It now also prevent bots from picking up items near entrances if a bot is set to transfer loot.
  • Add IsItemScrap utility and update scrap checks.

Bug Fixes & Behavior Adjustments

  • PanikState will no longer call the base class for OnPlayerChatMessageRecevied since it seemed a bit weird for a bot that is panicking to be listening to a player
  • Fixed a logic error in PanikState that caused bots to return to the ship even if they were following a player
  • Potentially fixed another logic error in PanikState: Changed node consideration code to use the safety score instead of a bunch of if else statements. This should hopefully fix an issue where bots only prioritized paths further from the enemy instead of trying to break line of sight as well.

Config Changes

  • Changed GrabManeaterBaby config name: This was done since the name may have been misleading for users. Its new name actually describes what it does! Bots will pickup and calm down the baby Maneater if its crying!

1.0.7 - 2026-1-3

Waiter, Waiter, more bugs fixed please! Back with another bug fix update. Hopefully, this should be the last of them for a while, other than the "Incompatible with Better Emotes" bug, which I'm still working on.

  • Bots now cache the transform they chose when returning to the ship. They will now update their target ship postion every few seconds. Fixes #18 on GitHub.
  • Fixed logic error in stuck detection causing the off the navmesh teleport check to never run.
  • Updated TeleportAgentAIAndBody to also call agent.Warp when teleporting the bot.
  • Added null checks for NpcController in patches to prevent errors on bot spawn.
  • Disabled and removed most of my model replacement patches. They were from Lethal Internship and were only creating more issues than they were worth. Besides, the base game and original mod handles model replacements just fine. Fixes #19 on GitHub.
  • Minor change to have my mod cleanup model replacements when the bots "disconnect."
  • Fixed LethalBotManager.ShipDoor being a private property
  • Fixed a potential null reference exception in UpdateOwnershipOfBotInventoryServer

1.0.6 - 2026-1-1

I don't know when, but apparently a bug got introduced that caused bots to not properly clean up their model replacements when they disconnected from the server. This update fixes that bug. Oh, and added a few other things too:

  • Bots will change their suit back to the default suit when they "disconnect." This mimics base game logic and fixes a memory leak with model replacements.
  • Bots will now have a joined ship message the first time they spawn. To mimic how the base game does it.
  • Fixed BodyReplacementBasePatch not calling OnDeath function and not calling the avatar update function on dead bodies
  • Fixed my mod sometimes failing to clean up old dead bodies with model replacements
  • Added a few helper functions with safely removing model replacements
  • Fixed bots not properly cleaning up their model replacements when they left the server. (This bug didn't happen if the host closes the lobby since ModelReplacementAPI will cleanup the models automatically)
  • Fixed a logic error where searchForScrap would wrongfully clear its already searched nodes prematurely
  • Gave bots support for using the Zap Gun
  • Added a new constraint called TIMER_CHILL_AT_SHIP_AT_COMPANY

1.0.5 - 2025-12-28

Changed EnableDebugLog default to true to help with debugging.

1.0.4 - 2025-12-28

Another day, another bug fix! Special thanks to everyone on the mod's discord who helped test this update.

  • Added Kittenji-NavMeshInCompany version 1.0.3 to thunderstore.toml since this allows bots to spawn in while at the company to help sell stuff. If NavMeshInCompany is not installed, bots will not spawn at the company building.
  • Updated bot spawn logic to wait for NetworkObject readiness before sending client RPC.
  • Added a Harmony patch to prevent Dissonance voice chat from starting if the player is a bot, which fixes host's voice being heard from bot positions. (Reported on GitHub and Discord)

1.0.3 - 2025-12-25

  • Added support for .wav and .mp3 bot voice files by updating file loading logic and determining AudioType by extension.
  • Removed all audio fade-in and fade-out functionality, replacing it with direct Play/Stop calls. They stopped working after I changes bot voice volume to be controlled by the quick menu
  • Cleaned up unused constants and improved path handling for custom voices.

1.0.2 - 2025-12-22

  • Fixed an logic error where ListModelReplacement was never initialized. This caused the ModelReplacementApi support to not work! (Reported on GitHub)
  • Update README files to remove any refrences to AI voices as they were copied over from when I forked Lethal Internship and do not reflect my interests for this mod.

1.0.1 - 2025-12-14

  • Fixed a logic error in the ChillInShipState which caused the bot to not properly initalize the state while at the Company Building.

1.0.0 - 2025-06-22

  • Initial release