
Wiki
DuckShell NPCs Wiki
NPC systems, patrols, spawners, combat AI, dialogue delivery, and live-server operations for the DuckShell stack.
Getting Started
Start here for first boot, file layout, and the admin surfaces that control the rest of the plugin.
AI and Combat
Separate global AI policy, per-type identity, awareness, cover, and personality presets without turning the roster into guesswork.
World Content
Keep patrol routes and persistent spawners as separate world systems with their own save files and editor workflows.
Presentation and Ecosystem
Handle disguises, skins, bubbles, dialogue delivery, and cross-plugin cooperation without burying those concerns in AI pages.
Runtime and Troubleshooting
Run live-server debug, Spark, corpse-loot checks, and civilian-arming validation without losing track of the real problem.
Use this page when DuckShell is about to come online on a real server for the first time.
The goal is not to build your whole encounter ecosystem in one sitting. The goal is to generate the files, confirm the admin surfaces, and prove one dependable NPC loop before you scale into patrols, spawners, and larger combat content.
First generated files to review
Before you build shell types or place world content, open:
plugins/DuckShell/config.ymlplugins/DuckShell/patrols.ymlplugins/DuckShell/spawners.ymlplugins/DuckShell/head_cache.yml
Those files already tell you how DuckShell wants the system split:
- global behavior belongs in
config.yml - route content belongs in
patrols.yml - persistent spawn content belongs in
spawners.yml - cached appearance state belongs in
head_cache.yml
The admin surfaces that matter most
DuckShell is easiest to maintain when you use the same division the plugin itself uses:
AI Directorfor globalshell.ai.*defaultsNPC Type Editorfor per-shell-type identity and overridesPatrol GUIfor route contentSpawner Browserfor persistent spawn points/duckshellor/npcfor quick operator actions, debug toggles, spawn utilities, and inspection
The more clearly you separate those jobs, the easier later content becomes to reason about.
First-boot sanity pass
On a clean server, validate these first:
- presentation strategy is correct for your stack
- nameplates or speech bubbles render where you expect
- Duck Shot integration is detected if you plan to use real weapon pools
- patrol and spawner files save cleanly
- debug is off unless you are actively diagnosing something
- a simple spawned NPC can be created from the GUI or command surface without console noise
Suggested first test loop
Do one short proof pass before you build a whole town:
- Spawn one basic hostile shell type.
- Confirm it presents correctly.
- Confirm it can acquire, search, and return cleanly.
- Build one patrol route and one persistent spawner.
- Run one corpse-loot check and one reload check.
If that simple loop is not stable yet, larger encounter authoring will only hide the real problem.
What not to do on day one
- Do not author every shell type before you trust the global AI defaults.
- Do not put patrol intent into spawners or spawner intent into patrols.
- Do not leave combat or awareness debug running during ordinary playtests.
- Do not tune presentation offsets for every NPC before the disguise strategy is settled.

