{
  "version": 2,
  "id": "grudge6-editor",
  "title": "grudge6 Character + Asset Editor (SSOT)",
  "url": "https://info.grudge-studio.com/grudge6-editor.html",
  "generatedAt": "2026-08-06T20:00:00.000Z",
  "purpose": "One surface for Toon RTS ★ characters, T0–T1 equipment testing, skill trees, UUID/asset practice, hierarchy/gizmo, import/export GLB.",
  "meshSsot": {
    "playKit": "https://assets.grudge-studio.com/asset-packs/toon-rts-characters/glb/characters/{raceId}.glb",
    "neverPlay": [
      "models/grudge6/metaverse/*",
      "models/grudge6/races/*_Characters.glb as default",
      "browser FBX as production mesh"
    ],
    "kitModule": "./js/grudge6-kit.js",
    "labWeapons": "./js/grudge6-lab-weapons.js",
    "animPacks": "./js/grudge6-anim-packs.js",
    "editorModule": "./js/grudge6-editor.js"
  },
  "tiers": ["T0", "T1"],
  "slots": [
    { "id": "body", "group": "armor", "label": "Body", "equipSlot": "body" },
    { "id": "arms", "group": "armor", "label": "Arms", "equipSlot": "arms" },
    { "id": "legs", "group": "armor", "label": "Legs", "equipSlot": "legs" },
    { "id": "head", "group": "armor", "label": "Head", "equipSlot": "head" },
    { "id": "shoulders", "group": "armor", "label": "Shoulders", "equipSlot": "shoulders" },
    { "id": "main_hand", "group": "weapon", "label": "Main hand", "sources": ["kit_weapons", "lab_t1", "t0-weapons"] },
    { "id": "off_hand", "group": "weapon", "label": "Off hand", "sources": ["kit_shield", "lab_offhand", "t0-weapons"], "dual": ["dagger", "mace", "hammer"] },
    { "id": "relic", "group": "relic", "label": "Relic", "api": "master-relics" },
    { "id": "class_item", "group": "class", "label": "Class item", "api": "master-classRelics" },
    { "id": "form", "group": "form", "label": "Form", "note": "classLoadouts warrior/mage/ranger/unarmed mesh_ids" }
  ],
  "slotClickContract": {
    "description": "Click equip slot → inventory list rebuilds from info.grudge-studio.com APIs + kit for that slot only; equip-info panel and skill tree update to that slot's items.",
    "inventoryFilters": "T0 and T1 only",
    "bind": "Selecting an item binds uuid/mesh_id into editor.bound[slot] for loadout export"
  },
  "apis": {
    "characters": "./api/v1/grudge6-characters.json",
    "labCatalog": "./api/v1/grudge6-lab-extended-catalog.json",
    "t0Weapons": "./api/v1/t0-weapons.json",
    "t0t1Addendum": "./api/v1/master-t0-t1-addendum.json",
    "weaponSkills": "./api/v1/master-weaponSkills.json",
    "t0SkillPattern": "./api/v1/_meta/t0-starter-slot-pattern.json",
    "skillTrees": "./api/v1/master-skillTrees.json",
    "relics": "./api/v1/master-relics.json",
    "classRelics": "./api/v1/master-classRelics.json",
    "classes": "./api/v1/classes.json",
    "iconsWeapon": "./api/v1/icon-shards/weapon.json",
    "iconsArmor": "./api/v1/icon-shards/armor.json",
    "iconsSkill": "./api/v1/icon-shards/skill.json"
  },
  "systems": {
    "armour": "kit mesh_ids body/arms/legs/head/shoulders via EquipmentManager",
    "weapons": "kit sword/axe/… + lab T1 GLB sockets + t0-weapons catalog UUIDs",
    "relics": "master-relics T0–T1 UUID bind",
    "classItems": "master-classRelics",
    "forms": "grudge6-characters classLoadouts → applyMeshIds",
    "weaponSkillTree": "master-weaponSkills.weaponTypes[] + t0-starter-slot-pattern + master-skillTrees by class"
  },
  "uuid": {
    "meshId": "Object3D.name on Toon kit (e.g. WK_Units_Body_A) or lab meshId",
    "itemUuid": "ITEM-/RELC-/SKIL-/HERO- from master catalogs",
    "assetKey": "R2 key under assets.grudge-studio.com",
    "loadoutExport": "grudge6-loadout-{race}-{class}.json from Export loadout JSON"
  },
  "editor": {
    "viewport": "three@0.185 WebGL + OrbitControls",
    "gizmo": "TransformControls translate|rotate|scale",
    "hierarchy": "mesh/bone tree click → select + gizmo",
    "loaders": ["GLTFLoader", "FBXLoader (author preview only)"],
    "importers": "Import GLB attaches main hand for mesh equipment test",
    "exporters": ["selected node .glb", "active slot mesh .glb", "loadout .json"],
    "cdnWrite": false
  },
  "test": {
    "script": "scripts/test-grudge6-editor-ssot.mjs",
    "liveSmoke": [
      "https://info.grudge-studio.com/grudge6-editor.html",
      "https://info.grudge-studio.com/js/grudge6-editor.js",
      "https://info.grudge-studio.com/api/v1/grudge6-editor-ssot.json"
    ]
  }
}
