A Darktide Mod Framework mod that enables bot combat abilities in Solo Play. Aims to bring VT2-level bot ability usage to Darktide.
Darktide has a complete bot ability system built into the behavior tree, but Fatshark hardcoded a whitelist that only allows two abilities. This mod removes that gate and injects missing metadata so the existing infrastructure handles the rest.
Solo Play only. Darktide uses dedicated servers — mods cannot affect gameplay on Fatshark's servers. This mod only works when you host locally via the Solo Play mod. It does not work in public matchmaking or any other online mode.
- Grenade/blitz heuristics are now live, including Psyker Assail, Smite, and Chain Lightning support
- Bots react to player tags, hazards, bosses targeting them, and poxbursters near human players
- New in-game settings surface:
standard/testingprofile, tier toggles, grenade/blitz toggle, healing deferral controls - Tiered logging and optional JSONL/perf diagnostics for post-run validation
Stance abilities (reliable):
- Veteran: Executioner's Stance / Voice of Command
- Psyker: Scrier's Gaze
- Ogryn: Point-Blank Barrage
- Arbites: Castigator's Stance
- Hive Scum: Enhanced Desperado / Rampage
Dash / shout / stealth abilities (reliable):
- Veteran: Infiltrate (stealth)
- Zealot: Fury of the Faithful (dash), Shroudfield (stealth)
- Ogryn: Bull Rush (charge), Loyal Protector (taunt)
- Psyker: Venting Shriek (shout)
- Arbites: Break the Line (charge)
Item-based abilities (reliable):
- Zealot: Bolstering Prayer (relic) — activates when allies need toughness
- Psyker: Telekine Shield (all 3 variants) — deploys under sustained fire
- Arbites: Nuncio-Aquila (drone) — launches when allies are hurt and enemies nearby
Grenade / blitz support (reliable):
- Standard grenades: frag, krak, smoke, fire, shock, cluster, friend rock, flash, tox
- Zealot: Throwing Knives
- Arbites: Remote Detonation (whistle), Shock Mine
- Psyker: Assail, Smite, Chain Lightning
- Hive Scum: Missile Launcher (DLC-blocked for validation)
Smart trigger conditions: Bots use per-ability heuristics to decide when to activate — based on enemy count, threat level, health/toughness, distance, and ally state. 15 of 18 trigger functions validated in-game (12 combat + 3 item); 1 N/A (cut content), 2 DLC-blocked.
In-game settings and diagnostics:
standard/testingbehavior profile- Tier 1 / Tier 2 / Tier 3 / grenade-blitz enable toggles
- Healing deferral mode + thresholds
Info / Debug / Tracelog levels- Optional JSONL event log and
/bb_perfruntime timing
See the full roadmap for details and GitHub issue links.
Ability activation
- Stance, dash, charge, shout, stealth abilities (all 6 classes)
- Item-based abilities (relic, force field, drone)
- Smart per-ability trigger heuristics
- Safety guards (revive protection, suppression, warp peril block)
- Grenade / blitz support
- [~] Ability settings surface (partial: profile + tier/grenade toggles shipped; full per-ability toggles still open)
- Hive Scum validation (DLC-blocked)
Bot combat behavior
- Charge/dash to rescue disabled allies
- Bot sprinting
- Daemonhost avoidance
- Bot pinging of elites/specials
- Boss engagement discipline
- Poxburster targeting
- Stop chasing distant specials
Bot weapon/equipment fixes
- Fix ADS for Tertium 5/6 bots
- Fix ranged weapons (plasma gun etc.) for Tertium 5/6
- Bot warp charge venting
- Suppress bot VFX/SFX bleed to human player
- Smart melee attack selection (armor-aware)
- Tiered logging + event/perf diagnostics
- Weapon/enemy-aware ADS vs hip-fire
Long-term
- Utility-based ability scoring
- Healing item management
- Weapon special actions (parry, bayonet)
See Status Snapshot and Validation Tracker for detailed evidence.
- Darktide Mod Loader
- Darktide Mod Framework
- Solo Play
- Tertium 5 or Tertium 6 (recommended — for non-veteran bot classes)
From Nexus (recommended):
- Extract
BetterBots.zipinto your Darktidemods/folder. - Add
BetterBotsinmods/mod_load_order.txtbelowdmf. - Re-patch mods with
toggle_darktide_mods.bat(Windows) orhandle_darktide_mods.sh(Linux).
From source:
- Clone or copy this repo into your Darktide
mods/directory asmods/BetterBots. - Add
BetterBotsinmods/mod_load_order.txtbelowdmf. - Re-patch mods.
Mods are disabled after each game update, so re-patching is required again.
- Launch Solo Play.
- Start a mission (
/solo). - Confirm in game chat:
BetterBots loadedBetterBots: injected meta_data for ...(one line per injected template)
BetterBots works standalone (vanilla bots are all veterans), but bot class diversity requires a Tertium mod.
Tertium 5 — the original. Some versions crash when encountering Arbites/Hive Scum archetypes it doesn't recognize.
Tertium 6 (temporary) — a fork by KristopherPrime that supports all 6 classes and player + 5 bots. If Tertium 5's crash affects you, try Tertium 6 instead.
Both are optional/recommended, not hard-required.
This repo is configured for local Lua lint/format/type diagnostics:
luacheckvia.luacheckrcstyluavia.stylua.tomllua-language-serverdiagnostics via.luarc.json
Commands:
| Target | Description |
|---|---|
make deps |
Install git hooks (conventional commits) |
make lint |
Run luacheck |
make format |
Format with StyLua |
make format-check |
Check formatting (dry run) |
make lsp-check |
Run lua-language-server diagnostics |
make check |
Run all of the above |
make test |
Run busted tests (if tests/ exists) |
make package |
Build Nexus-ready BetterBots.zip |
make release VERSION=X.Y.Z |
Check + package + tag + push + upload ZIP |
After cloning, run make deps to install the commit-msg hook.
CI runs make check on every push to main and on pull requests.
See CONTRIBUTING.md for development setup, code style, and PR process.
- Architecture
- Status Snapshot
- Known Issues and Risks
- Debugging and Testing
- Logging and Diagnostics
- Manual Test Plan
- Roadmap
- Validation Tracker
- Related Mods
- Meta Builds Research
- Behavior Tree — full node hierarchy and conditions
- Combat Actions — melee, shoot, ability activation
- Perception and Targeting — scoring, gestalt weights
- Navigation — pathfinding, follow, teleport, formation
- Input System — input routing, ActionInputParser
- Profiles and Spawning — loadouts, weapon templates
Per-class docs with internal template names, input actions, cooldowns, talent interactions, and bot implementation notes. Each class also has a tactics doc with community-sourced heuristics for when/how to use each ability:
- Veteran | Tactics
- Zealot | Tactics
- Psyker | Tactics
- Ogryn | Tactics
- Arbites (DLC) | Tactics
- Hive Scum (DLC) | Tactics
BetterBots.mod # DMF entry point
scripts/mods/BetterBots/ # Mod source
BetterBots.lua # Orchestrator: init, module loading, update tick
condition_patch.lua # Ability condition evaluation + vent hysteresis fix
ability_queue.lua # Fallback combat ability activation loop
weapon_action.lua # Weapon hooks: overheat bridge, vent, peril guard, _may_fire
poxburster.lua # Poxburster targeting + close-range suppression
vfx_suppression.lua # Bot VFX/SFX bleed suppression
heuristics.lua # 18 per-ability trigger functions + context builder
meta_data.lua # ability_meta_data injection at load time
item_fallback.lua # Tier 3 item wield/use/unwield state machine
melee_meta_data.lua # Armor-aware melee attack_meta_data injection
ranged_meta_data.lua # Per-family ranged attack_meta_data injection
event_log.lua # Structured JSONL event logging
debug.lua # Debug commands (/bb_state, /bb_decide, /bb_brain)
BetterBots_data.lua # Mod options / widget definitions
BetterBots_localization.lua # Display strings
tests/ # Unit tests (busted)
bb-log # Log analysis CLI
scripts/hooks/ # Git hooks (conventional commits)
scripts/release.sh # Release automation
docs/ # Architecture, class refs, status
.github/
workflows/ # CI, release, label sync
ISSUE_TEMPLATE/ # Bug report, feature request
CONTRIBUTING.md # Dev setup + guidelines
PULL_REQUEST_TEMPLATE.md
labels.yml # Issue labels (auto-synced)
dependabot.yml # GH Actions auto-updates