Content API
Content operations
Every operation a manifest's content list can contain.
The content list is the heart of a mod. Each entry is one operation, applied in order.
tower
{"op": "tower", "id": "quickstart.dart", "base": "DartMonkey", "patch": {"cost": 100}}
Clones a non-hero tower: its upgrade tiers, shop entry and shared visual references. patch changes existing
base fields such as cost, range or icon. No game assets are copied or distributed. Heroes can't be clone bases.
bloon
{"op": "bloon", "id": "quickstart.durable-red", "base": "Red", "patch": {"maxHealth": 5}}
Clones a bloon and adds it to the Sandbox list. Native camel-case fields include maxHealth,
isCamo, speed, radius and children. Children must exist and can't form cycles.
mode and all_modes
{"op": "mode", "id": "quickstart.training", "base": "Medium", "patch": {"cash": 2000}}
{"op": "all_modes", "patch": {"lives": 500}}
mode clones a mode; new IDs appear in the mode screen's custom selector (IDs are stable names, not indices).
all_modes patches every mode present at that point in the list.
set
{"op": "set", "path": "/modes/Medium/cash", "value": 1500}
{"op": "set", "path": "/towers/DartMonkey/cost", "value": 100}
Replaces an existing field addressed by a JSON Pointer. Roots:
| Root | Contains |
|---|---|
towers | Tower definitions (shop cost, range, footprint…) |
tower_tiers | Per-tier attacks, weapons, projectiles and upgrades |
bloons | Bloon definitions |
modes | Difficulties and modes |
start | Starting values |
rounds, round_sets | Round groups and round sets |
freeplay | Freeplay round groups |
Inspect your own local_extracted/game/game.json for native field names and supported behaviours.
copy
{"op": "copy", "from": <pointer>, "path": <pointer>} copies an existing native definition to another
existing path. The SDK's projectile templates use it, so you rarely write it by hand.
insert and remove
Change arrays, including attacks, weapons, abilities and round groups. Values must match native data types; adding an array entry doesn't create a new native behaviour type.
menu
{"op": "menu", "page": "MainMenuUI", "path": "<node path from ui/prefabs/MainMenuUI.json>", "text": "Hello"}
Changes an existing frontend node's text or visible state when that scene loads. page
is the prefab filename without .json; paths are relative to the node hierarchy in your local
ui/prefabs export. Values the game updates dynamically may overwrite a load-time edit.