# Bombfury Fighter Creator — AI Prompt Template

Copy everything below the line into ChatGPT, Claude, or any AI, add your idea at
the bottom, and paste the JSON it returns into the game's Creator (menu → 🧪 Creator).
The example file is already included below, so this one document is all the AI needs.
If validation shows errors, paste them back to the AI and ask it to fix the file.

---

You are designing a custom fighter for **Bombfury**, a claymation-style 3D
multiplayer brawler. Output **one JSON object only** (no prose, no code fences)
conforming exactly to the `bachar/1` format below.

## Rules that are always rejected if broken

1. `combat.statBudget` — three integers `speed`, `power`, `weight`, each 1–10,
   summing to **exactly 15**. This is a hard balance rule: every fighter in the
   game has the same total. Spend the points to match the character's fighting
   style (a tank: high weight/power, low speed; a rushdown: high speed).
2. `combat.perk` — exactly one of:
   `veteran, shadow_step, hook_reach, earthquake, knitting_nap, trebuchet, cyclone, spring_legs`
3. Appearance attachments use **at most 40 primitives total**, only these types:
   `sphere, box, cone, cylinder, torus, capsule`.
   **Which way they point matters.** `cone`, `cylinder` and `capsule` stand
   UPRIGHT along y — good for spikes, horns, staffs, legs. A `torus` lies in the
   x/y plane, standing on its edge like a wheel: for a BELT, a halo or any ring
   worn flat, rotate it a quarter turn about x — `"rot": [1.5708, 0, 0]`. To lay
   a cylinder on its side (a bar, a rolled cape), the same rotation applies. Each primitive: `pos` [x,y,z]
   within ±1.2 of its slot, `scale` [x,y,z] each 0–0.9, optional `rot` (radians),
   required `color` (hex), optional `metal` 0–1 and `glow` 0–1.
4. `appearance.attachments` is an **array**, one entry per slot, each shaped
   `{ "slot": "head", "primitives": [ … ] }` — NOT an object keyed by slot.
   Slots: `head, face, back, handL, handR, waist`. A weapon (sword, axe, wand…)
   is primitives on `handL`/`handR`. It is COSMETIC — damage never changes,
   only the look.
5. Animation styles — pick one per key:
   - `walk`: march, bounce, glide, stomp
   - `idle`: sway, bob, guard
   - `punch`: haymaker, jab, slash, thrust
   - `victory`: flex, dance, bow, spin
6. `appearance.face.mouth`: smile, grin, frown, flat, o. `browAngle`: −0.6…0.6.
7. `voice`: one of sarge, blitz, finn, boulder, bolt3, zayna, scout, chef, viking, yeti, astro.
8. `meta.name`: 2–24 characters. Colors are `"#rrggbb"` hex strings.
9. Proportions (all optional): `headScale` 0.8–1.25, `torsoWidth` 0.8–1.25,
   `limbLength` 0.85–1.2.
10. `base` (optional) — whose body this fighter is built on: sarge, blitz, finn, boulder, bolt3, zayna, scout, chef, viking, yeti, astro.
    Pick one whose build suits the character (a heavy bruiser on `boulder`, a
    nimble one on `scout`). Defaults to `sarge`.
11. `appearance.palette` — TWO colours, and which is which matters:
    - `secondary` is the **body and outfit** — the big colour, most of what you
      see. For a costumed character (a hero in a suit, a knight in armour, a
      robot) the COSTUME colour goes here.
    - `skin` is only the **face, hands and boots**. For a masked or armoured
      character these are part of the costume too, so usually set `skin` to the
      same colour, or to the trim colour — NOT to the main colour.
    - Getting these the wrong way round builds a fighter in the wrong colour: a
      red-suited hero written as `skin:red, secondary:blue` comes out blue.
    - `style` is `painted` (keeps the base body's artwork and shifts its hue —
      good for soldiers, pilots, anything uniformed) or `flat` (drops the
      artwork for solid clay — use this for a costume, a suit or a robot).
12. A slot with nothing on it should simply be LEFT OUT — do not include it
    with an empty `primitives` list.
13. Do NOT add eyes, brows or a mouth as primitives on the `face` slot. Every
    body already has a face; added ones sit on top of it and look wrong. Use
    `appearance.face.mouth` and `browAngle` instead. Keep the `face` slot for
    things worn ON the face — a visor, goggles, a snout, a beak.

## Reference skeleton

The fighter is a clay figure ~1.9 units tall: round head at the top, chunky
torso, stub arms and legs, huge cartoon eyes. Slot origins: `head` = top of the
head (y+ is up, z+ is the face direction), `handL`/`handR` = the fists (y− points
down the arm — a sword blade goes toward negative y), `back` = between the
shoulders (z− is outward), `waist` = the hips, `face` = between the eyes.

## Example of a valid file

```json
{
  "format": "bachar/1",
  "meta": {
    "name": "Blaze Runner",
    "description": "A fiery speedster who fights with a flaming blade"
  },
  "combat": {
    "statBudget": { "speed": 8, "power": 4, "weight": 3 },
    "perk": "shadow_step"
  },
  "appearance": {
    "palette": { "skin": "#e8734a", "secondary": "#2a2a2e" },
    "proportions": { "headScale": 1.05, "torsoWidth": 0.9, "limbLength": 1.1 },
    "face": { "brows": true, "browAngle": 0.35, "mouth": "grin" },
    "attachments": [
      {
        "slot": "head",
        "primitives": [
          { "type": "cone", "pos": [0, 0.5, 0], "scale": [0.18, 0.35, 0.18], "color": "#ff7a2a", "glow": 0.6 },
          { "type": "cone", "pos": [-0.18, 0.42, 0], "scale": [0.12, 0.24, 0.12], "rot": [0, 0, 0.4], "color": "#ffb44a", "glow": 0.5 },
          { "type": "cone", "pos": [0.18, 0.42, 0], "scale": [0.12, 0.24, 0.12], "rot": [0, 0, -0.4], "color": "#ffb44a", "glow": 0.5 }
        ]
      },
      {
        "slot": "handR",
        "primitives": [
          { "type": "box", "pos": [0, -0.45, 0], "scale": [0.07, 0.62, 0.16], "color": "#d8dce4", "metal": 0.8 },
          { "type": "box", "pos": [0, -0.12, 0], "scale": [0.2, 0.06, 0.06], "color": "#8a6a2a", "metal": 0.5 },
          { "type": "cone", "pos": [0, -0.82, 0], "rot": [3.14159, 0, 0], "scale": [0.06, 0.14, 0.14], "color": "#ff7a2a", "glow": 0.8 }
        ]
      },
      {
        "slot": "back",
        "primitives": [
          { "type": "box", "pos": [0, 0, -0.12], "scale": [0.5, 0.55, 0.06], "rot": [0.1, 0, 0], "color": "#a83a2a" }
        ]
      }
    ]
  },
  "animation": {
    "walk": { "style": "glide" },
    "idle": { "style": "guard" },
    "punch": { "style": "slash" },
    "victory": { "style": "spin" }
  },
  "voice": "blitz"
}
```

## My fighter idea

<DESCRIBE YOUR FIGHTER HERE — personality, look, weapons, fighting style>
