Changes from the 0.10.0 Release:
- Implemented bot decision system:
- Moved all bot "status" checks into separate "monitors" that are managed by a central component. Each monitor class extends an abstract class, so more can be easily added.
IsActive()
checks in brain layers now just need to check if a decision is active instead of making that choice in each layer. This should provide a small performance improvement.- Decisions will now be accurate regardless of which brain layer's
IsActive()
method returns true first (#63) - Updated bot-info overlay debug gizmo to show bots' current decisions instead of "not xxx reasons"
- Improved bot-info overlay debug gizmo accuracy
- Added an interop method,
GetCurrentDecision(BotOwner bot)
, to get a bot's current decision (#45) - Added a sample patch and component for demonstrating how the new interop method works
- Rewrote handling of external mods:
- Consolidated detection and interaction with external mods into one class
- Added framework to change what code is used for certain functions (currently looting, extracting, and ignoring hearing) depending on what mods are installed
- Moved mod compatibility checks to occur at the same time
- Removed redundant external mod checks every time a bot spawns
- When spawning late as a Scav, only reduce the number of quests performed (before extraction) by bots that initially spawn, not ones that spawn afterward. This makes the flow of Scav raids feel more convincing.
- Removed obsolete checks to only allow Lightkeeper Island quests or to force SAIN to reset bot decisions depending on what version of SAIN is installed. Also removed corresponding config values.
- Consolidated queries for a bot's current brain layer and logic into one location
- Refactored SPT version check before checking for external mods
- Refactored nVidia Reflex check when the main menu is shown
- Wrap
ShallUseNow()
call inLogicLayerMonitor
in a try-catch block in case there's an exception in another mod or base EFT - Bug fix for exception in
BotsGroup.method_17()
when a bot dies after being separated from its group
Known Issues:
- A flicker occurs whenever EFT spawns bots, even when the Questing Bots spawning system is disabled. I have no idea why.
config.json files from the 0.10.0 release are compatible.