{
 "id": "weapon.firearm.launcher/riot-firework-mortar",
 "version": 1,
 "name": "Firework mortar tube",
 "summary": "Firework mortar tube, 0.69 m long, held in the right hand.",
 "tags": [
  "firearm",
  "firework",
  "improvised",
  "launcher",
  "mortar",
  "paves",
  "riot",
  "sous-les-paves",
  "tube",
  "weapon"
 ],
 "style": "realistic",
 "status": "approved",
 "frame": {
  "contract": "weapon/grip-origin-muzzle-minus-z",
  "up": "+Y",
  "unit": "m",
  "front": "-Z (muzzle)"
 },
 "size": {
  "measured_m": {
   "w": 0.104,
   "l": 0.69,
   "h": 0.104
  },
  "source": "measured",
  "scale_to_class": 1.0
 },
 "bounds": {
  "geometry": {
   "min": [
    -0.052,
    -0.032,
    -0.58
   ],
   "max": [
    0.052,
    0.072,
    0.11
   ]
  },
  "footprint": {
   "kind": "rect",
   "minX": -0.052,
   "maxX": 0.052,
   "minZ": -0.58,
   "maxZ": 0.11,
   "source": "measured"
  },
  "collider": {
   "parts": [
    {
     "type": "box",
     "x": 0.0,
     "y": 0.02,
     "z": -0.235,
     "hx": 0.052,
     "hy": 0.052,
     "hz": 0.345
    }
   ],
   "source": "guessed"
  }
 },
 "placement": {
  "role": "cast-attachment",
  "notes": "Grip at origin, tube mouth toward -Z (z down to -0.58 m); library copy turned 180 deg about Y from the game file.",
  "source": "authored"
 },
 "sockets": [
  {
   "name": "attach",
   "role": "attach",
   "parent": "hand_r",
   "pos": [
    0,
    0.09,
    0.04
   ],
   "rot": [
    0.707108,
    0.707105,
    0.0,
    0.0
   ],
   "manifest_euler_xyz": [
    0,
    0,
    -1.5708
   ],
   "skeleton": "ual",
   "source": "authored",
   "note": "SOUS LES PAVES (Paris riot game, genres/riot) cast/manifest.json gear.mortar: bone hand_r, offset and Euler XYZ rotation in bone space; rot = game rot composed with the 180 deg Y turn of the library copy (pose in the hand unchanged)"
  },
  {
   "name": "muzzle",
   "role": "muzzle",
   "parent": null,
   "pos": [
    0.0,
    0.02,
    -0.58
   ],
   "rot": null,
   "source": "measured",
   "note": "centre of the -Z end of the bounding box (no muzzle empty in the file)"
  }
 ],
 "nodes": {
  "all": [
   "mortar"
  ]
 },
 "paint": null,
 "render": {
  "tris": 192,
  "verts": 296,
  "materials": 1,
  "draw_calls": 1,
  "textures": [],
  "gpu_mb_decoded": 0.0,
  "bytes": 12936,
  "codec": "none",
  "extensions": []
 },
 "rig": null,
 "animations": [],
 "gameplay": null,
 "techniques": [
  "flat-colour"
 ],
 "provenance": {
  "author": "gemini-4-argon via Antigravity (Blender)",
  "source": "jobs/riot-firework-mortar-v1",
  "kit": "riot-kit",
  "job": "riot-firework-mortar-v1",
  "feedback": null,
  "imported": "2026-10-19",
  "file_origin": "~/forge-build/forge-assets-paves/jobs/riot-firework-mortar-v1/riot-firework-mortar.glb",
  "origin": "paves-root/genres/riot/assets/cast/gear/mortar.glb",
  "game": "sous-les-paves",
  "library_copy": "rotated 180 deg about Y (gltf-transform) from the game file so the muzzle points -Z"
 },
 "licence": {
  "kind": "owned",
  "game_use": true,
  "raw_redistribute": false,
  "evidence": "Original model drawn by Gemini 4 Argon in Blender via the Antigravity CLI on 18 Oct 2026 for SOUS LES PAVES (Paris riot game, genres/riot); owned by Forge. No image textures, no third-party artwork. Source: paves-root/genres/riot/assets/cast/gear/mortar.glb."
 },
 "quality": {
  "gates": "pass: 0 MB of 24 MB texture budget, 192 tris",
  "judge": null
 },
 "files": {
  "glb": "sha256:cd806b1d8b303525a1b8e9773c8d1a1d8b95b596c35880089d4600cdfdc258fb"
 },
 "deps": [],
 "release": "sha256:c718d48acda444d2cab8d3e0b85628b34c78ecf310b93539adac00e30029d04c",
 "visual": {
  "n": 2,
  "description": "Small handheld prop, cylindrical wooden stick or torch/baton lying flat, low-poly style, light brown wood with a black cap at one end and yellow and orange-red painted bands.",
  "vision_model": "gemini-4 via agy4",
  "vision_batch_usage": {
   "prompt_tokens": 32241,
   "completion_tokens": 1178,
   "cache_read_tokens": 19866,
   "status": "SUCCESS"
  },
  "id": "weapon.firearm.launcher/riot-firework-mortar",
  "release": "sha256:c718d48acda444d2cab8d3e0b85628b34c78ecf310b93539adac00e30029d04c",
  "thumbnail_sha256": "0a333fae4127a7a00582040b9dabbdd5a6bd53cd8db23680081b08dbffb02d76",
  "safety": {
   "model": "jev",
   "probabilities": {
    "person": 0.01,
    "artwork": 0.05
   },
   "blocked": false,
   "threshold": 0.35,
   "source": "authored"
  }
 }
}
