{
  "sprites": {
    "vegeta_buu": {
      "src": "assets/buu-heroes/vegeta_buu-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            160,
            256
          ]
        ],
        "attack": [
          [
            178,
            6,
            160,
            256
          ],
          [
            350,
            6,
            160,
            256
          ],
          [
            522,
            6,
            160,
            256
          ]
        ],
        "special": [
          [
            6,
            274,
            160,
            256
          ],
          [
            178,
            274,
            160,
            256
          ],
          [
            350,
            274,
            160,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            80.0,
            256
          ]
        ],
        "attack": [
          [
            80.0,
            256
          ],
          [
            80.0,
            256
          ],
          [
            80.0,
            256
          ]
        ],
        "special": [
          [
            80.0,
            256
          ],
          [
            80.0,
            256
          ],
          [
            80.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            144,
            100
          ],
          [
            144,
            100
          ],
          [
            144,
            100
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "01107",
      "cardId": "1020461",
      "source": "https://dbz-dokkanbattle.com/card/1020461",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "special",
            "fragment": 1,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          }
        ],
        "attack": [
          {
            "kind": "special",
            "fragment": 1,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          },
          {
            "kind": "special",
            "fragment": 3,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          },
          {
            "kind": "special",
            "fragment": 1,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          }
        ],
        "special": [
          {
            "kind": "special",
            "fragment": 1,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          },
          {
            "kind": "special",
            "fragment": 3,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          },
          {
            "kind": "special",
            "fragment": 1,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu/sp01/sp_character_01107_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu/sp01/lwf_image0.png",
            "sourceRectPixels": [
              606,
              1,
              852,
              73
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              16,
              144,
              246
            ],
            "scaleForDisplay": 1.1130434782608696
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Standalone Vegeta from LR Goku/Vegeta special fragments 1 and 3; halo rectangle trimmed above hair. Body unchanged. Limited original poses, no invented melee frames.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gohan_adult": {
      "src": "assets/buu-heroes/gohan_adult-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            93,
            256
          ]
        ],
        "attack": [
          [
            219,
            6,
            154,
            195
          ],
          [
            432,
            6,
            201,
            188
          ],
          [
            645,
            6,
            188,
            203
          ],
          [
            6,
            274,
            93,
            256
          ]
        ],
        "special": [
          [
            219,
            274,
            93,
            256
          ],
          [
            432,
            274,
            161,
            256
          ],
          [
            645,
            274,
            93,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            46.5,
            256
          ]
        ],
        "attack": [
          [
            77.0,
            195
          ],
          [
            100.5,
            188
          ],
          [
            94.0,
            203
          ],
          [
            46.5,
            256
          ]
        ],
        "special": [
          [
            46.5,
            256
          ],
          [
            80.5,
            256
          ],
          [
            46.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            83,
            82
          ],
          [
            143,
            82
          ],
          [
            83,
            82
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00794",
      "cardId": "1012490",
      "source": "https://dbz-dokkanbattle.com/card/1012490",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              1,
              100,
              136
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              98,
              270
            ],
            "scaleForDisplay": 0.9481481481481482
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              296,
              164,
              399
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              162,
              206
            ],
            "scaleForDisplay": 0.9481481481481482
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              364,
              924,
              463
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              212,
              198
            ],
            "scaleForDisplay": 0.9481481481481482
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              367,
              200,
              474
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              198,
              214
            ],
            "scaleForDisplay": 0.9481481481481482
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              1,
              100,
              136
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              98,
              270
            ],
            "scaleForDisplay": 0.9481481481481482
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              1,
              100,
              136
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              98,
              270
            ],
            "scaleForDisplay": 0.9481481481481482
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/sp01/sp_character_00794_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/sp01/lwf_image0.png",
            "sourceRectPixels": [
              398,
              1,
              798,
              319
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              400,
              636
            ],
            "scaleForDisplay": 0.4025157232704403
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult/battle/battle_character_00794.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              1,
              100,
              136
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              98,
              270
            ],
            "scaleForDisplay": 0.9481481481481482
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Canonical Buu-era Saiyaman outfits without helmet; SSJ discards the green tunic, SSJ2 retains it. No Resurrection F tracksuit.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "great_saiyaman": {
      "src": "assets/buu-heroes/great_saiyaman-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            161,
            256
          ]
        ],
        "attack": [
          [
            439,
            6,
            190,
            202
          ],
          [
            872,
            6,
            256,
            205
          ],
          [
            1305,
            6,
            218,
            209
          ],
          [
            6,
            274,
            161,
            256
          ]
        ],
        "special": [
          [
            439,
            274,
            161,
            256
          ],
          [
            872,
            274,
            421,
            256
          ],
          [
            1305,
            274,
            161,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            80.5,
            256
          ]
        ],
        "attack": [
          [
            95.0,
            202
          ],
          [
            128.0,
            205
          ],
          [
            109.0,
            209
          ],
          [
            80.5,
            256
          ]
        ],
        "special": [
          [
            80.5,
            256
          ],
          [
            210.5,
            256
          ],
          [
            80.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            151,
            33
          ],
          [
            396,
            33
          ],
          [
            151,
            33
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00280",
      "cardId": "4018730",
      "source": "https://dbz-dokkanbattle.com/card/4018730",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              136,
              168,
              268
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              166,
              264
            ],
            "scaleForDisplay": 0.9696969696969697
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image2.png",
            "sourceRectPixels": [
              447,
              368,
              643,
              472
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              196,
              208
            ],
            "scaleForDisplay": 0.9696969696969697
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              402,
              266,
              508
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              264,
              211
            ],
            "scaleForDisplay": 0.9696969696969697
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image0.png",
            "sourceRectPixels": [
              514,
              403,
              739,
              511
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              225,
              216
            ],
            "scaleForDisplay": 0.9696969696969697
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              136,
              168,
              268
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              166,
              264
            ],
            "scaleForDisplay": 0.9696969696969697
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              136,
              168,
              268
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              166,
              264
            ],
            "scaleForDisplay": 0.9696969696969697
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/sp01/sp_character_00280_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/sp01/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              949,
              289
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              947,
              576
            ],
            "scaleForDisplay": 0.4444444444444444
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman/battle/battle_character_00280.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              136,
              168,
              268
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              166,
              264
            ],
            "scaleForDisplay": 0.9696969696969697
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "great_saiyaman2": {
      "src": "assets/buu-heroes/great_saiyaman2-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            216,
            256
          ]
        ],
        "attack": [
          [
            437,
            6,
            201,
            226
          ],
          [
            868,
            6,
            297,
            249
          ],
          [
            1299,
            6,
            252,
            238
          ],
          [
            6,
            274,
            216,
            256
          ]
        ],
        "special": [
          [
            437,
            274,
            216,
            256
          ],
          [
            868,
            274,
            419,
            256
          ],
          [
            1299,
            274,
            216,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            108.0,
            256
          ]
        ],
        "attack": [
          [
            100.5,
            226
          ],
          [
            148.5,
            249
          ],
          [
            126.0,
            238
          ],
          [
            108.0,
            256
          ]
        ],
        "special": [
          [
            108.0,
            256
          ],
          [
            209.5,
            256
          ],
          [
            108.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            207,
            51
          ],
          [
            402,
            51
          ],
          [
            207,
            51
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00323",
      "cardId": "1003590",
      "source": "https://dbz-dokkanbattle.com/card/1003590",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              689,
              174,
              875,
              253
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              157,
              186
            ],
            "scaleForDisplay": 1.3763440860215055
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              428,
              148,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              146,
              164
            ],
            "scaleForDisplay": 1.3763440860215055
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              442,
              1,
              658,
              92
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              216,
              181
            ],
            "scaleForDisplay": 1.3763440860215055
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image2.png",
            "sourceRectPixels": [
              192,
              224,
              375,
              310
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              183,
              173
            ],
            "scaleForDisplay": 1.3763440860215055
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              689,
              174,
              875,
              253
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              157,
              186
            ],
            "scaleForDisplay": 1.3763440860215055
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              689,
              174,
              875,
              253
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              157,
              186
            ],
            "scaleForDisplay": 1.3763440860215055
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/sp01/sp_character_00323_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              818,
              250
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              816,
              498
            ],
            "scaleForDisplay": 0.5140562248995983
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/great_saiyaman2/battle/battle_character_00323.lwf",
            "sourceTexture": "source-assets/buu-heroes/great_saiyaman2/battle/lwf_image1.png",
            "sourceRectPixels": [
              689,
              174,
              875,
              253
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              157,
              186
            ],
            "scaleForDisplay": 1.3763440860215055
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "goten": {
      "src": "assets/buu-heroes/goten-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            132,
            256
          ]
        ],
        "attack": [
          [
            220,
            6,
            202,
            224
          ],
          [
            434,
            6,
            184,
            260
          ],
          [
            648,
            6,
            172,
            254
          ],
          [
            6,
            278,
            132,
            256
          ]
        ],
        "special": [
          [
            220,
            278,
            132,
            256
          ],
          [
            434,
            278,
            178,
            256
          ],
          [
            648,
            278,
            132,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            66.0,
            256
          ]
        ],
        "attack": [
          [
            101.0,
            224
          ],
          [
            92.0,
            260
          ],
          [
            86.0,
            254
          ],
          [
            66.0,
            256
          ]
        ],
        "special": [
          [
            66.0,
            256
          ],
          [
            89.0,
            256
          ],
          [
            66.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            121,
            87
          ],
          [
            164,
            87
          ],
          [
            121,
            87
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00225",
      "cardId": "1002000",
      "source": "https://dbz-dokkanbattle.com/card/1002000",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              752,
              270,
              895,
              306
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              74,
              143
            ],
            "scaleForDisplay": 1.7902097902097902
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              897,
              278,
              1022,
              334
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              113,
              125
            ],
            "scaleForDisplay": 1.7902097902097902
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              918,
              149,
              1021,
              222
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              103,
              145
            ],
            "scaleForDisplay": 1.7902097902097902
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              595,
              290,
              737,
              338
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              96,
              142
            ],
            "scaleForDisplay": 1.7902097902097902
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              752,
              270,
              895,
              306
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              74,
              143
            ],
            "scaleForDisplay": 1.7902097902097902
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              752,
              270,
              895,
              306
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              74,
              143
            ],
            "scaleForDisplay": 1.7902097902097902
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/goten/sp01/sp_character_00225_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              419,
              146
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              290,
              417
            ],
            "scaleForDisplay": 0.6139088729016786
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten/battle/battle_character_00225.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten/battle/lwf_image0.png",
            "sourceRectPixels": [
              752,
              270,
              895,
              306
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              74,
              143
            ],
            "scaleForDisplay": 1.7902097902097902
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "trunks_kid": {
      "src": "assets/buu-heroes/trunks_kid-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            139,
            256
          ]
        ],
        "attack": [
          [
            240,
            6,
            222,
            222
          ],
          [
            474,
            6,
            198,
            281
          ],
          [
            708,
            6,
            195,
            243
          ],
          [
            6,
            299,
            139,
            256
          ]
        ],
        "special": [
          [
            240,
            299,
            139,
            256
          ],
          [
            708,
            6,
            195,
            243
          ],
          [
            708,
            299,
            139,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            69.5,
            256
          ]
        ],
        "attack": [
          [
            111.0,
            222
          ],
          [
            99.0,
            281
          ],
          [
            97.5,
            243
          ],
          [
            69.5,
            256
          ]
        ],
        "special": [
          [
            69.5,
            256
          ],
          [
            97.5,
            243
          ],
          [
            69.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            132,
            61
          ],
          [
            185,
            58
          ],
          [
            132,
            61
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00200",
      "cardId": "1001760",
      "source": "https://dbz-dokkanbattle.com/card/1001760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              350,
              153,
              464,
              184
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              62,
              114
            ],
            "scaleForDisplay": 2.245614035087719
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              680,
              267,
              779,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              99,
              99
            ],
            "scaleForDisplay": 2.245614035087719
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              512,
              124,
              637,
              168
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              88,
              125
            ],
            "scaleForDisplay": 2.245614035087719
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              735,
              222,
              843,
              266
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              87,
              108
            ],
            "scaleForDisplay": 2.245614035087719
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              350,
              153,
              464,
              184
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              62,
              114
            ],
            "scaleForDisplay": 2.245614035087719
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              350,
              153,
              464,
              184
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              62,
              114
            ],
            "scaleForDisplay": 2.245614035087719
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              735,
              222,
              843,
              266
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              87,
              108
            ],
            "scaleForDisplay": 2.245614035087719
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid/battle/battle_character_00200.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid/battle/lwf_image0.png",
            "sourceRectPixels": [
              350,
              153,
              464,
              184
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              62,
              114
            ],
            "scaleForDisplay": 2.245614035087719
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Special release references this same actor’s original extended-fist melee pose already present in the atlas; energy starts at the real glove/fist.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "vegito": {
      "src": "assets/buu-heroes/vegito-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            122,
            256
          ]
        ],
        "attack": [
          [
            219,
            6,
            179,
            182
          ],
          [
            432,
            6,
            156,
            213
          ],
          [
            645,
            6,
            201,
            198
          ],
          [
            6,
            274,
            122,
            256
          ]
        ],
        "special": [
          [
            219,
            274,
            122,
            256
          ],
          [
            432,
            274,
            144,
            256
          ],
          [
            645,
            274,
            122,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            61.0,
            256
          ]
        ],
        "attack": [
          [
            89.5,
            182
          ],
          [
            78.0,
            213
          ],
          [
            100.5,
            198
          ],
          [
            61.0,
            256
          ]
        ],
        "special": [
          [
            61.0,
            256
          ],
          [
            72.0,
            256
          ],
          [
            61.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            115,
            82
          ],
          [
            135,
            82
          ],
          [
            115,
            82
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00275",
      "cardId": "1008430",
      "source": "https://dbz-dokkanbattle.com/card/1008430",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              272,
              439,
              543,
              504
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              129,
              271
            ],
            "scaleForDisplay": 0.9446494464944649
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              572,
              214,
              761,
              310
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              189,
              193
            ],
            "scaleForDisplay": 0.9446494464944649
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              844,
              276,
              1009,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              165,
              226
            ],
            "scaleForDisplay": 0.9446494464944649
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              436,
              386,
              646,
              492
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              213,
              210
            ],
            "scaleForDisplay": 0.9446494464944649
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              272,
              439,
              543,
              504
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              129,
              271
            ],
            "scaleForDisplay": 0.9446494464944649
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              272,
              439,
              543,
              504
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              129,
              271
            ],
            "scaleForDisplay": 0.9446494464944649
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/vegito/sp01/sp_character_00275_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              466,
              414
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              464,
              825
            ],
            "scaleForDisplay": 0.3103030303030303
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegito/battle/battle_character_00275.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              272,
              439,
              543,
              504
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              129,
              271
            ],
            "scaleForDisplay": 0.9446494464944649
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gotenks": {
      "src": "assets/buu-heroes/gotenks-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            92,
            256
          ]
        ],
        "attack": [
          [
            214,
            6,
            172,
            220
          ],
          [
            422,
            6,
            173,
            221
          ],
          [
            630,
            6,
            196,
            218
          ],
          [
            6,
            274,
            92,
            256
          ]
        ],
        "special": [
          [
            214,
            274,
            92,
            256
          ],
          [
            422,
            274,
            185,
            256
          ],
          [
            630,
            274,
            92,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            46.0,
            256
          ]
        ],
        "attack": [
          [
            86.0,
            220
          ],
          [
            86.5,
            221
          ],
          [
            98.0,
            218
          ],
          [
            46.0,
            256
          ]
        ],
        "special": [
          [
            46.0,
            256
          ],
          [
            92.5,
            256
          ],
          [
            46.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            79,
            95
          ],
          [
            159,
            95
          ],
          [
            79,
            95
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00276",
      "cardId": "1011080",
      "source": "https://dbz-dokkanbattle.com/card/1011080",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              834,
              95,
              1004,
              126
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              458,
              324,
              572,
              396
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              114,
              146
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              341,
              324,
              456,
              397
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              147
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              824,
              324,
              954,
              396
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              130,
              145
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              834,
              95,
              1004,
              126
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              834,
              95,
              1004,
              126
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gotenks/sp01/sp_character_00276_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              443,
              160
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              319,
              441
            ],
            "scaleForDisplay": 0.5804988662131519
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks/battle/battle_character_00276.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks/battle/lwf_image0.png",
            "sourceRectPixels": [
              834,
              95,
              1004,
              126
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "videl": {
      "src": "assets/buu-heroes/videl-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            152,
            256
          ]
        ],
        "attack": [
          [
            271,
            6,
            193,
            200
          ],
          [
            536,
            6,
            250,
            246
          ],
          [
            801,
            6,
            213,
            247
          ],
          [
            6,
            274,
            152,
            256
          ]
        ],
        "special": [
          [
            271,
            274,
            152,
            256
          ],
          [
            536,
            274,
            253,
            256
          ],
          [
            801,
            274,
            152,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            76.0,
            256
          ]
        ],
        "attack": [
          [
            96.5,
            200
          ],
          [
            125.0,
            246
          ],
          [
            106.5,
            247
          ],
          [
            76.0,
            256
          ]
        ],
        "special": [
          [
            76.0,
            256
          ],
          [
            126.5,
            256
          ],
          [
            76.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            144,
            120
          ],
          [
            240,
            120
          ],
          [
            144,
            120
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00039",
      "cardId": "1015581",
      "source": "https://dbz-dokkanbattle.com/card/1015581",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              178,
              278,
              284,
              366
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              178
            ],
            "scaleForDisplay": 1.4382022471910112
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image1.png",
            "sourceRectPixels": [
              300,
              278,
              439,
              346
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              134,
              139
            ],
            "scaleForDisplay": 1.4382022471910112
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              293,
              203,
              467,
              288
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              174,
              171
            ],
            "scaleForDisplay": 1.4382022471910112
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              679,
              361,
              851,
              435
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              148,
              172
            ],
            "scaleForDisplay": 1.4382022471910112
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              178,
              278,
              284,
              366
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              178
            ],
            "scaleForDisplay": 1.4382022471910112
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              178,
              278,
              284,
              366
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              178
            ],
            "scaleForDisplay": 1.4382022471910112
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/videl/sp01/sp_character_00039_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              452,
              228
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              450,
              455
            ],
            "scaleForDisplay": 0.5626373626373626
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/videl/battle/battle_character_00039.lwf",
            "sourceTexture": "source-assets/buu-heroes/videl/battle/lwf_image0.png",
            "sourceRectPixels": [
              178,
              278,
              284,
              366
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              178
            ],
            "scaleForDisplay": 1.4382022471910112
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "shin": {
      "src": "assets/buu-heroes/shin-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            93,
            256
          ]
        ],
        "attack": [
          [
            235,
            6,
            192,
            217
          ],
          [
            464,
            6,
            157,
            268
          ],
          [
            693,
            6,
            180,
            240
          ],
          [
            6,
            286,
            93,
            256
          ]
        ],
        "special": [
          [
            235,
            286,
            93,
            256
          ],
          [
            464,
            286,
            217,
            256
          ],
          [
            693,
            286,
            93,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            46.5,
            256
          ]
        ],
        "attack": [
          [
            96.0,
            217
          ],
          [
            78.5,
            268
          ],
          [
            90.0,
            240
          ],
          [
            46.5,
            256
          ]
        ],
        "special": [
          [
            46.5,
            256
          ],
          [
            108.5,
            256
          ],
          [
            46.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            88,
            95
          ],
          [
            206,
            95
          ],
          [
            88,
            95
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00361",
      "cardId": "1003480",
      "source": "https://dbz-dokkanbattle.com/card/1003480",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image1.png",
            "sourceRectPixels": [
              0,
              470,
              228,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              83,
              228
            ],
            "scaleForDisplay": 1.1228070175438596
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image1.png",
            "sourceRectPixels": [
              324,
              329,
              495,
              426
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              171,
              193
            ],
            "scaleForDisplay": 1.1228070175438596
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image0.png",
            "sourceRectPixels": [
              785,
              441,
              1024,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              140,
              239
            ],
            "scaleForDisplay": 1.1228070175438596
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image0.png",
            "sourceRectPixels": [
              697,
              154,
              911,
              234
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              160,
              214
            ],
            "scaleForDisplay": 1.1228070175438596
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image1.png",
            "sourceRectPixels": [
              0,
              470,
              228,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              83,
              228
            ],
            "scaleForDisplay": 1.1228070175438596
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image1.png",
            "sourceRectPixels": [
              0,
              470,
              228,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              83,
              228
            ],
            "scaleForDisplay": 1.1228070175438596
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/shin/sp01/sp_character_00361_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              548,
              322
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              546,
              643
            ],
            "scaleForDisplay": 0.39813374805598756
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/shin/battle/battle_character_00361.lwf",
            "sourceTexture": "source-assets/buu-heroes/shin/battle/lwf_image1.png",
            "sourceRectPixels": [
              0,
              470,
              228,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              83,
              228
            ],
            "scaleForDisplay": 1.1228070175438596
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "kibito": {
      "src": "assets/buu-heroes/kibito-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            152,
            256
          ]
        ],
        "attack": [
          [
            281,
            6,
            189,
            207
          ],
          [
            556,
            6,
            176,
            241
          ],
          [
            831,
            6,
            235,
            229
          ],
          [
            6,
            274,
            152,
            256
          ]
        ],
        "special": [
          [
            281,
            274,
            152,
            256
          ],
          [
            556,
            274,
            263,
            256
          ],
          [
            831,
            274,
            152,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            76.0,
            256
          ]
        ],
        "attack": [
          [
            94.5,
            207
          ],
          [
            88.0,
            241
          ],
          [
            117.5,
            229
          ],
          [
            76.0,
            256
          ]
        ],
        "special": [
          [
            76.0,
            256
          ],
          [
            131.5,
            256
          ],
          [
            76.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            143,
            44
          ],
          [
            247,
            44
          ],
          [
            143,
            44
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00359",
      "cardId": "1003460",
      "source": "https://dbz-dokkanbattle.com/card/1003460",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              207,
              185,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              183,
              309
            ],
            "scaleForDisplay": 0.8284789644012945
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image2.png",
            "sourceRectPixels": [
              793,
              170,
              1021,
              295
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              228,
              250
            ],
            "scaleForDisplay": 0.8284789644012945
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image2.png",
            "sourceRectPixels": [
              285,
              115,
              576,
              222
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              213,
              291
            ],
            "scaleForDisplay": 0.8284789644012945
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image0.png",
            "sourceRectPixels": [
              727,
              207,
              1011,
              346
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              284,
              277
            ],
            "scaleForDisplay": 0.8284789644012945
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              207,
              185,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              183,
              309
            ],
            "scaleForDisplay": 0.8284789644012945
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              207,
              185,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              183,
              309
            ],
            "scaleForDisplay": 0.8284789644012945
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/kibito/sp01/sp_character_00359_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              876,
              427
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              874,
              852
            ],
            "scaleForDisplay": 0.3004694835680751
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibito/battle/battle_character_00359.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibito/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              207,
              185,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              183,
              309
            ],
            "scaleForDisplay": 0.8284789644012945
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "kibitoshin": {
      "src": "assets/buu-heroes/kibitoshin-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            122,
            256
          ]
        ],
        "attack": [
          [
            341,
            6,
            211,
            193
          ],
          [
            676,
            6,
            179,
            250
          ],
          [
            1011,
            6,
            241,
            232
          ],
          [
            6,
            274,
            122,
            256
          ]
        ],
        "special": [
          [
            341,
            274,
            122,
            256
          ],
          [
            676,
            274,
            323,
            256
          ],
          [
            1011,
            274,
            122,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            61.0,
            256
          ]
        ],
        "attack": [
          [
            105.5,
            193
          ],
          [
            89.5,
            250
          ],
          [
            120.5,
            232
          ],
          [
            61.0,
            256
          ]
        ],
        "special": [
          [
            61.0,
            256
          ],
          [
            161.5,
            256
          ],
          [
            61.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            105,
            69
          ],
          [
            278,
            69
          ],
          [
            105,
            69
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00360",
      "cardId": "1003470",
      "source": "https://dbz-dokkanbattle.com/card/1003470",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              308,
              1,
              612,
              74
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              145,
              304
            ],
            "scaleForDisplay": 0.8421052631578947
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              392,
              252,
              507
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              250,
              229
            ],
            "scaleForDisplay": 0.8421052631578947
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              302,
              210,
              599,
              317
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              213,
              297
            ],
            "scaleForDisplay": 0.8421052631578947
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              372,
              288,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              286,
              275
            ],
            "scaleForDisplay": 0.8421052631578947
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              308,
              1,
              612,
              74
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              145,
              304
            ],
            "scaleForDisplay": 0.8421052631578947
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              308,
              1,
              612,
              74
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              145,
              304
            ],
            "scaleForDisplay": 0.8421052631578947
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/sp01/sp_character_00360_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              862,
              342
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              860,
              682
            ],
            "scaleForDisplay": 0.375366568914956
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/kibitoshin/battle/battle_character_00360.lwf",
            "sourceTexture": "source-assets/buu-heroes/kibitoshin/battle/lwf_image2.png",
            "sourceRectPixels": [
              308,
              1,
              612,
              74
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              145,
              304
            ],
            "scaleForDisplay": 0.8421052631578947
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "goku_ssj2": {
      "src": "assets/buu-heroes/goku_ssj2-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            136,
            256
          ]
        ],
        "attack": [
          [
            266,
            6,
            218,
            235
          ],
          [
            526,
            6,
            240,
            219
          ],
          [
            786,
            6,
            248,
            219
          ],
          [
            6,
            274,
            136,
            256
          ]
        ],
        "special": [
          [
            266,
            274,
            136,
            256
          ],
          [
            526,
            274,
            246,
            256
          ],
          [
            786,
            274,
            136,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            68.0,
            256
          ]
        ],
        "attack": [
          [
            109.0,
            235
          ],
          [
            120.0,
            219
          ],
          [
            124.0,
            219
          ],
          [
            68.0,
            256
          ]
        ],
        "special": [
          [
            68.0,
            256
          ],
          [
            123.0,
            256
          ],
          [
            68.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            125,
            84
          ],
          [
            226,
            84
          ],
          [
            125,
            84
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00066",
      "cardId": "1007610",
      "source": "https://dbz-dokkanbattle.com/card/1007610",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              343,
              120,
              467,
              237
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image2.png",
            "sourceRectPixels": [
              227,
              110,
              442,
              209
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              199,
              215
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              817,
              200,
              1017,
              310
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              219,
              200
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              306,
              236,
              506,
              350
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              227,
              200
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              343,
              120,
              467,
              237
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              343,
              120,
              467,
              237
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/sp01/sp_character_00066_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              640,
              333
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              638,
              664
            ],
            "scaleForDisplay": 0.3855421686746988
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj2/battle/battle_character_00066.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              343,
              120,
              467,
              237
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "goku_ssj3": {
      "src": "assets/buu-heroes/goku_ssj3-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            178,
            256
          ]
        ],
        "attack": [
          [
            299,
            6,
            259,
            235
          ],
          [
            592,
            6,
            281,
            207
          ],
          [
            885,
            6,
            263,
            210
          ],
          [
            6,
            274,
            178,
            256
          ]
        ],
        "special": [
          [
            299,
            274,
            178,
            256
          ],
          [
            592,
            274,
            227,
            256
          ],
          [
            885,
            274,
            178,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            89.0,
            256
          ]
        ],
        "attack": [
          [
            129.5,
            235
          ],
          [
            140.5,
            207
          ],
          [
            131.5,
            210
          ],
          [
            89.0,
            256
          ]
        ],
        "special": [
          [
            89.0,
            256
          ],
          [
            113.5,
            256
          ],
          [
            89.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            164,
            84
          ],
          [
            209,
            84
          ],
          [
            164,
            84
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00227",
      "cardId": "1003211",
      "source": "https://dbz-dokkanbattle.com/card/1003211",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              408,
              222,
              571,
              338
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              163,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              576,
              185,
              813,
              292
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              237,
              215
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              485,
              332,
              674,
              460
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              257,
              189
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              188,
              379,
              380,
              499
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              240,
              192
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              408,
              222,
              571,
              338
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              163,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              408,
              222,
              571,
              338
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              163,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/sp01/sp_character_00227_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              639,
              360
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              637,
              719
            ],
            "scaleForDisplay": 0.3560500695410292
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goku_ssj3/battle/battle_character_00227.lwf",
            "sourceTexture": "source-assets/buu-heroes/goku_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              408,
              222,
              571,
              338
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              163,
              234
            ],
            "scaleForDisplay": 1.0940170940170941
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "vegeta_buu_ssj": {
      "src": "assets/buu-heroes/vegeta_buu_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            142,
            256
          ]
        ],
        "attack": [
          [
            229,
            6,
            211,
            208
          ],
          [
            452,
            6,
            198,
            237
          ],
          [
            675,
            6,
            203,
            234
          ],
          [
            6,
            274,
            142,
            256
          ]
        ],
        "special": [
          [
            229,
            274,
            142,
            256
          ],
          [
            452,
            274,
            138,
            256
          ],
          [
            675,
            274,
            142,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            71.0,
            256
          ]
        ],
        "attack": [
          [
            105.5,
            208
          ],
          [
            99.0,
            237
          ],
          [
            101.5,
            234
          ],
          [
            71.0,
            256
          ]
        ],
        "special": [
          [
            71.0,
            256
          ],
          [
            69.0,
            256
          ],
          [
            71.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            105,
            92
          ],
          [
            102,
            92
          ],
          [
            105,
            92
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00440",
      "cardId": "1020870",
      "source": "https://dbz-dokkanbattle.com/card/1020870",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              98,
              0,
              218,
              108
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              120,
              217
            ],
            "scaleForDisplay": 1.1797235023041475
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              579,
              394,
              758,
              482
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              179,
              176
            ],
            "scaleForDisplay": 1.1797235023041475
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              0,
              428,
              201,
              512
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              168,
              201
            ],
            "scaleForDisplay": 1.1797235023041475
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              470,
              412,
              642,
              511
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              172,
              198
            ],
            "scaleForDisplay": 1.1797235023041475
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              98,
              0,
              218,
              108
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              120,
              217
            ],
            "scaleForDisplay": 1.1797235023041475
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              98,
              0,
              218,
              108
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              120,
              217
            ],
            "scaleForDisplay": 1.1797235023041475
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/sp01/sp_character_00440_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              0,
              0,
              363,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              363,
              672
            ],
            "scaleForDisplay": 0.38095238095238093
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj/battle/battle_character_00440.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              98,
              0,
              218,
              108
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              120,
              217
            ],
            "scaleForDisplay": 1.1797235023041475
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Original Angel SSJ Vegeta canotta retained. Halo intersects hair and is preserved to avoid cutting original hair pixels.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "vegeta_buu_ssj2": {
      "src": "assets/buu-heroes/vegeta_buu_ssj2-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            140,
            256
          ]
        ],
        "attack": [
          [
            253,
            6,
            199,
            256
          ],
          [
            500,
            6,
            212,
            235
          ],
          [
            747,
            6,
            235,
            212
          ],
          [
            6,
            274,
            140,
            256
          ]
        ],
        "special": [
          [
            253,
            274,
            140,
            256
          ],
          [
            500,
            274,
            177,
            256
          ],
          [
            747,
            274,
            140,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            70.0,
            256
          ]
        ],
        "attack": [
          [
            99.5,
            256
          ],
          [
            106.0,
            235
          ],
          [
            117.5,
            212
          ],
          [
            70.0,
            256
          ]
        ],
        "special": [
          [
            70.0,
            256
          ],
          [
            88.5,
            256
          ],
          [
            70.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            136,
            69
          ],
          [
            172,
            69
          ],
          [
            136,
            69
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00207",
      "cardId": "1009890",
      "source": "https://dbz-dokkanbattle.com/card/1009890",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              230,
              827,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              211
            ],
            "scaleForDisplay": 1.2132701421800949
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              390,
              230,
              554,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              164,
              211
            ],
            "scaleForDisplay": 1.2132701421800949
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              388,
              422,
              582,
              509
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              175,
              194
            ],
            "scaleForDisplay": 1.2132701421800949
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              585,
              186,
              779,
              273
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              194,
              175
            ],
            "scaleForDisplay": 1.2132701421800949
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              230,
              827,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              211
            ],
            "scaleForDisplay": 1.2132701421800949
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              230,
              827,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              211
            ],
            "scaleForDisplay": 1.2132701421800949
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/sp01/sp_character_00207_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              470,
              339
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              468,
              676
            ],
            "scaleForDisplay": 0.378698224852071
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/battle_character_00207.lwf",
            "sourceTexture": "source-assets/buu-heroes/vegeta_buu_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              230,
              827,
              336
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              211
            ],
            "scaleForDisplay": 1.2132701421800949
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gohan_adult_ssj": {
      "src": "assets/buu-heroes/gohan_adult_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            175,
            256
          ]
        ],
        "attack": [
          [
            276,
            6,
            201,
            258
          ],
          [
            546,
            6,
            258,
            244
          ],
          [
            816,
            6,
            241,
            263
          ],
          [
            6,
            281,
            175,
            256
          ]
        ],
        "special": [
          [
            276,
            281,
            175,
            256
          ],
          [
            816,
            6,
            241,
            263
          ],
          [
            816,
            281,
            175,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            87.5,
            256
          ]
        ],
        "attack": [
          [
            100.5,
            258
          ],
          [
            129.0,
            244
          ],
          [
            120.5,
            263
          ],
          [
            87.5,
            256
          ]
        ],
        "special": [
          [
            87.5,
            256
          ],
          [
            120.5,
            263
          ],
          [
            87.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            166,
            46
          ],
          [
            229,
            47
          ],
          [
            166,
            46
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "01047",
      "cardId": "1003261",
      "source": "https://dbz-dokkanbattle.com/card/1003261",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              106,
              144,
              210
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              142,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              404,
              322,
              568,
              427
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              164,
              210
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              298,
              1,
              496,
              106
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              210,
              198
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              186,
              216,
              284
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              196,
              214
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              106,
              144,
              210
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              142,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              106,
              144,
              210
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              142,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              186,
              216,
              284
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              196,
              214
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj/battle/battle_character_01047.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              106,
              144,
              210
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              142,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Canonical Buu-era Saiyaman outfits without helmet; SSJ discards the green tunic, SSJ2 retains it. No Resurrection F tracksuit. Special release references this same actor’s original extended-fist melee pose already present in the atlas; energy starts at the real glove/fist.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gohan_adult_ssj2": {
      "src": "assets/buu-heroes/gohan_adult_ssj2-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            109,
            256
          ]
        ],
        "attack": [
          [
            238,
            6,
            196,
            208
          ],
          [
            470,
            6,
            210,
            207
          ],
          [
            702,
            6,
            220,
            191
          ],
          [
            6,
            274,
            109,
            256
          ]
        ],
        "special": [
          [
            238,
            274,
            109,
            256
          ],
          [
            470,
            274,
            160,
            256
          ],
          [
            702,
            274,
            109,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            54.5,
            256
          ]
        ],
        "attack": [
          [
            98.0,
            208
          ],
          [
            105.0,
            207
          ],
          [
            110.0,
            191
          ],
          [
            54.5,
            256
          ]
        ],
        "special": [
          [
            54.5,
            256
          ],
          [
            80.0,
            256
          ],
          [
            54.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            97,
            82
          ],
          [
            142,
            82
          ],
          [
            97,
            82
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00447",
      "cardId": "1014270",
      "source": "https://dbz-dokkanbattle.com/card/1014270",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              283,
              820,
              410
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              108,
              254
            ],
            "scaleForDisplay": 1.0078740157480315
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              608,
              106,
              802,
              209
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              194,
              206
            ],
            "scaleForDisplay": 1.0078740157480315
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image1.png",
            "sourceRectPixels": [
              400,
              108,
              606,
              212
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              208,
              206
            ],
            "scaleForDisplay": 1.0078740157480315
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              210,
              416,
              428,
              511
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              218,
              190
            ],
            "scaleForDisplay": 1.0078740157480315
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              283,
              820,
              410
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              108,
              254
            ],
            "scaleForDisplay": 1.0078740157480315
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              283,
              820,
              410
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              108,
              254
            ],
            "scaleForDisplay": 1.0078740157480315
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/sp01/sp_character_00447_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              401,
              320
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              399,
              637
            ],
            "scaleForDisplay": 0.40188383045525905
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_adult_ssj2/battle/battle_character_00447.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_adult_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              712,
              283,
              820,
              410
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              108,
              254
            ],
            "scaleForDisplay": 1.0078740157480315
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline. Canonical Buu-era Saiyaman outfits without helmet; SSJ discards the green tunic, SSJ2 retains it. No Resurrection F tracksuit.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gohan_ultimate": {
      "src": "assets/buu-heroes/gohan_ultimate-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            167,
            256
          ]
        ],
        "attack": [
          [
            287,
            6,
            240,
            208
          ],
          [
            568,
            6,
            208,
            262
          ],
          [
            849,
            6,
            269,
            238
          ],
          [
            6,
            280,
            167,
            256
          ]
        ],
        "special": [
          [
            287,
            280,
            167,
            256
          ],
          [
            568,
            280,
            252,
            256
          ],
          [
            849,
            280,
            167,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            83.5,
            256
          ]
        ],
        "attack": [
          [
            120.0,
            208
          ],
          [
            104.0,
            262
          ],
          [
            134.5,
            238
          ],
          [
            83.5,
            256
          ]
        ],
        "special": [
          [
            83.5,
            256
          ],
          [
            126.0,
            256
          ],
          [
            83.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            154,
            84
          ],
          [
            232,
            84
          ],
          [
            154,
            84
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00235",
      "cardId": "1006701",
      "source": "https://dbz-dokkanbattle.com/card/1006701",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image0.png",
            "sourceRectPixels": [
              882,
              1,
              1015,
              103
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image1.png",
            "sourceRectPixels": [
              568,
              280,
              759,
              364
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              191,
              166
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              209,
              168,
              314
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              166,
              209
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              272,
              192,
              378
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              214,
              190
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image0.png",
            "sourceRectPixels": [
              882,
              1,
              1015,
              103
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image0.png",
            "sourceRectPixels": [
              882,
              1,
              1015,
              103
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/sp01/sp_character_00235_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              639,
              325
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              637,
              648
            ],
            "scaleForDisplay": 0.3950617283950617
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gohan_ultimate/battle/battle_character_00235.lwf",
            "sourceTexture": "source-assets/buu-heroes/gohan_ultimate/battle/lwf_image0.png",
            "sourceRectPixels": [
              882,
              1,
              1015,
              103
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "goten_ssj": {
      "src": "assets/buu-heroes/goten_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            123,
            256
          ]
        ],
        "attack": [
          [
            198,
            6,
            180,
            229
          ],
          [
            390,
            6,
            176,
            251
          ],
          [
            582,
            6,
            158,
            244
          ],
          [
            6,
            274,
            123,
            256
          ]
        ],
        "special": [
          [
            198,
            274,
            123,
            256
          ],
          [
            390,
            274,
            179,
            256
          ],
          [
            582,
            274,
            123,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            61.5,
            256
          ]
        ],
        "attack": [
          [
            90.0,
            229
          ],
          [
            88.0,
            251
          ],
          [
            79.0,
            244
          ],
          [
            61.5,
            256
          ]
        ],
        "special": [
          [
            61.5,
            256
          ],
          [
            89.5,
            256
          ],
          [
            61.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            113,
            87
          ],
          [
            165,
            87
          ],
          [
            113,
            87
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00279",
      "cardId": "1002580",
      "source": "https://dbz-dokkanbattle.com/card/1002580",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              946,
              1,
              1020,
              78
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              74,
              154
            ],
            "scaleForDisplay": 1.6623376623376624
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              546,
              322,
              654,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              108,
              138
            ],
            "scaleForDisplay": 1.6623376623376624
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              915,
              202,
              1021,
              278
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              151
            ],
            "scaleForDisplay": 1.6623376623376624
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              372,
              352,
              519,
              399
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              95,
              147
            ],
            "scaleForDisplay": 1.6623376623376624
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              946,
              1,
              1020,
              78
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              74,
              154
            ],
            "scaleForDisplay": 1.6623376623376624
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              946,
              1,
              1020,
              78
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              74,
              154
            ],
            "scaleForDisplay": 1.6623376623376624
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/sp01/sp_character_00279_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              452,
              158
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              314,
              450
            ],
            "scaleForDisplay": 0.5688888888888889
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/goten_ssj/battle/battle_character_00279.lwf",
            "sourceTexture": "source-assets/buu-heroes/goten_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              946,
              1,
              1020,
              78
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              74,
              154
            ],
            "scaleForDisplay": 1.6623376623376624
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "trunks_kid_ssj": {
      "src": "assets/buu-heroes/trunks_kid_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            135,
            256
          ]
        ],
        "attack": [
          [
            244,
            6,
            226,
            220
          ],
          [
            482,
            6,
            189,
            272
          ],
          [
            720,
            6,
            187,
            241
          ],
          [
            6,
            290,
            135,
            256
          ]
        ],
        "special": [
          [
            244,
            290,
            135,
            256
          ],
          [
            482,
            290,
            191,
            256
          ],
          [
            720,
            290,
            135,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            67.5,
            256
          ]
        ],
        "attack": [
          [
            113.0,
            220
          ],
          [
            94.5,
            272
          ],
          [
            93.5,
            241
          ],
          [
            67.5,
            256
          ]
        ],
        "special": [
          [
            67.5,
            256
          ],
          [
            95.5,
            256
          ],
          [
            67.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            89,
            123
          ],
          [
            126,
            123
          ],
          [
            89,
            123
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00278",
      "cardId": "1002570",
      "source": "https://dbz-dokkanbattle.com/card/1002570",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              672,
              111,
              754,
              189
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              82,
              156
            ],
            "scaleForDisplay": 1.641025641025641
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              614,
              338,
              752,
              404
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              138,
              134
            ],
            "scaleForDisplay": 1.641025641025641
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              756,
              120,
              922,
              177
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              115,
              166
            ],
            "scaleForDisplay": 1.641025641025641
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              638,
              190,
              752,
              264
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              114,
              147
            ],
            "scaleForDisplay": 1.641025641025641
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              672,
              111,
              754,
              189
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              82,
              156
            ],
            "scaleForDisplay": 1.641025641025641
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              672,
              111,
              754,
              189
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              82,
              156
            ],
            "scaleForDisplay": 1.641025641025641
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/sp01/sp_character_00278_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              402,
              150
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              298,
              400
            ],
            "scaleForDisplay": 0.64
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/trunks_kid_ssj/battle/battle_character_00278.lwf",
            "sourceTexture": "source-assets/buu-heroes/trunks_kid_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              672,
              111,
              754,
              189
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              82,
              156
            ],
            "scaleForDisplay": 1.641025641025641
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "super_vegito": {
      "src": "assets/buu-heroes/super_vegito-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            123,
            256
          ]
        ],
        "attack": [
          [
            220,
            6,
            87,
            41
          ],
          [
            434,
            6,
            202,
            187
          ],
          [
            648,
            6,
            180,
            184
          ],
          [
            6,
            274,
            107,
            254
          ]
        ],
        "special": [
          [
            220,
            274,
            123,
            256
          ],
          [
            434,
            274,
            201,
            256
          ],
          [
            648,
            274,
            123,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            61.5,
            256
          ]
        ],
        "attack": [
          [
            43.5,
            41
          ],
          [
            101.0,
            187
          ],
          [
            90.0,
            184
          ],
          [
            53.5,
            254
          ]
        ],
        "special": [
          [
            61.5,
            256
          ],
          [
            100.5,
            256
          ],
          [
            61.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "left",
          "left",
          "left",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            90,
            141
          ],
          [
            147,
            141
          ],
          [
            90,
            141
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00535",
      "cardId": "1006791",
      "source": "https://dbz-dokkanbattle.com/card/1006791",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 53,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              749,
              330,
              1022,
              396
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              131,
              273
            ],
            "scaleForDisplay": 0.9411764705882353
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              974,
              1,
              1018,
              47
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              92,
              44
            ],
            "scaleForDisplay": 0.9411764705882353
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image2.png",
            "sourceRectPixels": [
              218,
              1,
              419,
              108
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              215,
              200
            ],
            "scaleForDisplay": 0.9411764705882353
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image2.png",
            "sourceRectPixels": [
              392,
              322,
              583,
              420
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              191,
              195
            ],
            "scaleForDisplay": 0.9411764705882353
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image1.png",
            "sourceRectPixels": [
              135,
              298,
              250,
              432
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              115,
              270
            ],
            "scaleForDisplay": 0.9411764705882353
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 53,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              749,
              330,
              1022,
              396
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              131,
              273
            ],
            "scaleForDisplay": 0.9411764705882353
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/sp01/sp_character_00535_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              573,
              365
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              571,
              728
            ],
            "scaleForDisplay": 0.3516483516483517
          },
          {
            "kind": "attack",
            "fragment": 53,
            "sourceLwf": "source-assets/buu-heroes/super_vegito/battle/battle_character_00535.lwf",
            "sourceTexture": "source-assets/buu-heroes/super_vegito/battle/lwf_image0.png",
            "sourceRectPixels": [
              749,
              330,
              1022,
              396
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              131,
              273
            ],
            "scaleForDisplay": 0.9411764705882353
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gotenks_ssj": {
      "src": "assets/buu-heroes/gotenks_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            92,
            256
          ]
        ],
        "attack": [
          [
            223,
            6,
            172,
            218
          ],
          [
            440,
            6,
            173,
            223
          ],
          [
            657,
            6,
            196,
            217
          ],
          [
            6,
            274,
            92,
            256
          ]
        ],
        "special": [
          [
            223,
            274,
            92,
            256
          ],
          [
            440,
            274,
            205,
            256
          ],
          [
            657,
            274,
            92,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            46.0,
            256
          ]
        ],
        "attack": [
          [
            86.0,
            218
          ],
          [
            86.5,
            223
          ],
          [
            98.0,
            217
          ],
          [
            46.0,
            256
          ]
        ],
        "special": [
          [
            46.0,
            256
          ],
          [
            102.5,
            256
          ],
          [
            46.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            50,
            156
          ],
          [
            111,
            156
          ],
          [
            50,
            156
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00457",
      "cardId": "1011070",
      "source": "https://dbz-dokkanbattle.com/card/1011070",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              172,
              31,
              342,
              62
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              908,
              426,
              1022,
              499
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              114,
              145
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              548,
              358,
              663,
              432
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              115,
              148
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              840,
              145,
              984,
              210
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              130,
              144
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              172,
              31,
              342,
              62
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              172,
              31,
              342,
              62
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/sp01/sp_character_00457_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              0,
              0,
              388,
              156
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              311,
              388
            ],
            "scaleForDisplay": 0.6597938144329897
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj/battle/battle_character_00457.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              172,
              31,
              342,
              62
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              61,
              170
            ],
            "scaleForDisplay": 1.5058823529411764
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    },
    "gotenks_ssj3": {
      "src": "assets/buu-heroes/gotenks_ssj3-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            167,
            256
          ]
        ],
        "attack": [
          [
            292,
            6,
            228,
            251
          ],
          [
            578,
            6,
            262,
            233
          ],
          [
            864,
            6,
            232,
            232
          ],
          [
            6,
            274,
            167,
            256
          ]
        ],
        "special": [
          [
            292,
            274,
            167,
            256
          ],
          [
            578,
            274,
            274,
            256
          ],
          [
            864,
            274,
            167,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            83.5,
            256
          ]
        ],
        "attack": [
          [
            114.0,
            251
          ],
          [
            131.0,
            233
          ],
          [
            116.0,
            232
          ],
          [
            83.5,
            256
          ]
        ],
        "special": [
          [
            83.5,
            256
          ],
          [
            137.0,
            256
          ],
          [
            83.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            157,
            143
          ],
          [
            258,
            143
          ],
          [
            157,
            143
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00611",
      "cardId": "1011061",
      "source": "https://dbz-dokkanbattle.com/card/1011061",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              703,
              268,
              861,
              320
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              103,
              158
            ],
            "scaleForDisplay": 1.620253164556962
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              157,
              72
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              141,
              155
            ],
            "scaleForDisplay": 1.620253164556962
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              424,
              76,
              586,
              148
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              162,
              144
            ],
            "scaleForDisplay": 1.620253164556962
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image1.png",
            "sourceRectPixels": [
              316,
              1,
              459,
              72
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              143,
              143
            ],
            "scaleForDisplay": 1.620253164556962
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              703,
              268,
              861,
              320
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              103,
              158
            ],
            "scaleForDisplay": 1.620253164556962
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              703,
              268,
              861,
              320
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              103,
              158
            ],
            "scaleForDisplay": 1.620253164556962
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/sp01/sp_character_00611_01.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              470,
              220
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              468,
              438
            ],
            "scaleForDisplay": 0.5844748858447488
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/buu-heroes/gotenks_ssj3/battle/battle_character_00611.lwf",
            "sourceTexture": "source-assets/buu-heroes/gotenks_ssj3/battle/lwf_image0.png",
            "sourceRectPixels": [
              703,
              268,
              861,
              320
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              103,
              158
            ],
            "scaleForDisplay": 1.620253164556962
          }
        ]
      },
      "note": "Original Dokkan guard, melee and special textures. LWF rotation restored and proportionally scaled. Representative poses, not a full LWF timeline.",
      "emitterReview": "Release origin checked visually on original hand, fist, or attacking foot for physical specials. Separate from global body bounds."
    }
  },
  "portraits": {
    "vegeta_buu": {
      "src": "assets/buu-heroes/vegeta_buu-portrait.webp",
      "artSrc": "assets/buu-heroes/vegeta_buu-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1020461",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1020460/card_1020460_character.png",
      "cardId": "1020460",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ],
      "note": "Card face cropped to standalone Vegeta; larger art uses the separated original special texture to avoid showing Goku."
    },
    "gohan_adult": {
      "src": "assets/buu-heroes/gohan_adult-portrait.webp",
      "artSrc": "assets/buu-heroes/gohan_adult-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1012490",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1012490/card_1012490_character.png",
      "cardId": "1012490",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "great_saiyaman": {
      "src": "assets/buu-heroes/great_saiyaman-portrait.webp",
      "artSrc": "assets/buu-heroes/great_saiyaman-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/4018730",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/4018730/card_4018730_character.png",
      "cardId": "4018730",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "great_saiyaman2": {
      "src": "assets/buu-heroes/great_saiyaman2-portrait.webp",
      "artSrc": "assets/buu-heroes/great_saiyaman2-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003590",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003590/card_1003590_character.png",
      "cardId": "1003590",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "goten": {
      "src": "assets/buu-heroes/goten-portrait.webp",
      "artSrc": "assets/buu-heroes/goten-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1002000",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1002000/card_1002000_character.png",
      "cardId": "1002000",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "trunks_kid": {
      "src": "assets/buu-heroes/trunks_kid-portrait.webp",
      "artSrc": "assets/buu-heroes/trunks_kid-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001760",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001760/card_1001760_character.png",
      "cardId": "1001760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "vegito": {
      "src": "assets/buu-heroes/vegito-portrait.webp",
      "artSrc": "assets/buu-heroes/vegito-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1008430",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1008430/card_1008430_character.png",
      "cardId": "1008430",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gotenks": {
      "src": "assets/buu-heroes/gotenks-portrait.webp",
      "artSrc": "assets/buu-heroes/gotenks-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1011080",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1011080/card_1011080_character.png",
      "cardId": "1011080",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "videl": {
      "src": "assets/buu-heroes/videl-portrait.webp",
      "artSrc": "assets/buu-heroes/videl-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1015581",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1015580/card_1015580_character.png",
      "cardId": "1015580",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "shin": {
      "src": "assets/buu-heroes/shin-portrait.webp",
      "artSrc": "assets/buu-heroes/shin-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003480",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003480/card_1003480_character.png",
      "cardId": "1003480",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "kibito": {
      "src": "assets/buu-heroes/kibito-portrait.webp",
      "artSrc": "assets/buu-heroes/kibito-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003460",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003460/card_1003460_character.png",
      "cardId": "1003460",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "kibitoshin": {
      "src": "assets/buu-heroes/kibitoshin-portrait.webp",
      "artSrc": "assets/buu-heroes/kibitoshin-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003470",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003470/card_1003470_character.png",
      "cardId": "1003470",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "goku_ssj2": {
      "src": "assets/buu-heroes/goku_ssj2-portrait.webp",
      "artSrc": "assets/buu-heroes/goku_ssj2-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1007610",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1007610/card_1007610_character.png",
      "cardId": "1007610",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "goku_ssj3": {
      "src": "assets/buu-heroes/goku_ssj3-portrait.webp",
      "artSrc": "assets/buu-heroes/goku_ssj3-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003211",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003210/card_1003210_character.png",
      "cardId": "1003210",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "vegeta_buu_ssj": {
      "src": "assets/buu-heroes/vegeta_buu_ssj-portrait.webp",
      "artSrc": "assets/buu-heroes/vegeta_buu_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1020870",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1005080/card_1005080_character.png",
      "cardId": "1005080",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "vegeta_buu_ssj2": {
      "src": "assets/buu-heroes/vegeta_buu_ssj2-portrait.webp",
      "artSrc": "assets/buu-heroes/vegeta_buu_ssj2-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1009890",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1009890/card_1009890_character.png",
      "cardId": "1009890",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_adult_ssj": {
      "src": "assets/buu-heroes/gohan_adult_ssj-portrait.webp",
      "artSrc": "assets/buu-heroes/gohan_adult_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003261",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1018580/card_1018580_character.png",
      "cardId": "1018580",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_adult_ssj2": {
      "src": "assets/buu-heroes/gohan_adult_ssj2-portrait.webp",
      "artSrc": "assets/buu-heroes/gohan_adult_ssj2-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1014270",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1014270/card_1014270_character.png",
      "cardId": "1014270",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_ultimate": {
      "src": "assets/buu-heroes/gohan_ultimate-portrait.webp",
      "artSrc": "assets/buu-heroes/gohan_ultimate-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1006701",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1006700/card_1006700_character.png",
      "cardId": "1006700",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "goten_ssj": {
      "src": "assets/buu-heroes/goten_ssj-portrait.webp",
      "artSrc": "assets/buu-heroes/goten_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1002580",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1002580/card_1002580_character.png",
      "cardId": "1002580",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "trunks_kid_ssj": {
      "src": "assets/buu-heroes/trunks_kid_ssj-portrait.webp",
      "artSrc": "assets/buu-heroes/trunks_kid_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1002570",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1002570/card_1002570_character.png",
      "cardId": "1002570",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "super_vegito": {
      "src": "assets/buu-heroes/super_vegito-portrait.webp",
      "artSrc": "assets/buu-heroes/super_vegito-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1006791",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1006790/card_1006790_character.png",
      "cardId": "1006790",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gotenks_ssj": {
      "src": "assets/buu-heroes/gotenks_ssj-portrait.webp",
      "artSrc": "assets/buu-heroes/gotenks_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1011070",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1011070/card_1011070_character.png",
      "cardId": "1011070",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gotenks_ssj3": {
      "src": "assets/buu-heroes/gotenks_ssj3-portrait.webp",
      "artSrc": "assets/buu-heroes/gotenks_ssj3-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1011061",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1011060/card_1011060_character.png",
      "cardId": "1011060",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    }
  }
}
