AggroKit

版本 v0.1.6·更新於 2026-09-06

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 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

BepInEx-BepInExPack_OutwardCeruleanCutlass-ForgeKit

檔案與校驗

檔案名稱
AggroKit-0.1.6.zip
檔案大小
150.8 KiB