AggroKit
Reusable aggro/threat control tooling for Outward BepInEx mods: per-pair targetability gates, detection veto/redirect, taunt and force-target primitives. Inert until a mod uses it — a library dependen
模組介紹 作者原文
AggroKit
📖 Full documentation: AggroKit wiki page
Reusable aggro/threat-control tooling for people writing BepInEx 5 mods for Outward:
Definitive Edition. It doesn't add anything a player sees on its own — it's a library
dependency other mods (CompanionKit, and anything built on top of it) pull in, and other modders
are welcome to build on it too.
Requires: BepInEx 5 (Outward's Mono branch — see Compatibility below) + ForgeKit (hard
dependency, installed automatically).
What's in it
| Piece | What it gives you |
|---|---|
| AggroTools | Patch-free primitives for reading/adjusting engine aggro state without a Harmony patch of your own. |
| TargetableOverrides | A per-pair / per-target targetability gate — make one specific character untargetable to one specific other character (or to everyone), without touching the game's global targeting rules. Pair beats for-all. Since 2026-08-22 it also stops AI acquisition (detection, hurt-aggro, squad hand-outs) and skill sub-effects, not just lock-on and melee. |
| AggroTools.Protect(target, owner) / Unprotect | The convenience over the gate: nobody may attack target (AI, player weapons, lock-on, skill sub-effects); existing AI locks on it are released. Re-allow one attacker with TargetableOverrides.Set(attacker, target, true, owner). |
| AggroEvents | Observability hooks (opt-in, off by default) plus an opt-in squad-self-target guard (also off by default — see BlockSquadSelfTarget). |
Installing (for players)
Drop the AggroKit folder into BepInEx/plugins. It has no effect by itself — install it
because another mod you're using declares it as a dependency.
Configuration
BepInEx/config/cobalt.aggrokit.cfg (generated on first launch):
[Dev]
Poll BepInEx/config/ak_cmd.txt for dev commands (aggrodump/forcetarget/taunt/calm...).
EnableCommandFile = true
Whether DumpKey logs an aggro dump of all AI characters near the player.
EnableDumpKey = true
Key that logs an aggro dump of all AI characters near the player (needs EnableDumpKey=true).
Default value: F3
DumpKey = F3
[Research]
Re-arm AggroEvents' purely-observational Harmony taps that record the event buffer. OFF by
default so these hot AI-tick paths stay un-patched. With EnablePatches on, the detection-side
control patches and the targetability override gate are installed regardless of this key — they're
inert until a verb activates them.
EnableObservation = false
[Fixes]
Master switch for EVERY Harmony patch AggroKit installs. Off = it patches nothing at all, while
the library calls and the ak_cmd.txt verbs keep working — so AggroKit can be ruled in or out of a
mod-conflict bisection without uninstalling it. Applied at load; changing it needs a relaunch.
EnablePatches = true
Opt-in fix for a squad-contagion self-target assignment in AISCombat.SetPreferredTarget.
DEFAULT OFF: the case is unreachable in vanilla, and the block is a skipping Harmony prefix, which
also suppresses any other mod's prefix on the same method. Read live — no relaunch needed.
BlockSquadSelfTarget = false
Dev verbs
AggroKit polls BepInEx/config/ak_cmd.txt (write a line, it runs on the next poll — works while
the game is paused). [Dev] EnableCommandFile = false turns the channel off.
| Verb | What it does |
|---|---|
| aggrodump [radius] | Aggro dump of every AI near the player, plus the player's targetability state |
| aistates [name\|nearest] | Dump one AI's state machine |
| aggrolog [n\|on\|off\|clear] | The [AGGRO] event buffer |
| watch | Watch an AI's (state, target) changes |
| forcetarget [name\|nearest] | Force an AI onto the player, and auto-watch it |
| feud [nooverride\|both] | Make any two AIs fight each other |
| taunt [radius] / calm [radius] | Pull every AI in radius onto the player / calm them |
| truce [seconds] [name\|nearest] / truceoff [name\|nearest\|all] / truces | One AI tolerates the player for N s (your hit on it ends it) / end one or all / list them |
| untargetable / targetable | Toggle the player's QuestNonTargetable |
| undetec
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: