Apothicon gives your agent GSC/CSC diagnostics, symbol lookup and additive feature templates. Use the installed stock scripts and local API documentation to check engine behavior, then compile and test the feature in the map.
Inspect existing scripts
analyze_script reports functions, imports, calls, notifications and diagnostics with one-based positions. It checks delimiters, unterminated strings and comments, malformed or duplicate definitions, and missing import semicolons. Warnings identify patterns such as repeated imports, loops with no visible yield and listeners lacking explicit cleanup.
These are static diagnostics. They do not resolve every engine API, macro, dynamic call or data type. A clean report means the inspected checks passed, not that Treyarch’s compiler or the game has accepted the script.
script_symbols searches scripts and headers across a bounded source tree. Qualified names such as feature::init help identify exact definitions and calls. Review skipped-file and truncation information; a missing import may live in a stock directory outside the selected root.
Start with an additive template
Ask list_script_templates for the templates available in your installed version. The documented original templates include:
| Template | Starting point |
|---|---|
map_bootstrap |
Service initialization, ready state and a yielding heartbeat. |
threaded_interaction |
Touch-trigger listeners, activator validation, cooldown and shutdown. |
player_lifecycle |
Connection/spawn listeners and life-scoped workers with cleanup. |
easter_egg |
An ordered three-trigger quest with durable state and events. |
generate_script returns candidate script text and integration details. create_script writes the feature through the workspace transaction layer. Generated output includes its source references, static inspection and verification status.
For example, save these arguments to a JSON file and pass it to the CLI tool call:
{
"name": "zm_my_map",
"kind": "player_lifecycle",
"module_name": "player_services",
"dry_run": true
}
uv run apothicon-mcp call create_script --arguments-file feature.json
Names must be lowercase identifiers, at most 63 characters. The interaction templates use touch triggers; do not assume they provide a hold-to-use interaction contract.
Preserve native initialization
Keep the official Launcher map bootstrap. Supported features are additive modules rather than replacements for the entire stock Zombies script.
integrate_script_feature connects an existing namespaced GSC module with one init() function. It updates the import, adds a threaded call after the recognizable zm_usermap::main() statement, and includes the module in the zone file in one transaction.
Integration is idempotent and preserves existing startup behavior. Lexical inspection ignores comment and string lookalikes. If the relevant scope or stock startup call is ambiguous, integration stops for inspection instead of guessing where to insert code.
Check lifecycle and gameplay
Give custom features an explicit owner, initialization point and shutdown behavior. Decide which state belongs to the map, a connected player or one player life. Threads need yielding and cleanup when that owner ends.
Link the actual variant, then test normal interactions, repeated activation, death/respawn, late join, co-op and restart. A previously accepted bootstrap template does not validate every generated recipe or modification.
Use local knowledge search for source-grounded API patterns, and managed test sessions to retain observations alongside the feature.