{
  "gohan": {
    "src": "assets/recruit-gohan-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          159,
          223
        ],
        [
          241,
          6,
          120,
          223
        ]
      ],
      "attack": [
        [
          476,
          6,
          165,
          223
        ],
        [
          711,
          6,
          179,
          223
        ],
        [
          6,
          241,
          191,
          223
        ]
      ],
      "special": [
        [
          241,
          241,
          170,
          223
        ],
        [
          476,
          241,
          223,
          223
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          124.59,
          223
        ],
        [
          30.33,
          223
        ]
      ],
      "attack": [
        [
          56.76,
          223
        ],
        [
          5.42,
          223
        ],
        [
          19.19,
          223
        ]
      ],
      "special": [
        [
          111.0,
          223
        ],
        [
          157.45,
          223
        ]
      ]
    },
    "bodyHeight": 223,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20179",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\gohan\\idle\\0.png",
          "size": [
            159,
            223
          ],
          "rotated": 1,
          "source": "gohan\\idle\\idle_character_00007.lwf",
          "sourceTexture": "gohan\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            225,
            80
          ],
          "logicalTrimOffset": [
            180,
            149
          ],
          "textureLogicalSize": [
            256,
            512
          ],
          "textureActualSize": [
            256,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            159,
            223
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        },
        {
          "index": 1,
          "file": "extracted\\gohan\\idle\\1.png",
          "size": [
            140,
            260
          ],
          "rotated": 0,
          "source": "gohan\\idle\\idle_character_00007.lwf",
          "sourceTexture": "gohan\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            82,
            142,
            212
          ],
          "logicalTrimOffset": [
            192,
            124
          ],
          "textureLogicalSize": [
            256,
            512
          ],
          "textureActualSize": [
            256,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            140,
            260
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.8576923076923076,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\gohan\\battle\\0.png",
          "size": [
            94,
            127
          ],
          "rotated": 0,
          "source": "gohan\\battle\\battle_character_00007.lwf",
          "sourceTexture": "gohan\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            96,
            180,
            190,
            244
          ],
          "logicalTrimOffset": [
            200,
            187
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            94,
            127
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.7559055118110236,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        },
        {
          "index": 31,
          "file": "extracted\\gohan\\battle\\31.png",
          "size": [
            101,
            126
          ],
          "rotated": 1,
          "source": "gohan\\battle\\battle_character_00007.lwf",
          "sourceTexture": "gohan\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            288,
            180,
            414,
            231
          ],
          "logicalTrimOffset": [
            206,
            190
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            101,
            126
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.7698412698412698,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        },
        {
          "index": 1,
          "file": "extracted\\gohan\\battle\\1.png",
          "size": [
            109,
            127
          ],
          "rotated": 0,
          "source": "gohan\\battle\\battle_character_00007.lwf",
          "sourceTexture": "gohan\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            424,
            111,
            488
          ],
          "logicalTrimOffset": [
            202,
            187
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            109,
            127
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.7559055118110236,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\gohan\\sp01\\2.png",
          "size": [
            93,
            122
          ],
          "rotated": 1,
          "source": "gohan\\sp01\\sp_character_00007_01.lwf",
          "sourceTexture": "gohan\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            387,
            1,
            509,
            48
          ],
          "logicalTrimOffset": [
            199,
            196
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            93,
            122
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.8278688524590163,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        },
        {
          "index": 0,
          "file": "extracted\\gohan\\sp01\\0.png",
          "size": [
            383,
            383
          ],
          "rotated": 0,
          "source": "gohan\\sp01\\sp_character_00007_01.lwf",
          "sourceTexture": "gohan\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            385,
            192
          ],
          "logicalTrimOffset": [
            545,
            568
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            383,
            383
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.5822454308093995,
          "sourceArchiveFolder": "Gohan/Kid Gohan Long Hair"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "piccolo": {
    "src": "assets/recruit-piccolo-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          253,
          287
        ],
        [
          379,
          6,
          160,
          287
        ]
      ],
      "attack": [
        [
          752,
          6,
          255,
          287
        ],
        [
          1125,
          6,
          325,
          287
        ],
        [
          6,
          305,
          361,
          287
        ]
      ],
      "special": [
        [
          379,
          305,
          261,
          287
        ],
        [
          752,
          305,
          337,
          287
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          187.6,
          287
        ],
        [
          87.78,
          287
        ]
      ],
      "attack": [
        [
          14.2,
          287
        ],
        [
          8.15,
          287
        ],
        [
          14.4,
          287
        ]
      ],
      "special": [
        [
          17.0,
          287
        ],
        [
          13.26,
          287
        ]
      ]
    },
    "bodyHeight": 287,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20125",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\piccolo\\idle\\0.png",
          "size": [
            253,
            287
          ],
          "rotated": 1,
          "source": "piccolo\\idle\\idle_character_00056.lwf",
          "sourceTexture": "piccolo\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            222,
            1,
            509,
            128
          ],
          "logicalTrimOffset": [
            138,
            129
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            253,
            287
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        },
        {
          "index": 1,
          "file": "extracted\\piccolo\\idle\\1.png",
          "size": [
            218,
            391
          ],
          "rotated": 0,
          "source": "piccolo\\idle\\idle_character_00056.lwf",
          "sourceTexture": "piccolo\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            220,
            196
          ],
          "logicalTrimOffset": [
            159,
            84
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            218,
            391
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.7340153452685422,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\piccolo\\battle\\0.png",
          "size": [
            201,
            226
          ],
          "rotated": 1,
          "source": "piccolo\\battle\\battle_character_00056.lwf",
          "sourceTexture": "piccolo\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            372,
            409,
            598,
            510
          ],
          "logicalTrimOffset": [
            142,
            148
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            201,
            226
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.2699115044247788,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        },
        {
          "index": 31,
          "file": "extracted\\piccolo\\battle\\31.png",
          "size": [
            257,
            227
          ],
          "rotated": 1,
          "source": "piccolo\\battle\\battle_character_00056.lwf",
          "sourceTexture": "piccolo\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            112,
            229,
            240
          ],
          "logicalTrimOffset": [
            142,
            149
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            257,
            227
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.2643171806167401,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        },
        {
          "index": 1,
          "file": "extracted\\piccolo\\battle\\1.png",
          "size": [
            277,
            220
          ],
          "rotated": 1,
          "source": "piccolo\\battle\\battle_character_00056.lwf",
          "sourceTexture": "piccolo\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            262,
            222,
            400
          ],
          "logicalTrimOffset": [
            142,
            156
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            277,
            220
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.3045454545454545,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\piccolo\\sp01\\2.png",
          "size": [
            204,
            224
          ],
          "rotated": 0,
          "source": "piccolo\\sp01\\sp_character_00056_01.lwf",
          "sourceTexture": "piccolo\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            783,
            217,
            987,
            329
          ],
          "logicalTrimOffset": [
            164,
            151
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            204,
            224
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.28125,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        },
        {
          "index": 0,
          "file": "extracted\\piccolo\\sp01\\0.png",
          "size": [
            779,
            663
          ],
          "rotated": 0,
          "source": "piccolo\\sp01\\sp_character_00056_01.lwf",
          "sourceTexture": "piccolo\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            781,
            332
          ],
          "logicalTrimOffset": [
            399,
            445
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            779,
            663
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.43288084464555054,
          "sourceArchiveFolder": "Piccolo/Piccolo"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "krillin": {
    "src": "assets/recruit-krillin-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          169,
          246
        ],
        [
          266,
          6,
          141,
          246
        ]
      ],
      "attack": [
        [
          526,
          6,
          173,
          246
        ],
        [
          786,
          6,
          248,
          246
        ],
        [
          6,
          264,
          244,
          246
        ]
      ],
      "special": [
        [
          266,
          264,
          156,
          246
        ],
        [
          526,
          264,
          202,
          246
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          152.11,
          246
        ],
        [
          82.25,
          246
        ]
      ],
      "attack": [
        [
          6.2,
          246
        ],
        [
          45.17,
          246
        ],
        [
          27.8,
          246
        ]
      ],
      "special": [
        [
          7.17,
          246
        ],
        [
          7.27,
          246
        ]
      ]
    },
    "bodyHeight": 246,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20141",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\krillin\\idle\\0.png",
          "size": [
            169,
            246
          ],
          "rotated": 1,
          "source": "krillin\\idle\\idle_character_00009.lwf",
          "sourceTexture": "krillin\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            248,
            86
          ],
          "logicalTrimOffset": [
            176,
            135
          ],
          "textureLogicalSize": [
            256,
            512
          ],
          "textureActualSize": [
            256,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            169,
            246
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Krillin/Krillin"
        },
        {
          "index": 1,
          "file": "extracted\\krillin\\idle\\1.png",
          "size": [
            151,
            263
          ],
          "rotated": 0,
          "source": "krillin\\idle\\idle_character_00009.lwf",
          "sourceTexture": "krillin\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            86,
            153,
            218
          ],
          "logicalTrimOffset": [
            186,
            126
          ],
          "textureLogicalSize": [
            256,
            512
          ],
          "textureActualSize": [
            256,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            151,
            263
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.935361216730038,
          "sourceArchiveFolder": "Krillin/Krillin"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\krillin\\battle\\0.png",
          "size": [
            107,
            152
          ],
          "rotated": 1,
          "source": "krillin\\battle\\battle_character_00009.lwf",
          "sourceTexture": "krillin\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            741,
            296,
            893,
            349
          ],
          "logicalTrimOffset": [
            203,
            181
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            107,
            152
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.618421052631579,
          "sourceArchiveFolder": "Krillin/Krillin"
        },
        {
          "index": 31,
          "file": "extracted\\krillin\\battle\\31.png",
          "size": [
            148,
            147
          ],
          "rotated": 1,
          "source": "krillin\\battle\\battle_character_00009.lwf",
          "sourceTexture": "krillin\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            405,
            226,
            552,
            300
          ],
          "logicalTrimOffset": [
            201,
            180
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            148,
            147
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.6734693877551021,
          "sourceArchiveFolder": "Krillin/Krillin"
        },
        {
          "index": 1,
          "file": "extracted\\krillin\\battle\\1.png",
          "size": [
            146,
            147
          ],
          "rotated": 0,
          "source": "krillin\\battle\\battle_character_00009.lwf",
          "sourceTexture": "krillin\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            554,
            226,
            700,
            300
          ],
          "logicalTrimOffset": [
            201,
            180
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            146,
            147
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.6734693877551021,
          "sourceArchiveFolder": "Krillin/Krillin"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\krillin\\sp01\\2.png",
          "size": [
            105,
            166
          ],
          "rotated": 0,
          "source": "krillin\\sp01\\sp_character_00009_01.lwf",
          "sourceTexture": "krillin\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            375,
            272,
            480,
            355
          ],
          "logicalTrimOffset": [
            200,
            160
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            105,
            166
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.4819277108433735,
          "sourceArchiveFolder": "Krillin/Krillin"
        },
        {
          "index": 0,
          "file": "extracted\\krillin\\sp01\\0.png",
          "size": [
            336,
            409
          ],
          "rotated": 0,
          "source": "krillin\\sp01\\sp_character_00009_01.lwf",
          "sourceTexture": "krillin\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            338,
            206
          ],
          "logicalTrimOffset": [
            605,
            565
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            336,
            409
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.6014669926650367,
          "sourceArchiveFolder": "Krillin/Krillin"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "tien": {
    "src": "assets/recruit-tien-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          242,
          358
        ],
        [
          413,
          6,
          180,
          358
        ]
      ],
      "attack": [
        [
          820,
          6,
          363,
          358
        ],
        [
          1227,
          6,
          395,
          358
        ],
        [
          6,
          376,
          374,
          358
        ]
      ],
      "special": [
        [
          413,
          376,
          139,
          358
        ],
        [
          820,
          376,
          138,
          358
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          218.96,
          358
        ],
        [
          33.74,
          358
        ]
      ],
      "attack": [
        [
          96.99,
          358
        ],
        [
          30.04,
          358
        ],
        [
          7.1,
          358
        ]
      ],
      "special": [
        [
          13.35,
          358
        ],
        [
          11.5,
          358
        ]
      ]
    },
    "bodyHeight": 358,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20144",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\tien\\idle\\0.png",
          "size": [
            289,
            377
          ],
          "rotated": 0,
          "source": "tien\\idle\\idle_character_00011.lwf",
          "sourceTexture": "tien\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            199,
            1,
            488,
            190
          ],
          "logicalTrimOffset": [
            113,
            60
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            47,
            19,
            289,
            377
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Tien/Tien"
        },
        {
          "index": 1,
          "file": "extracted\\tien\\idle\\1.png",
          "size": [
            195,
            388
          ],
          "rotated": 0,
          "source": "tien\\idle\\idle_character_00011.lwf",
          "sourceTexture": "tien\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            197,
            195
          ],
          "logicalTrimOffset": [
            187,
            65
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            195,
            388
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.9226804123711341,
          "sourceArchiveFolder": "Tien/Tien"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\tien\\battle\\0.png",
          "size": [
            207,
            204
          ],
          "rotated": 1,
          "source": "tien\\battle\\battle_character_00011.lwf",
          "sourceTexture": "tien\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            771,
            395,
            975,
            498
          ],
          "logicalTrimOffset": [
            123,
            159
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            207,
            204
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.7549019607843137,
          "sourceArchiveFolder": "Tien/Tien"
        },
        {
          "index": 31,
          "file": "extracted\\tien\\battle\\31.png",
          "size": [
            213,
            193
          ],
          "rotated": 0,
          "source": "tien\\battle\\battle_character_00011.lwf",
          "sourceTexture": "tien\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            726,
            298,
            939,
            394
          ],
          "logicalTrimOffset": [
            142,
            166
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            213,
            193
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.854922279792746,
          "sourceArchiveFolder": "Tien/Tien"
        },
        {
          "index": 1,
          "file": "extracted\\tien\\battle\\1.png",
          "size": [
            231,
            221
          ],
          "rotated": 1,
          "source": "tien\\battle\\battle_character_00011.lwf",
          "sourceTexture": "tien\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            345,
            223,
            460
          ],
          "logicalTrimOffset": [
            140,
            158
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            231,
            221
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.6199095022624435,
          "sourceArchiveFolder": "Tien/Tien"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\tien\\sp01\\2.png",
          "size": [
            109,
            280
          ],
          "rotated": 0,
          "source": "tien\\sp01\\sp_character_00011_01.lwf",
          "sourceTexture": "tien\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            864,
            293,
            973,
            433
          ],
          "logicalTrimOffset": [
            184,
            157
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            109,
            280
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.2785714285714285,
          "sourceArchiveFolder": "Tien/Tien"
        },
        {
          "index": 0,
          "file": "extracted\\tien\\sp01\\0.png",
          "size": [
            322,
            838
          ],
          "rotated": 0,
          "source": "tien\\sp01\\sp_character_00011_01.lwf",
          "sourceTexture": "tien\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            324,
            420
          ],
          "logicalTrimOffset": [
            554,
            473
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            322,
            838
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.42720763723150357,
          "sourceArchiveFolder": "Tien/Tien"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "yamcha": {
    "src": "assets/recruit-yamcha-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          226,
          321
        ],
        [
          355,
          6,
          156,
          321
        ]
      ],
      "attack": [
        [
          704,
          6,
          317,
          321
        ],
        [
          1053,
          6,
          331,
          321
        ],
        [
          6,
          339,
          337,
          321
        ]
      ],
      "special": [
        [
          355,
          339,
          281,
          321
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          200.57,
          321
        ],
        [
          30.28,
          321
        ]
      ],
      "attack": [
        [
          225.54,
          321
        ],
        [
          9.62,
          321
        ],
        [
          7.59,
          321
        ]
      ],
      "special": [
        [
          11.06,
          321
        ]
      ]
    },
    "bodyHeight": 321,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20142",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\yamcha\\idle\\0.png",
          "size": [
            226,
            321
          ],
          "rotated": 0,
          "source": "yamcha\\idle\\idle_character_00013.lwf",
          "sourceTexture": "yamcha\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            193,
            1,
            419,
            162
          ],
          "logicalTrimOffset": [
            155,
            112
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            226,
            321
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        },
        {
          "index": 1,
          "file": "extracted\\yamcha\\idle\\1.png",
          "size": [
            189,
            390
          ],
          "rotated": 0,
          "source": "yamcha\\idle\\idle_character_00013.lwf",
          "sourceTexture": "yamcha\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            191,
            196
          ],
          "logicalTrimOffset": [
            186,
            87
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            189,
            390
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.823076923076923,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\yamcha\\battle\\0.png",
          "size": [
            225,
            228
          ],
          "rotated": 1,
          "source": "yamcha\\battle\\battle_character_00013.lwf",
          "sourceTexture": "yamcha\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            788,
            335,
            1016,
            448
          ],
          "logicalTrimOffset": [
            123,
            147
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            225,
            228
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.4078947368421053,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        },
        {
          "index": 31,
          "file": "extracted\\yamcha\\battle\\31.png",
          "size": [
            227,
            220
          ],
          "rotated": 0,
          "source": "yamcha\\battle\\battle_character_00013.lwf",
          "sourceTexture": "yamcha\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            113,
            229,
            223
          ],
          "logicalTrimOffset": [
            137,
            146
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            227,
            220
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.459090909090909,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        },
        {
          "index": 1,
          "file": "extracted\\yamcha\\battle\\1.png",
          "size": [
            255,
            243
          ],
          "rotated": 1,
          "source": "yamcha\\battle\\battle_character_00013.lwf",
          "sourceTexture": "yamcha\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            169,
            1,
            412,
            128
          ],
          "logicalTrimOffset": [
            132,
            146
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            255,
            243
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.3209876543209877,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        }
      ],
      "special": [
        {
          "index": 1,
          "file": "extracted\\yamcha\\sp01\\1.png",
          "size": [
            689,
            788
          ],
          "rotated": 0,
          "source": "yamcha\\sp01\\sp_character_00013_01.lwf",
          "sourceTexture": "yamcha\\sp01\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            1,
            691,
            395
          ],
          "logicalTrimOffset": [
            328,
            362
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            689,
            788
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.4073604060913706,
          "sourceArchiveFolder": "Yamcha/Yamcha Long Hair"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames. Special uses original Wolf Fang attack pose; wolf projectile effect is not included in the character atlas."
  },
  "chiaotzu": {
    "src": "assets/recruit-chiaotzu-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          102,
          170
        ],
        [
          182,
          6,
          112,
          170
        ]
      ],
      "attack": [
        [
          358,
          6,
          94,
          170
        ],
        [
          534,
          6,
          157,
          170
        ],
        [
          6,
          188,
          131,
          170
        ]
      ],
      "special": [
        [
          182,
          188,
          127,
          170
        ],
        [
          358,
          188,
          164,
          170
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          87.67,
          170
        ],
        [
          84.35,
          170
        ]
      ],
      "attack": [
        [
          79.41,
          170
        ],
        [
          98.55,
          170
        ],
        [
          83.55,
          170
        ]
      ],
      "special": [
        [
          26.64,
          170
        ],
        [
          81.98,
          170
        ]
      ]
    },
    "bodyHeight": 170,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20143",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\chiaotzu\\idle\\0.png",
          "size": [
            102,
            170
          ],
          "rotated": 0,
          "source": "chiaotzu\\idle\\idle_character_00012.lwf",
          "sourceTexture": "chiaotzu\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            131,
            1,
            233,
            86
          ],
          "logicalTrimOffset": [
            201,
            153
          ],
          "textureLogicalSize": [
            256,
            256
          ],
          "textureActualSize": [
            256,
            128
          ],
          "alphaTrimBox": [
            0,
            0,
            102,
            170
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Chaotsu"
        },
        {
          "index": 1,
          "file": "extracted\\chiaotzu\\idle\\1.png",
          "size": [
            127,
            192
          ],
          "rotated": 0,
          "source": "chiaotzu\\idle\\idle_character_00012.lwf",
          "sourceTexture": "chiaotzu\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            129,
            97
          ],
          "logicalTrimOffset": [
            187,
            145
          ],
          "textureLogicalSize": [
            256,
            256
          ],
          "textureActualSize": [
            256,
            128
          ],
          "alphaTrimBox": [
            0,
            0,
            127,
            192
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.8854166666666666,
          "sourceArchiveFolder": "Chaotsu"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\chiaotzu\\battle\\0.png",
          "size": [
            70,
            126
          ],
          "rotated": 1,
          "source": "chiaotzu\\battle\\battle_character_00012.lwf",
          "sourceTexture": "chiaotzu\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            465,
            163,
            591,
            198
          ],
          "logicalTrimOffset": [
            217,
            179
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            70,
            126
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.3492063492063493,
          "sourceArchiveFolder": "Chaotsu"
        },
        {
          "index": 31,
          "file": "extracted\\chiaotzu\\battle\\31.png",
          "size": [
            111,
            120
          ],
          "rotated": 0,
          "source": "chiaotzu\\battle\\battle_character_00012.lwf",
          "sourceTexture": "chiaotzu\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            593,
            202,
            704,
            262
          ],
          "logicalTrimOffset": [
            198,
            180
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            111,
            120
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.4166666666666667,
          "sourceArchiveFolder": "Chaotsu"
        },
        {
          "index": 1,
          "file": "extracted\\chiaotzu\\battle\\1.png",
          "size": [
            101,
            131
          ],
          "rotated": 1,
          "source": "chiaotzu\\battle\\battle_character_00012.lwf",
          "sourceTexture": "chiaotzu\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            706,
            122,
            837,
            173
          ],
          "logicalTrimOffset": [
            208,
            179
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            101,
            131
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.297709923664122,
          "sourceArchiveFolder": "Chaotsu"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\chiaotzu\\sp01\\2.png",
          "size": [
            88,
            118
          ],
          "rotated": 1,
          "source": "chiaotzu\\sp01\\sp_character_00012_01.lwf",
          "sourceTexture": "chiaotzu\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            354,
            154,
            472,
            198
          ],
          "logicalTrimOffset": [
            210,
            187
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            88,
            118
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.4406779661016949,
          "sourceArchiveFolder": "Chaotsu"
        },
        {
          "index": 0,
          "file": "extracted\\chiaotzu\\sp01\\0.png",
          "size": [
            309,
            321
          ],
          "rotated": 1,
          "source": "chiaotzu\\sp01\\sp_character_00012_01.lwf",
          "sourceTexture": "chiaotzu\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            170,
            323,
            324
          ],
          "logicalTrimOffset": [
            613,
            592
          ],
          "textureLogicalSize": [
            512,
            1024
          ],
          "textureActualSize": [
            512,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            309,
            321
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.5295950155763239,
          "sourceArchiveFolder": "Chaotsu"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "roshi": {
    "src": "assets/recruit-roshi-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          131,
          149
        ]
      ],
      "attack": [
        [
          224,
          6,
          143,
          129
        ],
        [
          442,
          6,
          166,
          150
        ],
        [
          6,
          174,
          131,
          149
        ]
      ],
      "special": [
        [
          224,
          174,
          206,
          156
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          7.711111111111111,
          149
        ]
      ],
      "attack": [
        [
          94.36363636363636,
          129
        ],
        [
          6.411764705882353,
          150
        ],
        [
          7.711111111111111,
          149
        ]
      ],
      "special": [
        [
          9.384615384615385,
          156
        ]
      ]
    },
    "bodyHeight": 149,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20471",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "vegeta": {
    "src": "assets/recruit-vegeta-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          137,
          256
        ]
      ],
      "attack": [
        [
          217,
          6,
          127,
          249
        ],
        [
          428,
          6,
          199,
          245
        ],
        [
          639,
          6,
          183,
          230
        ],
        [
          6,
          274,
          137,
          256
        ]
      ],
      "special": [
        [
          217,
          274,
          171,
          256
        ],
        [
          428,
          274,
          185,
          256
        ],
        [
          639,
          274,
          171,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          68.5,
          256
        ]
      ],
      "attack": [
        [
          63.5,
          249
        ],
        [
          99.5,
          245
        ],
        [
          91.5,
          230
        ],
        [
          68.5,
          256
        ]
      ],
      "special": [
        [
          85.5,
          256
        ],
        [
          92.5,
          256
        ],
        [
          85.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20124",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right. Saiyan Saga Scouter armor, shoulder pads and tail; no Super Saiyan/Super costume.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "vegeta\\Vegeta Scouter\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            496,
            76,
            721,
            136
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.1377777777777778
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "vegeta\\Vegeta Scouter\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            496,
            252,
            715,
            308
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "vegeta\\Vegeta Scouter\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            440,
            60,
            655,
            148
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "vegeta\\Vegeta Scouter\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            262,
            204,
            342
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "vegeta\\Vegeta Scouter\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            496,
            76,
            721,
            136
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.1377777777777778
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "vegeta\\Vegeta Scouter\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            147,
            110
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.1797235023041475
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "vegeta\\Vegeta Scouter\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            502,
            347
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3699421965317919
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "vegeta\\Vegeta Scouter\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            147,
            110
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.1797235023041475
        }
      ]
    },
    "style": "dokkan"
  },
  "oozaru": {
    "src": "assets/recruit-oozaru-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          251,
          256
        ]
      ],
      "attack": [
        [
          283,
          6,
          260,
          243
        ],
        [
          560,
          6,
          265,
          245
        ],
        [
          837,
          6,
          260,
          243
        ],
        [
          6,
          274,
          251,
          256
        ]
      ],
      "special": [
        [
          283,
          274,
          251,
          256
        ],
        [
          560,
          274,
          222,
          256
        ],
        [
          837,
          274,
          251,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          125.5,
          256
        ]
      ],
      "attack": [
        [
          130.0,
          243
        ],
        [
          132.5,
          245
        ],
        [
          130.0,
          243
        ],
        [
          125.5,
          256
        ]
      ],
      "special": [
        [
          125.5,
          256
        ],
        [
          111.0,
          256
        ],
        [
          125.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://dbz-dokkanbattle.com/card/4023521",
    "credits": "Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki; public battle texture archive dbz-dokkanbattle.com",
    "gameCharacterId": "01233",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Vegeta Great Ape, Saiyan armor with shoulder pads, tail, white boots and gloves. Complete original full-body battle poses; no card art. Native LWF texture rectangles, filename mapping and rotation restored. Representative frontal guard, right-facing punch and charged mouth attack; selected poses do not reproduce the whole source animation timeline. Source card is actual transformed Great Ape Vegeta, not GT or Nappa.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 48,
          "source": "battle\\lwf_image5.png",
          "sourceRectPixels": [
            486,
            1,
            952,
            229
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.5493562231759657
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 27,
          "source": "battle\\lwf_image6.png",
          "sourceRectPixels": [
            478,
            1,
            952,
            222
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.5493562231759657
        },
        {
          "kind": "attack",
          "fragment": 29,
          "source": "battle\\lwf_image5.png",
          "sourceRectPixels": [
            2,
            1,
            484,
            224
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.5493562231759657
        },
        {
          "kind": "attack",
          "fragment": 27,
          "source": "battle\\lwf_image6.png",
          "sourceRectPixels": [
            478,
            1,
            952,
            222
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.5493562231759657
        },
        {
          "kind": "attack",
          "fragment": 48,
          "source": "battle\\lwf_image5.png",
          "sourceRectPixels": [
            486,
            1,
            952,
            229
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.5493562231759657
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 1,
          "source": "sp01\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            230,
            468,
            458
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.5493562231759657
        },
        {
          "kind": "special",
          "fragment": 0,
          "source": "sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            870,
            502
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.2554890219560878
        },
        {
          "kind": "special",
          "fragment": 1,
          "source": "sp01\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            230,
            468,
            458
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.5493562231759657
        }
      ]
    },
    "style": "dokkan",
    "frameFaces": {
      "idle": [
        "left"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "left"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "emissionPoints": {
      "special": [
        [
          146,
          86
        ],
        [
          151,
          101
        ],
        [
          146,
          86
        ]
      ]
    },
    "specialReleaseFrame": 1,
    "emissionNotes": "Local source-frame pixel coordinates measured on the current atlas: Nappa raised fingertips / Oozaru mouth. Release holds special frame 1. Drawing and emission share scaling, anchor, per-frame facing and movement."
  },
  "nappa": {
    "src": "assets/recruit-nappa-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          240,
          256
        ]
      ],
      "attack": [
        [
          311,
          6,
          254,
          249
        ],
        [
          616,
          6,
          293,
          238
        ],
        [
          921,
          6,
          285,
          266
        ],
        [
          6,
          284,
          240,
          256
        ]
      ],
      "special": [
        [
          311,
          284,
          223,
          256
        ],
        [
          616,
          284,
          154,
          256
        ],
        [
          921,
          284,
          223,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          120.0,
          256
        ]
      ],
      "attack": [
        [
          127.0,
          249
        ],
        [
          146.5,
          238
        ],
        [
          142.5,
          266
        ],
        [
          120.0,
          256
        ]
      ],
      "special": [
        [
          111.5,
          256
        ],
        [
          77.0,
          256
        ],
        [
          111.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20149",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "nappa\\Nappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            384,
            240,
            510
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0078740157480315
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "nappa\\Nappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            482,
            384,
            729,
            510
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0078740157480315
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "nappa\\Nappa\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            288,
            284,
            579,
            402
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0078740157480315
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "nappa\\Nappa\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            753,
            1,
            1017,
            142
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0078740157480315
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "nappa\\Nappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            384,
            240,
            510
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0078740157480315
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "nappa\\Nappa\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            552,
            368,
            781,
            499
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.973384030418251
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "nappa\\Nappa\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            550,
            457
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.2807017543859649
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "nappa\\Nappa\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            552,
            368,
            781,
            499
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.973384030418251
        }
      ]
    },
    "style": "dokkan",
    "emissionPoints": {
      "special": [
        [
          174,
          95
        ],
        [
          114,
          5
        ],
        [
          174,
          95
        ]
      ]
    },
    "specialReleaseFrame": 1,
    "emissionNotes": "Local source-frame pixel coordinates measured on the current atlas: Nappa raised fingertips / Oozaru mouth. Release holds special frame 1. Drawing and emission share scaling, anchor, per-frame facing and movement."
  },
  "raditz": {
    "src": "assets/recruit-raditz-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          190,
          256
        ]
      ],
      "attack": [
        [
          270,
          6,
          216,
          219
        ],
        [
          534,
          6,
          204,
          268
        ],
        [
          798,
          6,
          232,
          232
        ],
        [
          6,
          286,
          190,
          256
        ]
      ],
      "special": [
        [
          270,
          286,
          134,
          256
        ],
        [
          534,
          286,
          252,
          256
        ],
        [
          798,
          286,
          134,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          95.0,
          256
        ]
      ],
      "attack": [
        [
          108.0,
          219
        ],
        [
          102.0,
          268
        ],
        [
          116.0,
          232
        ],
        [
          95.0,
          256
        ]
      ],
      "special": [
        [
          67.0,
          256
        ],
        [
          126.0,
          256
        ],
        [
          67.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20148",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "raditz\\Raditz\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            747,
            96,
            983,
            184
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0847457627118644
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "raditz\\Raditz\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            414,
            410,
            613,
            510
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0847457627118644
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "raditz\\Raditz\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            747,
            1,
            994,
            95
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0847457627118644
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "raditz\\Raditz\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            292,
            216,
            398
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0847457627118644
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "raditz\\Raditz\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            747,
            96,
            983,
            184
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0847457627118644
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "raditz\\Raditz\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            504,
            350,
            662,
            501
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.847682119205298
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "raditz\\Raditz\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            688,
            349
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.367816091954023
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "raditz\\Raditz\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            504,
            350,
            662,
            501
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.847682119205298
        }
      ]
    },
    "style": "dokkan"
  },
  "saibaman": {
    "src": "assets/recruit-saibaman-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          274,
          256
        ]
      ],
      "attack": [
        [
          328,
          6,
          310,
          260
        ],
        [
          650,
          6,
          189,
          258
        ],
        [
          972,
          6,
          265,
          272
        ],
        [
          6,
          290,
          274,
          256
        ]
      ],
      "special": [
        [
          328,
          290,
          276,
          256
        ],
        [
          650,
          290,
          249,
          256
        ],
        [
          972,
          290,
          276,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          137.0,
          256
        ]
      ],
      "attack": [
        [
          155.0,
          260
        ],
        [
          94.5,
          258
        ],
        [
          132.5,
          272
        ],
        [
          137.0,
          256
        ]
      ],
      "special": [
        [
          138.0,
          256
        ],
        [
          124.5,
          256
        ],
        [
          138.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20472",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "saibaman\\Saibaman\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            374,
            405,
            496,
            462
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.245614035087719
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "saibaman\\Saibaman\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            96,
            404,
            234,
            462
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.245614035087719
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "saibaman\\Saibaman\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            897,
            367,
            981,
            424
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.245614035087719
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "saibaman\\Saibaman\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            403,
            344,
            521,
            404
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.245614035087719
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "saibaman\\Saibaman\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            374,
            405,
            496,
            462
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.245614035087719
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "saibaman\\Saibaman\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            298,
            127,
            356
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.206896551724138
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "saibaman\\Saibaman\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            150,
            305,
            297
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.8448844884488449
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "saibaman\\Saibaman\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            298,
            127,
            356
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 2.206896551724138
        }
      ]
    },
    "style": "dokkan"
  },
  "soldier": {
    "src": "assets/recruit-soldier-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          164,
          256
        ]
      ],
      "attack": [
        [
          304,
          6,
          216,
          225
        ],
        [
          602,
          6,
          286,
          245
        ],
        [
          900,
          6,
          243,
          252
        ],
        [
          6,
          274,
          164,
          256
        ]
      ],
      "special": [
        [
          304,
          274,
          246,
          256
        ],
        [
          602,
          274,
          246,
          256
        ],
        [
          900,
          274,
          246,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          82.0,
          256
        ]
      ],
      "attack": [
        [
          108.0,
          225
        ],
        [
          143.0,
          245
        ],
        [
          121.5,
          252
        ],
        [
          82.0,
          256
        ]
      ],
      "special": [
        [
          123.0,
          256
        ],
        [
          123.0,
          256
        ],
        [
          123.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20544",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "soldier\\Red Ribon Soldier\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            385,
            117,
            474
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4301675977653632
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "soldier\\Red Ribon Soldier\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            568,
            353,
            719,
            432
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4301675977653632
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "soldier\\Red Ribon Soldier\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            293,
            194,
            493,
            279
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4301675977653632
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "soldier\\Red Ribon Soldier\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            559,
            282,
            729,
            370
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4301675977653632
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "soldier\\Red Ribon Soldier\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            385,
            117,
            474
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4301675977653632
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "soldier\\Red Ribon Soldier\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            184,
            265,
            353,
            353
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4545454545454546
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "soldier\\Red Ribon Soldier\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            508,
            264
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.4866920152091255
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "soldier\\Red Ribon Soldier\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            184,
            265,
            353,
            353
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.4545454545454546
        }
      ]
    },
    "style": "dokkan"
  },
  "goku": {
    "src": "assets/recruit-goku-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          259,
          377
        ],
        [
          423,
          6,
          180,
          377
        ]
      ],
      "attack": [
        [
          840,
          6,
          336,
          377
        ],
        [
          1257,
          6,
          405,
          377
        ],
        [
          6,
          395,
          392,
          377
        ]
      ],
      "special": [
        [
          423,
          395,
          379,
          377
        ],
        [
          840,
          395,
          363,
          377
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          229.93,
          377
        ],
        [
          83.63,
          377
        ]
      ],
      "attack": [
        [
          79.48,
          377
        ],
        [
          15.69,
          377
        ],
        [
          14.22,
          377
        ]
      ],
      "special": [
        [
          22.03,
          377
        ],
        [
          13.61,
          377
        ]
      ]
    },
    "bodyHeight": 377,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20123",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "sourceFrames": {
      "idle": [
        {
          "index": 0,
          "file": "extracted\\goku\\idle\\0.png",
          "size": [
            259,
            377
          ],
          "rotated": 0,
          "source": "goku\\idle\\idle_character_00003.lwf",
          "sourceTexture": "goku\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            191,
            1,
            450,
            190
          ],
          "logicalTrimOffset": [
            133,
            77
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            259,
            377
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.0,
          "sourceArchiveFolder": "Goku Normal"
        },
        {
          "index": 1,
          "file": "extracted\\goku\\idle\\1.png",
          "size": [
            187,
            391
          ],
          "rotated": 0,
          "source": "goku\\idle\\idle_character_00003.lwf",
          "sourceTexture": "goku\\idle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            189,
            196
          ],
          "logicalTrimOffset": [
            167,
            64
          ],
          "textureLogicalSize": [
            512,
            512
          ],
          "textureActualSize": [
            512,
            256
          ],
          "alphaTrimBox": [
            0,
            0,
            187,
            391
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.9641943734015346,
          "sourceArchiveFolder": "Goku Normal"
        }
      ],
      "attack": [
        {
          "index": 0,
          "file": "extracted\\goku\\battle\\0.png",
          "size": [
            182,
            204
          ],
          "rotated": 0,
          "source": "goku\\battle\\battle_character_00003.lwf",
          "sourceTexture": "goku\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            622,
            106,
            804,
            208
          ],
          "logicalTrimOffset": [
            141,
            160
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            182,
            204
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.8480392156862746,
          "sourceArchiveFolder": "Goku Normal"
        },
        {
          "index": 31,
          "file": "extracted\\goku\\battle\\31.png",
          "size": [
            215,
            200
          ],
          "rotated": 0,
          "source": "goku\\battle\\battle_character_00003.lwf",
          "sourceTexture": "goku\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            393,
            217,
            493
          ],
          "logicalTrimOffset": [
            143,
            158
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            215,
            200
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.885,
          "sourceArchiveFolder": "Goku Normal"
        },
        {
          "index": 1,
          "file": "extracted\\goku\\battle\\1.png",
          "size": [
            216,
            208
          ],
          "rotated": 0,
          "source": "goku\\battle\\battle_character_00003.lwf",
          "sourceTexture": "goku\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            188,
            218,
            292
          ],
          "logicalTrimOffset": [
            149,
            163
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            216,
            208
          ],
          "normalizedFlip": false,
          "normalizedScale": 1.8125,
          "sourceArchiveFolder": "Goku Normal"
        }
      ],
      "special": [
        {
          "index": 2,
          "file": "extracted\\goku\\sp01\\2.png",
          "size": [
            178,
            177
          ],
          "rotated": 0,
          "source": "goku\\sp01\\sp_character_00003_01.lwf",
          "sourceTexture": "goku\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            803,
            185,
            981,
            274
          ],
          "logicalTrimOffset": [
            156,
            178
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            178,
            177
          ],
          "normalizedFlip": false,
          "normalizedScale": 2.1299435028248586,
          "sourceArchiveFolder": "Goku Normal"
        },
        {
          "index": 0,
          "file": "extracted\\goku\\sp01\\0.png",
          "size": [
            426,
            443
          ],
          "rotated": 0,
          "source": "goku\\sp01\\sp_character_00003_01.lwf",
          "sourceTexture": "goku\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            428,
            222
          ],
          "logicalTrimOffset": [
            545,
            556
          ],
          "textureLogicalSize": [
            1024,
            1024
          ],
          "textureActualSize": [
            1024,
            512
          ],
          "alphaTrimBox": [
            0,
            0,
            426,
            443
          ],
          "normalizedFlip": false,
          "normalizedScale": 0.8510158013544018,
          "sourceArchiveFolder": "Goku Normal"
        }
      ]
    },
    "note": "Actual base-character Dokkan Battle LWF sprite fragments. Texture rotation, filename mapping and logical aspect ratio reconstructed from original LWF metadata. Pose heights normalized uniformly to idle height to compensate different source bitmap scales; original rectangles and scaling retained in sourceFrames."
  },
  "bora": {
    "src": "assets/recruit-bora-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          81,
          119
        ],
        [
          133,
          6,
          81,
          117
        ],
        [
          260,
          6,
          81,
          116
        ],
        [
          387,
          6,
          81,
          117
        ]
      ],
      "attack": [
        [
          514,
          6,
          99,
          116
        ],
        [
          641,
          6,
          115,
          119
        ],
        [
          768,
          6,
          102,
          118
        ]
      ],
      "special": [
        [
          895,
          6,
          83,
          101
        ],
        [
          6,
          137,
          98,
          91
        ],
        [
          133,
          137,
          101,
          66
        ],
        [
          260,
          137,
          99,
          62
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          37,
          118
        ],
        [
          37,
          116
        ],
        [
          37,
          115
        ],
        [
          37,
          116
        ]
      ],
      "attack": [
        [
          39,
          115
        ],
        [
          40,
          118
        ],
        [
          39,
          117
        ]
      ],
      "special": [
        [
          41,
          100
        ],
        [
          28,
          92
        ],
        [
          20,
          65
        ],
        [
          20,
          61
        ]
      ]
    },
    "bodyHeight": 119,
    "faces": "right",
    "source": "https://mugenfreeforall.com/topic/48443-noise-factory-edited-collection/page/3/",
    "credits": "DrP (Bora sprite edit); original pixel base White / Noise Factory",
    "notes": "Real MUGEN full-body pixel sprites. Authored Bora edit of White, source definition dated 16/11/2022. Extracted static SFFv1 PCX data; idle, attack and special sequences follow AIR actions 0, 200, 1000. Larger pixel density and different source than Advanced Adventure; not a claim of same-game coherence. No generated or newly repainted poses. No MUGEN software or executable run.",
    "frameDurations": {
      "idle": [
        150.0,
        150.0,
        150.0,
        150.0
      ],
      "attack": [
        33.333333333333336,
        50.0,
        33.333333333333336
      ],
      "special": [
        50.0,
        50.0,
        50.0,
        250.0
      ]
    },
    "nativeFrames": {
      "idle": [
        [
          45,
          0
        ],
        [
          45,
          1
        ],
        [
          45,
          2
        ],
        [
          45,
          3
        ]
      ],
      "attack": [
        [
          54,
          0
        ],
        [
          54,
          1
        ],
        [
          54,
          2
        ]
      ],
      "special": [
        [
          67,
          3
        ],
        [
          67,
          0
        ],
        [
          67,
          1
        ],
        [
          67,
          2
        ]
      ]
    },
    "style": "pixel"
  },
  "tao": {
    "src": "assets/recruit-tao-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          230,
          256
        ]
      ],
      "attack": [
        [
          376,
          6,
          228,
          275
        ],
        [
          746,
          6,
          289,
          263
        ],
        [
          1116,
          6,
          288,
          265
        ],
        [
          6,
          293,
          230,
          256
        ]
      ],
      "special": [
        [
          376,
          293,
          358,
          256
        ],
        [
          746,
          293,
          309,
          256
        ],
        [
          1116,
          293,
          358,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          115.0,
          256
        ]
      ],
      "attack": [
        [
          114.0,
          275
        ],
        [
          144.5,
          263
        ],
        [
          144.0,
          265
        ],
        [
          115.0,
          256
        ]
      ],
      "special": [
        [
          179.0,
          256
        ],
        [
          154.5,
          256
        ],
        [
          179.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20407",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            542,
            216,
            728,
            319
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            152,
            124,
            336,
            236
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            227,
            236,
            440,
            352
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            218,
            118,
            432,
            234
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            542,
            216,
            728,
            319
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            638,
            297,
            919,
            398
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.2736318407960199
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            844,
            350
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3672883787661406
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "tao\\Tao Pai Pai\\Tao Pai Pai\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            638,
            297,
            919,
            398
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.2736318407960199
        }
      ]
    },
    "style": "dokkan"
  },
  "blue": {
    "src": "assets/recruit-blue-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          81,
          256
        ]
      ],
      "attack": [
        [
          316,
          6,
          181,
          193
        ],
        [
          626,
          6,
          170,
          201
        ],
        [
          936,
          6,
          213,
          209
        ],
        [
          6,
          274,
          81,
          256
        ]
      ],
      "special": [
        [
          316,
          274,
          181,
          256
        ],
        [
          626,
          274,
          298,
          256
        ],
        [
          936,
          274,
          181,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          40.5,
          256
        ]
      ],
      "attack": [
        [
          90.5,
          193
        ],
        [
          85.0,
          201
        ],
        [
          106.5,
          209
        ],
        [
          40.5,
          256
        ]
      ],
      "special": [
        [
          90.5,
          256
        ],
        [
          149.0,
          256
        ],
        [
          90.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20357",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "blue\\General Blue\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            577,
            299,
            672,
            448
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.8561872909698997
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "blue\\General Blue\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            384,
            192,
            610,
            298
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.8561872909698997
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "blue\\General Blue\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            819,
            216,
            1018,
            334
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.8561872909698997
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "blue\\General Blue\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            1,
            251,
            123
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.8561872909698997
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "blue\\General Blue\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            577,
            299,
            672,
            448
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.8561872909698997
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "blue\\General Blue\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            799,
            238,
            958,
            350
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "blue\\General Blue\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            797,
            343
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3742690058479532
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "blue\\General Blue\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            799,
            238,
            958,
            350
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.1377777777777778
        }
      ]
    },
    "style": "dokkan"
  },
  "chappa": {
    "src": "assets/recruit-chappa-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          169,
          256
        ]
      ],
      "attack": [
        [
          288,
          6,
          217,
          219
        ],
        [
          570,
          6,
          224,
          266
        ],
        [
          852,
          6,
          253,
          252
        ],
        [
          6,
          284,
          169,
          256
        ]
      ],
      "special": [
        [
          288,
          284,
          208,
          256
        ],
        [
          570,
          284,
          270,
          256
        ],
        [
          852,
          284,
          208,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          84.5,
          256
        ]
      ],
      "attack": [
        [
          108.5,
          219
        ],
        [
          112.0,
          266
        ],
        [
          126.5,
          252
        ],
        [
          84.5,
          256
        ]
      ],
      "special": [
        [
          104.0,
          256
        ],
        [
          135.0,
          256
        ],
        [
          104.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20546",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "chappa\\Rey Chappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            246,
            286,
            487,
            365
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.062240663900415
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "chappa\\Rey Chappa\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            453,
            156,
            659,
            258
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.062240663900415
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "chappa\\Rey Chappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            762,
            1,
            1012,
            106
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.062240663900415
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "chappa\\Rey Chappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            736,
            298,
            974,
            416
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.062240663900415
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "chappa\\Rey Chappa\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            246,
            286,
            487,
            365
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.062240663900415
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "chappa\\Rey Chappa\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            738,
            314,
            981,
            412
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0534979423868314
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "chappa\\Rey Chappa\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            703,
            333
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3855421686746988
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "chappa\\Rey Chappa\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            738,
            314,
            981,
            412
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0534979423868314
        }
      ]
    },
    "style": "dokkan"
  },
  "tambourine": {
    "src": "assets/recruit-tambourine-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          176,
          256
        ]
      ],
      "attack": [
        [
          295,
          6,
          219,
          219
        ],
        [
          584,
          6,
          277,
          286
        ],
        [
          873,
          6,
          234,
          250
        ],
        [
          6,
          304,
          176,
          256
        ]
      ],
      "special": [
        [
          295,
          304,
          151,
          256
        ],
        [
          584,
          304,
          257,
          256
        ],
        [
          873,
          304,
          151,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          88.0,
          256
        ]
      ],
      "attack": [
        [
          109.5,
          219
        ],
        [
          138.5,
          286
        ],
        [
          117.0,
          250
        ],
        [
          88.0,
          256
        ]
      ],
      "special": [
        [
          75.5,
          256
        ],
        [
          128.5,
          256
        ],
        [
          75.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20476",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "tambourine\\Tambourine\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            407,
            263,
            496
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9808429118773946
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "tambourine\\Tambourine\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            792,
            376,
            1015,
            488
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9808429118773946
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "tambourine\\Tambourine\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            620,
            1,
            912,
            142
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9808429118773946
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "tambourine\\Tambourine\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            268,
            1,
            523,
            120
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9808429118773946
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "tambourine\\Tambourine\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            2,
            407,
            263,
            496
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9808429118773946
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "tambourine\\Tambourine\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            404,
            262,
            480
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9846153846153847
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "tambourine\\Tambourine\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            777,
            388
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3311772315653299
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "tambourine\\Tambourine\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            2,
            404,
            262,
            480
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 0.9846153846153847
        }
      ]
    },
    "style": "dokkan"
  },
  "drum": {
    "src": "assets/recruit-drum-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          211,
          256
        ]
      ],
      "attack": [
        [
          289,
          6,
          243,
          255
        ],
        [
          572,
          6,
          271,
          253
        ],
        [
          855,
          6,
          261,
          265
        ],
        [
          6,
          283,
          211,
          256
        ]
      ],
      "special": [
        [
          289,
          283,
          199,
          256
        ],
        [
          572,
          283,
          269,
          256
        ],
        [
          855,
          283,
          199,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          105.5,
          256
        ]
      ],
      "attack": [
        [
          121.5,
          255
        ],
        [
          135.5,
          253
        ],
        [
          130.5,
          265
        ],
        [
          105.5,
          256
        ]
      ],
      "special": [
        [
          99.5,
          256
        ],
        [
          134.5,
          256
        ],
        [
          99.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20355",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "drum\\Drum\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            480,
            383,
            672,
            500
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0987124463519313
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "drum\\Drum\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            727,
            242,
            959,
            352
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "drum\\Drum\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            251,
            1,
            498,
            116
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "drum\\Drum\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            498,
            117,
            739,
            236
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "drum\\Drum\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            480,
            383,
            672,
            500
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0987124463519313
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "drum\\Drum\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            819,
            258,
            1009,
            380
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0491803278688525
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "drum\\Drum\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            817,
            388
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.3303225806451613
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "drum\\Drum\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            819,
            258,
            1009,
            380
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 1.0491803278688525
        }
      ]
    },
    "style": "dokkan"
  },
  "king_piccolo": {
    "src": "assets/recruit-king_piccolo-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          153,
          256
        ]
      ],
      "attack": [
        [
          327,
          6,
          168,
          202
        ],
        [
          648,
          6,
          277,
          220
        ],
        [
          969,
          6,
          270,
          233
        ],
        [
          6,
          274,
          153,
          256
        ]
      ],
      "special": [
        [
          327,
          274,
          269,
          256
        ],
        [
          648,
          274,
          309,
          256
        ],
        [
          969,
          274,
          269,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          76.5,
          256
        ]
      ],
      "attack": [
        [
          84.0,
          202
        ],
        [
          138.5,
          220
        ],
        [
          135.0,
          233
        ],
        [
          76.5,
          256
        ]
      ],
      "special": [
        [
          134.5,
          256
        ],
        [
          154.5,
          256
        ],
        [
          134.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20185",
    "credits": "Brian318; Dragon Ball Z Dokkan Battle / Bandai Namco / Akatsuki",
    "game": "Dragon Ball Z Dokkan Battle",
    "notes": "Original full-body battle textures only; no card art or portraits. Front-facing neutral guard from battle texture; representative original punch and special poses, not a complete recreation of the source animation timeline. Exact LWF texture rectangles/rotation used. Atlas proportions restored from logical LWF texture dimensions and specials normalized to common body height. All selected attacking poses point right. Original young Demon King Piccolo (Piccolo Daimao Joven), not Piccolo Jr.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            264,
            156,
            393
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9961089494163424
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\battle\\lwf_image2.png",
          "sourceRectPixels": [
            338,
            1,
            507,
            102
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9961089494163424
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            282,
            1,
            560,
            112
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9961089494163424
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\battle\\lwf_image0.png",
          "sourceRectPixels": [
            592,
            1,
            863,
            118
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9961089494163424
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\battle\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            264,
            156,
            393
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.9961089494163424
        }
      ],
      "special": [
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            374,
            367,
            547,
            458
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.4797687861271676
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\sp01\\lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            706,
            292
          ],
          "rotationUndone": 0,
          "scaleForDisplay": 0.4391080617495712
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceTexture": "king_piccolo\\King Piccolo\\Piccolo Daimao Joven\\sp01\\lwf_image0.png",
          "sourceRectPixels": [
            374,
            367,
            547,
            458
          ],
          "rotationUndone": 1,
          "scaleForDisplay": 1.4797687861271676
        }
      ]
    },
    "style": "dokkan"
  },
  "yajirobe": {
    "src": "assets/recruit-yajirobe-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          171,
          196
        ]
      ],
      "attack": [
        [
          321,
          6,
          180,
          193
        ],
        [
          636,
          6,
          195,
          202
        ],
        [
          6,
          224,
          171,
          196
        ]
      ],
      "special": [
        [
          321,
          224,
          303,
          206
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          104.0,
          196
        ]
      ],
      "attack": [
        [
          52.45238095238095,
          193
        ],
        [
          101.58,
          202
        ],
        [
          104.0,
          196
        ]
      ],
      "special": [
        [
          263.1363636363636,
          206
        ]
      ]
    },
    "bodyHeight": 196,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20145",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "chichi": {
    "src": "assets/recruit-chichi-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          125,
          174
        ]
      ],
      "attack": [
        [
          187,
          6,
          153,
          174
        ],
        [
          368,
          6,
          150,
          178
        ],
        [
          6,
          201,
          125,
          174
        ]
      ],
      "special": [
        [
          187,
          201,
          169,
          183
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          5.2,
          174
        ]
      ],
      "attack": [
        [
          56.5,
          174
        ],
        [
          64.04878048780488,
          178
        ],
        [
          5.2,
          174
        ]
      ],
      "special": [
        [
          35.205882352941174,
          183
        ]
      ]
    },
    "bodyHeight": 174,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20289",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "grandpa_gohan": {
    "src": "assets/recruit-grandpa_gohan-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          158,
          196
        ]
      ],
      "attack": [
        [
          211,
          6,
          171,
          190
        ],
        [
          416,
          6,
          193,
          197
        ],
        [
          6,
          224,
          158,
          196
        ]
      ],
      "special": [
        [
          211,
          224,
          191,
          206
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          106.33333333333333,
          196
        ]
      ],
      "attack": [
        [
          112.15384615384616,
          190
        ],
        [
          118.91666666666667,
          197
        ],
        [
          106.33333333333333,
          196
        ]
      ],
      "special": [
        [
          52.10227272727273,
          206
        ]
      ]
    },
    "bodyHeight": 196,
    "faces": "right",
    "source": "https://spritedatabase.net/file/20359",
    "credits": "Brian318",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "giran": {
    "src": "assets/recruit-giran-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          296,
          268
        ]
      ],
      "attack": [
        [
          400,
          6,
          365,
          264
        ],
        [
          794,
          6,
          382,
          266
        ],
        [
          6,
          299,
          296,
          268
        ]
      ],
      "special": [
        [
          400,
          299,
          311,
          281
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          91.6875,
          268
        ]
      ],
      "attack": [
        [
          248.875,
          264
        ],
        [
          82.3076923076923,
          266
        ],
        [
          91.6875,
          268
        ]
      ],
      "special": [
        [
          97.38461538461539,
          281
        ]
      ]
    },
    "bodyHeight": 268,
    "faces": "right",
    "source": "https://dbz-dokkanbattle.com/card/1004661",
    "credits": "Original game graphics: Akatsuki / Bandai Namco. Public extraction hosted by Dragon Ball Z Dokkan Battle France.",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "nam": {
    "src": "assets/recruit-nam-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          154,
          223
        ]
      ],
      "attack": [
        [
          242,
          6,
          217,
          222
        ],
        [
          478,
          6,
          224,
          195
        ],
        [
          6,
          252,
          154,
          223
        ]
      ],
      "special": [
        [
          242,
          252,
          179,
          234
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          83.18181818181819,
          223
        ]
      ],
      "attack": [
        [
          62.55,
          222
        ],
        [
          121.76190476190476,
          195
        ],
        [
          83.18181818181819,
          223
        ]
      ],
      "special": [
        [
          105.92857142857143,
          234
        ]
      ]
    },
    "bodyHeight": 223,
    "faces": "right",
    "source": "https://dbz-dokkanbattle.com/card/1005590",
    "credits": "Original game graphics: Akatsuki / Bandai Namco. Public extraction hosted by Dragon Ball Z Dokkan Battle France.",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "android8": {
    "src": "assets/recruit-android8-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          256,
          290
        ]
      ],
      "attack": [
        [
          290,
          6,
          256,
          289
        ],
        [
          574,
          6,
          272,
          292
        ],
        [
          6,
          322,
          256,
          290
        ]
      ],
      "special": [
        [
          290,
          322,
          249,
          304
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          10.87037037037037,
          290
        ]
      ],
      "attack": [
        [
          10.5,
          289
        ],
        [
          10.807692307692308,
          292
        ],
        [
          10.87037037037037,
          290
        ]
      ],
      "special": [
        [
          148.4516129032258,
          304
        ]
      ]
    },
    "bodyHeight": 290,
    "faces": "right",
    "source": "https://dbz-dokkanbattle.com/card/1016961",
    "credits": "Original game graphics: Akatsuki / Bandai Namco. Public extraction hosted by Dragon Ball Z Dokkan Battle France.",
    "role": "playable",
    "style": "dokkan",
    "pixelArt": false,
    "note": "Original Dokkan Battle character poses. LWF texture rectangles, atlas rotation and logical texture proportions restored. Physical attack and special are distinct original poses; no card illustration or costume repaint."
  },
  "raditz_oozaru": {
    "src": "assets/raditz_oozaru-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          248,
          256
        ]
      ],
      "attack": [
        [
          286,
          6,
          256,
          246
        ],
        [
          566,
          6,
          268,
          245
        ],
        [
          846,
          6,
          256,
          246
        ],
        [
          6,
          274,
          248,
          256
        ]
      ],
      "special": [
        [
          286,
          274,
          248,
          256
        ],
        [
          566,
          274,
          242,
          256
        ],
        [
          846,
          274,
          248,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          124.0,
          256
        ]
      ],
      "attack": [
        [
          128.0,
          246
        ],
        [
          134.0,
          245
        ],
        [
          128.0,
          246
        ],
        [
          124.0,
          256
        ]
      ],
      "special": [
        [
          124.0,
          256
        ],
        [
          121.0,
          256
        ],
        [
          124.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "left"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "left"
      ],
      "special": [
        "left",
        "right",
        "left"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          149,
          90
        ],
        [
          139,
          99
        ],
        [
          149,
          90
        ]
      ]
    },
    "style": "dokkan",
    "role": "form",
    "gameCharacterId": "00443",
    "source": "https://dbz-dokkanbattle.com/card/4008331",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original transformed Great Ape full-body poses. Representative guard/punch/mouth release, not the full official timeline. No palette substitution or Vegeta atlas reuse.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            464,
            232,
            925,
            470
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            461,
            476
          ],
          "scaleForDisplay": 0.5378151260504201
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 27,
          "sourceTexture": "battle/lwf_image5.png",
          "sourceRectPixels": [
            2,
            1,
            478,
            230
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            476,
            458
          ],
          "scaleForDisplay": 0.5378151260504201
        },
        {
          "kind": "attack",
          "fragment": 29,
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            475,
            1,
            973,
            229
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            498,
            456
          ],
          "scaleForDisplay": 0.5378151260504201
        },
        {
          "kind": "attack",
          "fragment": 27,
          "sourceTexture": "battle/lwf_image5.png",
          "sourceRectPixels": [
            2,
            1,
            478,
            230
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            476,
            458
          ],
          "scaleForDisplay": 0.5378151260504201
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            464,
            232,
            925,
            470
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            461,
            476
          ],
          "scaleForDisplay": 0.5378151260504201
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            464,
            232,
            925,
            470
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            461,
            476
          ],
          "scaleForDisplay": 0.5378151260504201
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            1,
            0,
            952,
            502
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            950,
            1004
          ],
          "scaleForDisplay": 0.2549800796812749
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            464,
            232,
            925,
            470
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            461,
            476
          ],
          "scaleForDisplay": 0.5378151260504201
        }
      ]
    }
  },
  "nappa_oozaru": {
    "src": "assets/nappa_oozaru-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          248,
          256
        ]
      ],
      "attack": [
        [
          285,
          6,
          255,
          246
        ],
        [
          564,
          6,
          267,
          245
        ],
        [
          843,
          6,
          255,
          246
        ],
        [
          6,
          274,
          248,
          256
        ]
      ],
      "special": [
        [
          285,
          274,
          248,
          256
        ],
        [
          564,
          274,
          242,
          256
        ],
        [
          843,
          274,
          248,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          124.0,
          256
        ]
      ],
      "attack": [
        [
          127.5,
          246
        ],
        [
          133.5,
          245
        ],
        [
          127.5,
          246
        ],
        [
          124.0,
          256
        ]
      ],
      "special": [
        [
          124.0,
          256
        ],
        [
          121.0,
          256
        ],
        [
          124.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "left"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "left"
      ],
      "special": [
        "left",
        "right",
        "left"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          149,
          90
        ],
        [
          139,
          100
        ],
        [
          149,
          90
        ]
      ]
    },
    "style": "dokkan",
    "role": "form",
    "gameCharacterId": "00442",
    "source": "https://dbz-dokkanbattle.com/card/4005130",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original transformed Great Ape full-body poses. Representative guard/punch/mouth release, not the full official timeline. No palette substitution or Vegeta atlas reuse.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            465,
            233,
            928,
            472
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            463,
            478
          ],
          "scaleForDisplay": 0.5355648535564853
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 27,
          "sourceTexture": "battle/lwf_image5.png",
          "sourceRectPixels": [
            481,
            0,
            958,
            230
          ],
          "rotationUndone": 0,
          "trim": [
            1,
            0,
            477,
            460
          ],
          "scaleForDisplay": 0.5355648535564853
        },
        {
          "kind": "attack",
          "fragment": 29,
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            476,
            0,
            976,
            230
          ],
          "rotationUndone": 0,
          "trim": [
            1,
            0,
            500,
            458
          ],
          "scaleForDisplay": 0.5355648535564853
        },
        {
          "kind": "attack",
          "fragment": 27,
          "sourceTexture": "battle/lwf_image5.png",
          "sourceRectPixels": [
            481,
            0,
            958,
            230
          ],
          "rotationUndone": 0,
          "trim": [
            1,
            0,
            477,
            460
          ],
          "scaleForDisplay": 0.5355648535564853
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            465,
            233,
            928,
            472
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            463,
            478
          ],
          "scaleForDisplay": 0.5355648535564853
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            465,
            233,
            928,
            472
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            463,
            478
          ],
          "scaleForDisplay": 0.5355648535564853
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            1,
            0,
            952,
            502
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            950,
            1003
          ],
          "scaleForDisplay": 0.25523429710867396
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            465,
            233,
            928,
            472
          ],
          "rotationUndone": 0,
          "trim": [
            0,
            0,
            463,
            478
          ],
          "scaleForDisplay": 0.5355648535564853
        }
      ]
    }
  },
  "nail": {
    "src": "assets/namek/nail-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          253,
          293
        ],
        [
          387,
          6,
          163,
          293
        ]
      ],
      "attack": [
        [
          768,
          6,
          260,
          293
        ],
        [
          1149,
          6,
          331,
          293
        ],
        [
          6,
          311,
          369,
          293
        ]
      ],
      "special": [
        [
          387,
          311,
          308,
          293
        ],
        [
          768,
          311,
          253,
          293
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          126.5,
          293
        ],
        [
          81.5,
          293
        ]
      ],
      "attack": [
        [
          130.0,
          293
        ],
        [
          165.5,
          293
        ],
        [
          184.5,
          293
        ]
      ],
      "special": [
        [
          154.0,
          293
        ],
        [
          126.5,
          293
        ]
      ]
    },
    "bodyHeight": 293,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00036",
    "cardId": "1000570",
    "source": "https://dbz-dokkanbattle.com/card/1000570",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/nail/idle/idle_character_00036.lwf",
          "sourceTexture": "source-assets/namek/nail/idle/lwf_image0.png",
          "sourceRectPixels": [
            222,
            1,
            475,
            148
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            253,
            293
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/nail/idle/idle_character_00036.lwf",
          "sourceTexture": "source-assets/namek/nail/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            220,
            196
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            218,
            391
          ],
          "scaleForDisplay": 0.7493606138107417
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/nail/battle/battle_character_00036.lwf",
          "sourceTexture": "source-assets/namek/nail/battle/lwf_image1.png",
          "sourceRectPixels": [
            208,
            341,
            421,
            436
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            189,
            213
          ],
          "scaleForDisplay": 1.375586854460094
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/nail/battle/battle_character_00036.lwf",
          "sourceTexture": "source-assets/namek/nail/battle/lwf_image0.png",
          "sourceRectPixels": [
            634,
            402,
            876,
            508
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            242,
            214
          ],
          "scaleForDisplay": 1.3691588785046729
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/nail/battle/battle_character_00036.lwf",
          "sourceTexture": "source-assets/namek/nail/battle/lwf_image0.png",
          "sourceRectPixels": [
            208,
            269,
            415,
            400
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            261,
            207
          ],
          "scaleForDisplay": 1.4154589371980677
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/nail/sp01/sp_character_00036_01.lwf",
          "sourceTexture": "source-assets/namek/nail/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            669,
            318
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            667,
            634
          ],
          "scaleForDisplay": 0.46214511041009465
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/nail/sp01/sp_character_00036_01.lwf",
          "sourceTexture": "source-assets/namek/nail/sp01/lwf_image0.png",
          "sourceRectPixels": [
            402,
            319,
            620,
            413
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            188,
            218
          ],
          "scaleForDisplay": 1.3440366972477065
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          290,
          126
        ],
        [
          238,
          126
        ]
      ]
    }
  },
  "dende": {
    "src": "assets/namek/dende-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          172,
          210
        ],
        [
          190,
          6,
          131,
          210
        ]
      ],
      "attack": [
        [
          374,
          6,
          129,
          210
        ],
        [
          558,
          6,
          129,
          210
        ],
        [
          6,
          228,
          129,
          210
        ]
      ],
      "special": [
        [
          190,
          228,
          129,
          210
        ],
        [
          374,
          228,
          129,
          210
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          86.0,
          210
        ],
        [
          65.5,
          210
        ]
      ],
      "attack": [
        [
          64.5,
          210
        ],
        [
          64.5,
          210
        ],
        [
          64.5,
          210
        ]
      ],
      "special": [
        [
          64.5,
          210
        ],
        [
          64.5,
          210
        ]
      ]
    },
    "bodyHeight": 210,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "01494",
    "cardId": "1033520",
    "source": "https://dbz-dokkanbattle.com/card/1033520",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/dende/idle/idle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            75,
            212,
            161
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            172,
            210
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/dende/idle/idle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            236,
            74
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            146,
            234
          ],
          "scaleForDisplay": 0.8974358974358975
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/dende/battle/battle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            353,
            72,
            410
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            70,
            114
          ],
          "scaleForDisplay": 1.8421052631578947
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/dende/battle/battle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/battle/lwf_image0.png",
          "sourceRectPixels": [
            118,
            276,
            232,
            311
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            114
          ],
          "scaleForDisplay": 1.8421052631578947
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/dende/battle/battle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/battle/lwf_image0.png",
          "sourceRectPixels": [
            118,
            276,
            232,
            311
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            114
          ],
          "scaleForDisplay": 1.8421052631578947
        }
      ],
      "special": [
        {
          "kind": "battle",
          "fragment": 47,
          "lwf": "source-assets/namek/dende/battle/battle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/battle/lwf_image0.png",
          "sourceRectPixels": [
            294,
            382,
            408,
            417
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            114
          ],
          "scaleForDisplay": 1.8421052631578947
        },
        {
          "kind": "battle",
          "fragment": 48,
          "lwf": "source-assets/namek/dende/battle/battle_character_01494.lwf",
          "sourceTexture": "source-assets/namek/dende/battle/lwf_image0.png",
          "sourceRectPixels": [
            146,
            353,
            216,
            410
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            70,
            114
          ],
          "scaleForDisplay": 1.8421052631578947
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline. Official special texture is a placeholder; special uses original charging/guard poses for a support/healing action.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          103,
          90
        ],
        [
          103,
          90
        ]
      ]
    }
  },
  "cui": {
    "src": "assets/namek/cui-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          260,
          384
        ],
        [
          509,
          6,
          256,
          384
        ]
      ],
      "attack": [
        [
          1012,
          6,
          322,
          384
        ],
        [
          1515,
          6,
          393,
          384
        ],
        [
          6,
          402,
          382,
          384
        ]
      ],
      "special": [
        [
          509,
          402,
          491,
          384
        ],
        [
          1012,
          402,
          262,
          384
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          130.0,
          384
        ],
        [
          128.0,
          384
        ]
      ],
      "attack": [
        [
          161.0,
          384
        ],
        [
          196.5,
          384
        ],
        [
          191.0,
          384
        ]
      ],
      "special": [
        [
          245.5,
          384
        ],
        [
          131.0,
          384
        ]
      ]
    },
    "bodyHeight": 384,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00046",
    "cardId": "1000720",
    "source": "https://dbz-dokkanbattle.com/card/1000720",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/cui/idle/idle_character_00046.lwf",
          "sourceTexture": "source-assets/namek/cui/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            132,
            386,
            262
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            260,
            384
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/cui/idle/idle_character_00046.lwf",
          "sourceTexture": "source-assets/namek/cui/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            392,
            131
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            260,
            390
          ],
          "scaleForDisplay": 0.9846153846153847
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/cui/battle/battle_character_00046.lwf",
          "sourceTexture": "source-assets/namek/cui/battle/lwf_image0.png",
          "sourceRectPixels": [
            869,
            399,
            1019,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            150,
            179
          ],
          "scaleForDisplay": 2.1452513966480447
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/cui/battle/battle_character_00046.lwf",
          "sourceTexture": "source-assets/namek/cui/battle/lwf_image1.png",
          "sourceRectPixels": [
            294,
            92,
            466,
            180
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            176,
            172
          ],
          "scaleForDisplay": 2.2325581395348837
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/cui/battle/battle_character_00046.lwf",
          "sourceTexture": "source-assets/namek/cui/battle/lwf_image1.png",
          "sourceRectPixels": [
            746,
            1,
            918,
            86
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            171,
            172
          ],
          "scaleForDisplay": 2.2325581395348837
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/cui/sp01/sp_character_00046_01.lwf",
          "sourceTexture": "source-assets/namek/cui/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            600,
            235
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            598,
            468
          ],
          "scaleForDisplay": 0.8205128205128205
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/cui/sp01/sp_character_00046_01.lwf",
          "sourceTexture": "source-assets/namek/cui/sp01/lwf_image0.png",
          "sourceRectPixels": [
            602,
            318,
            728,
            410
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            126,
            185
          ],
          "scaleForDisplay": 2.075675675675676
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          432,
          138
        ],
        [
          231,
          138
        ]
      ]
    }
  },
  "dodoria": {
    "src": "assets/namek/dodoria-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          361,
          368
        ],
        [
          502,
          6,
          339,
          368
        ]
      ],
      "attack": [
        [
          998,
          6,
          338,
          368
        ],
        [
          1494,
          6,
          484,
          368
        ],
        [
          6,
          386,
          446,
          368
        ]
      ],
      "special": [
        [
          502,
          386,
          397,
          368
        ],
        [
          998,
          386,
          336,
          368
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          180.5,
          368
        ],
        [
          169.5,
          368
        ]
      ],
      "attack": [
        [
          169.0,
          368
        ],
        [
          242.0,
          368
        ],
        [
          223.0,
          368
        ]
      ],
      "special": [
        [
          198.5,
          368
        ],
        [
          168.0,
          368
        ]
      ]
    },
    "bodyHeight": 368,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00030",
    "cardId": "1000510",
    "source": "https://dbz-dokkanbattle.com/card/1000510",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/dodoria/idle/idle_character_00030.lwf",
          "sourceTexture": "source-assets/namek/dodoria/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            182,
            370,
            362
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            361,
            368
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/dodoria/idle/idle_character_00030.lwf",
          "sourceTexture": "source-assets/namek/dodoria/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            392,
            180
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            359,
            390
          ],
          "scaleForDisplay": 0.9435897435897436
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/dodoria/battle/battle_character_00030.lwf",
          "sourceTexture": "source-assets/namek/dodoria/battle/lwf_image2.png",
          "sourceRectPixels": [
            194,
            316,
            401,
            411
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            190,
            207
          ],
          "scaleForDisplay": 1.7777777777777777
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/dodoria/battle/battle_character_00030.lwf",
          "sourceTexture": "source-assets/namek/dodoria/battle/lwf_image1.png",
          "sourceRectPixels": [
            543,
            1,
            810,
            102
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            267,
            203
          ],
          "scaleForDisplay": 1.812807881773399
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/dodoria/battle/battle_character_00030.lwf",
          "sourceTexture": "source-assets/namek/dodoria/battle/lwf_image0.png",
          "sourceRectPixels": [
            603,
            1,
            821,
            133
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            264,
            218
          ],
          "scaleForDisplay": 1.688073394495413
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 1,
          "lwf": "source-assets/namek/dodoria/sp01/sp_character_00030_01.lwf",
          "sourceTexture": "source-assets/namek/dodoria/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            709,
            329
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            707,
            656
          ],
          "scaleForDisplay": 0.5609756097560976
        },
        {
          "kind": "sp01",
          "fragment": 3,
          "lwf": "source-assets/namek/dodoria/sp01/sp_character_00030_01.lwf",
          "sourceTexture": "source-assets/namek/dodoria/sp01/lwf_image0.png",
          "sourceRectPixels": [
            732,
            210,
            948,
            308
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            197,
            216
          ],
          "scaleForDisplay": 1.7037037037037037
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          306,
          92
        ],
        [
          259,
          92
        ]
      ]
    }
  },
  "zarbon": {
    "src": "assets/namek/zarbon-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          369,
          373
        ],
        [
          490,
          6,
          325,
          373
        ]
      ],
      "attack": [
        [
          974,
          6,
          347,
          373
        ],
        [
          1458,
          6,
          391,
          373
        ],
        [
          6,
          391,
          446,
          373
        ]
      ],
      "special": [
        [
          490,
          391,
          472,
          373
        ],
        [
          974,
          391,
          333,
          373
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          184.5,
          373
        ],
        [
          162.5,
          373
        ]
      ],
      "attack": [
        [
          173.5,
          373
        ],
        [
          195.5,
          373
        ],
        [
          223.0,
          373
        ]
      ],
      "special": [
        [
          236.0,
          373
        ],
        [
          166.5,
          373
        ]
      ]
    },
    "bodyHeight": 373,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00016",
    "cardId": "1000360",
    "source": "https://dbz-dokkanbattle.com/card/1000360",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/zarbon/idle/idle_character_00016.lwf",
          "sourceTexture": "source-assets/namek/zarbon/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            172,
            375,
            357
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            369,
            373
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/zarbon/idle/idle_character_00016.lwf",
          "sourceTexture": "source-assets/namek/zarbon/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            393,
            172
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            341,
            391
          ],
          "scaleForDisplay": 0.9539641943734015
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/zarbon/battle/battle_character_00016.lwf",
          "sourceTexture": "source-assets/namek/zarbon/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            380,
            213,
            494
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            211,
            227
          ],
          "scaleForDisplay": 1.6431718061674008
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/zarbon/battle/battle_character_00016.lwf",
          "sourceTexture": "source-assets/namek/zarbon/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            370,
            261,
            493
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            259,
            247
          ],
          "scaleForDisplay": 1.5101214574898785
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/zarbon/battle/battle_character_00016.lwf",
          "sourceTexture": "source-assets/namek/zarbon/battle/lwf_image1.png",
          "sourceRectPixels": [
            317,
            1,
            611,
            124
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            294,
            246
          ],
          "scaleForDisplay": 1.516260162601626
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/zarbon/sp01/sp_character_00016_01.lwf",
          "sourceTexture": "source-assets/namek/zarbon/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            882,
            349
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            880,
            696
          ],
          "scaleForDisplay": 0.5359195402298851
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/zarbon/sp01/sp_character_00016_01.lwf",
          "sourceTexture": "source-assets/namek/zarbon/sp01/lwf_image0.png",
          "sourceRectPixels": [
            255,
            395,
            496,
            502
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            215,
            241
          ],
          "scaleForDisplay": 1.5477178423236515
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          415,
          172
        ],
        [
          293,
          172
        ]
      ]
    }
  },
  "appule": {
    "src": "assets/namek/appule-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          247,
          380
        ],
        [
          526,
          6,
          245,
          380
        ]
      ],
      "attack": [
        [
          1046,
          6,
          309,
          380
        ],
        [
          1566,
          6,
          360,
          380
        ],
        [
          6,
          398,
          376,
          380
        ]
      ],
      "special": [
        [
          526,
          398,
          412,
          380
        ],
        [
          1046,
          398,
          508,
          380
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          123.5,
          380
        ],
        [
          122.5,
          380
        ]
      ],
      "attack": [
        [
          154.5,
          380
        ],
        [
          180.0,
          380
        ],
        [
          188.0,
          380
        ]
      ],
      "special": [
        [
          206.0,
          380
        ],
        [
          254.0,
          380
        ]
      ]
    },
    "bodyHeight": 380,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00045",
    "cardId": "1000710",
    "source": "https://dbz-dokkanbattle.com/card/1000710",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/appule/idle/idle_character_00045.lwf",
          "sourceTexture": "source-assets/namek/appule/idle/lwf_image0.png",
          "sourceRectPixels": [
            256,
            1,
            503,
            191
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            247,
            380
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/appule/idle/idle_character_00045.lwf",
          "sourceTexture": "source-assets/namek/appule/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            254,
            196
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            252,
            391
          ],
          "scaleForDisplay": 0.9718670076726342
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/appule/battle/battle_character_00045.lwf",
          "sourceTexture": "source-assets/namek/appule/battle/lwf_image1.png",
          "sourceRectPixels": [
            352,
            1,
            505,
            95
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            153,
            188
          ],
          "scaleForDisplay": 2.021276595744681
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/appule/battle/battle_character_00045.lwf",
          "sourceTexture": "source-assets/namek/appule/battle/lwf_image1.png",
          "sourceRectPixels": [
            160,
            194,
            338,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            178,
            188
          ],
          "scaleForDisplay": 2.021276595744681
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/appule/battle/battle_character_00045.lwf",
          "sourceTexture": "source-assets/namek/appule/battle/lwf_image1.png",
          "sourceRectPixels": [
            515,
            234,
            698,
            324
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            181,
            183
          ],
          "scaleForDisplay": 2.0765027322404372
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/appule/sp01/sp_character_00045_01.lwf",
          "sourceTexture": "source-assets/namek/appule/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            244,
            550,
            496
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            548,
            506
          ],
          "scaleForDisplay": 0.7509881422924901
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/appule/sp01/sp_character_00045_01.lwf",
          "sourceTexture": "source-assets/namek/appule/sp01/lwf_image0.png",
          "sourceRectPixels": [
            853,
            105,
            1013,
            212
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            214,
            160
          ],
          "scaleForDisplay": 2.375
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          330,
          163
        ],
        [
          406,
          163
        ]
      ]
    }
  },
  "guldo": {
    "src": "assets/namek/guldo-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          156,
          203
        ],
        [
          245,
          6,
          164,
          203
        ]
      ],
      "attack": [
        [
          484,
          6,
          188,
          203
        ],
        [
          723,
          6,
          226,
          203
        ],
        [
          6,
          221,
          227,
          203
        ]
      ],
      "special": [
        [
          245,
          221,
          187,
          203
        ],
        [
          484,
          221,
          193,
          203
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          78.0,
          203
        ],
        [
          82.0,
          203
        ]
      ],
      "attack": [
        [
          94.0,
          203
        ],
        [
          113.0,
          203
        ],
        [
          113.5,
          203
        ]
      ],
      "special": [
        [
          93.5,
          203
        ],
        [
          96.5,
          203
        ]
      ]
    },
    "bodyHeight": 203,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00032",
    "cardId": "1000530",
    "source": "https://dbz-dokkanbattle.com/card/1000530",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/guldo/idle/idle_character_00032.lwf",
          "sourceTexture": "source-assets/namek/guldo/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            88,
            205,
            166
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            203
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/guldo/idle/idle_character_00032.lwf",
          "sourceTexture": "source-assets/namek/guldo/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            215,
            87
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            172,
            213
          ],
          "scaleForDisplay": 0.9530516431924883
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/guldo/battle/battle_character_00032.lwf",
          "sourceTexture": "source-assets/namek/guldo/battle/lwf_image0.png",
          "sourceRectPixels": [
            816,
            390,
            926,
            450
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            110,
            119
          ],
          "scaleForDisplay": 1.7058823529411764
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/guldo/battle/battle_character_00032.lwf",
          "sourceTexture": "source-assets/namek/guldo/battle/lwf_image0.png",
          "sourceRectPixels": [
            243,
            271,
            360,
            336
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            130,
            117
          ],
          "scaleForDisplay": 1.735042735042735
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/guldo/battle/battle_character_00032.lwf",
          "sourceTexture": "source-assets/namek/guldo/battle/lwf_image0.png",
          "sourceRectPixels": [
            124,
            432,
            242,
            498
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            132,
            118
          ],
          "scaleForDisplay": 1.7203389830508475
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/guldo/sp01/sp_character_00032_01.lwf",
          "sourceTexture": "source-assets/namek/guldo/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            182,
            366,
            350
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            335,
            364
          ],
          "scaleForDisplay": 0.5576923076923077
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/guldo/sp01/sp_character_00032_01.lwf",
          "sourceTexture": "source-assets/namek/guldo/sp01/lwf_image0.png",
          "sourceRectPixels": [
            195,
            350,
            317,
            408
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            116,
            122
          ],
          "scaleForDisplay": 1.6639344262295082
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          150,
          87
        ],
        [
          154,
          87
        ]
      ]
    }
  },
  "recoome": {
    "src": "assets/namek/recoome-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          242,
          338
        ],
        [
          436,
          6,
          171,
          338
        ]
      ],
      "attack": [
        [
          866,
          6,
          364,
          338
        ],
        [
          1296,
          6,
          350,
          338
        ],
        [
          6,
          356,
          345,
          338
        ]
      ],
      "special": [
        [
          436,
          356,
          414,
          338
        ],
        [
          866,
          356,
          418,
          338
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          121.0,
          338
        ],
        [
          85.5,
          338
        ]
      ],
      "attack": [
        [
          182.0,
          338
        ],
        [
          175.0,
          338
        ],
        [
          172.5,
          338
        ]
      ],
      "special": [
        [
          207.0,
          338
        ],
        [
          209.0,
          338
        ]
      ]
    },
    "bodyHeight": 338,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00031",
    "cardId": "1000520",
    "source": "https://dbz-dokkanbattle.com/card/1000520",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/recoome/idle/idle_character_00031.lwf",
          "sourceTexture": "source-assets/namek/recoome/idle/lwf_image0.png",
          "sourceRectPixels": [
            206,
            1,
            448,
            170
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            242,
            338
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/recoome/idle/idle_character_00031.lwf",
          "sourceTexture": "source-assets/namek/recoome/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            204,
            201
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            202,
            400
          ],
          "scaleForDisplay": 0.845
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/recoome/battle/battle_character_00031.lwf",
          "sourceTexture": "source-assets/namek/recoome/battle/lwf_image2.png",
          "sourceRectPixels": [
            136,
            1,
            374,
            129
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            256,
            238
          ],
          "scaleForDisplay": 1.4201680672268908
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/recoome/battle/battle_character_00031.lwf",
          "sourceTexture": "source-assets/namek/recoome/battle/lwf_image2.png",
          "sourceRectPixels": [
            582,
            123,
            810,
            241
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            236,
            228
          ],
          "scaleForDisplay": 1.4824561403508771
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/recoome/battle/battle_character_00031.lwf",
          "sourceTexture": "source-assets/namek/recoome/battle/lwf_image2.png",
          "sourceRectPixels": [
            236,
            393,
            468,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            236,
            232
          ],
          "scaleForDisplay": 1.4632034632034632
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/recoome/sp01/sp_character_00031_01.lwf",
          "sourceTexture": "source-assets/namek/recoome/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            670,
            274
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            668,
            546
          ],
          "scaleForDisplay": 0.6190476190476191
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/recoome/sp01/sp_character_00031_01.lwf",
          "sourceTexture": "source-assets/namek/recoome/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            678,
            274
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            676,
            546
          ],
          "scaleForDisplay": 0.6190476190476191
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          327,
          105
        ],
        [
          330,
          105
        ]
      ]
    }
  },
  "burter": {
    "src": "assets/namek/burter-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          306,
          370
        ],
        [
          480,
          6,
          196,
          370
        ]
      ],
      "attack": [
        [
          954,
          6,
          308,
          370
        ],
        [
          1428,
          6,
          447,
          370
        ],
        [
          6,
          388,
          462,
          370
        ]
      ],
      "special": [
        [
          480,
          388,
          412,
          370
        ],
        [
          954,
          388,
          298,
          370
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          153.0,
          370
        ],
        [
          98.0,
          370
        ]
      ],
      "attack": [
        [
          154.0,
          370
        ],
        [
          223.5,
          370
        ],
        [
          231.0,
          370
        ]
      ],
      "special": [
        [
          206.0,
          370
        ],
        [
          149.0,
          370
        ]
      ]
    },
    "bodyHeight": 370,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00033",
    "cardId": "1000540",
    "source": "https://dbz-dokkanbattle.com/card/1000540",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/burter/idle/idle_character_00033.lwf",
          "sourceTexture": "source-assets/namek/burter/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            106,
            372,
            258
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            306,
            370
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/burter/idle/idle_character_00033.lwf",
          "sourceTexture": "source-assets/namek/burter/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            392,
            104
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            207,
            390
          ],
          "scaleForDisplay": 0.9487179487179487
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/burter/battle/battle_character_00033.lwf",
          "sourceTexture": "source-assets/namek/burter/battle/lwf_image2.png",
          "sourceRectPixels": [
            273,
            140,
            543,
            253
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            225,
            270
          ],
          "scaleForDisplay": 1.3703703703703705
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/burter/battle/battle_character_00033.lwf",
          "sourceTexture": "source-assets/namek/burter/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            1,
            337,
            140
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            335,
            277
          ],
          "scaleForDisplay": 1.3357400722021662
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/burter/battle/battle_character_00033.lwf",
          "sourceTexture": "source-assets/namek/burter/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            324,
            279,
            497
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            346,
            277
          ],
          "scaleForDisplay": 1.3357400722021662
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/burter/sp01/sp_character_00033_01.lwf",
          "sourceTexture": "source-assets/namek/burter/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            931,
            418
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            929,
            834
          ],
          "scaleForDisplay": 0.44364508393285373
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/burter/sp01/sp_character_00033_01.lwf",
          "sourceTexture": "source-assets/namek/burter/sp01/lwf_image2.png",
          "sourceRectPixels": [
            250,
            216,
            485,
            362
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            235,
            292
          ],
          "scaleForDisplay": 1.2671232876712328
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          387,
          170
        ],
        [
          280,
          170
        ]
      ]
    }
  },
  "jeice": {
    "src": "assets/namek/jeice-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          235,
          300
        ],
        [
          328,
          6,
          171,
          300
        ]
      ],
      "attack": [
        [
          650,
          6,
          235,
          300
        ],
        [
          972,
          6,
          310,
          300
        ],
        [
          6,
          318,
          273,
          300
        ]
      ],
      "special": [
        [
          328,
          318,
          236,
          300
        ],
        [
          650,
          318,
          192,
          300
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          117.5,
          300
        ],
        [
          85.5,
          300
        ]
      ],
      "attack": [
        [
          117.5,
          300
        ],
        [
          155.0,
          300
        ],
        [
          136.5,
          300
        ]
      ],
      "special": [
        [
          118.0,
          300
        ],
        [
          96.0,
          300
        ]
      ]
    },
    "bodyHeight": 300,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00034",
    "cardId": "1000550",
    "source": "https://dbz-dokkanbattle.com/card/1000550",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/jeice/idle/idle_character_00034.lwf",
          "sourceTexture": "source-assets/namek/jeice/idle/lwf_image0.png",
          "sourceRectPixels": [
            190,
            0,
            490,
            118
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            235,
            300
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/jeice/idle/idle_character_00034.lwf",
          "sourceTexture": "source-assets/namek/jeice/idle/lwf_image0.png",
          "sourceRectPixels": [
            1,
            0,
            188,
            164
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            187,
            326
          ],
          "scaleForDisplay": 0.9202453987730062
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/jeice/battle/battle_character_00034.lwf",
          "sourceTexture": "source-assets/namek/jeice/battle/lwf_image1.png",
          "sourceRectPixels": [
            392,
            232,
            572,
            302
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            141,
            180
          ],
          "scaleForDisplay": 1.6666666666666667
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/jeice/battle/battle_character_00034.lwf",
          "sourceTexture": "source-assets/namek/jeice/battle/lwf_image1.png",
          "sourceRectPixels": [
            601,
            1,
            795,
            95
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            194,
            188
          ],
          "scaleForDisplay": 1.5957446808510638
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/jeice/battle/battle_character_00034.lwf",
          "sourceTexture": "source-assets/namek/jeice/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            179,
            194,
            266
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            175,
            192
          ],
          "scaleForDisplay": 1.5625
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/jeice/sp01/sp_character_00034_01.lwf",
          "sourceTexture": "source-assets/namek/jeice/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            506,
            322
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            504,
            642
          ],
          "scaleForDisplay": 0.4672897196261682
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/jeice/sp01/sp_character_00034_01.lwf",
          "sourceTexture": "source-assets/namek/jeice/sp01/lwf_image0.png",
          "sourceRectPixels": [
            675,
            291,
            820,
            404
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            145,
            226
          ],
          "scaleForDisplay": 1.3274336283185841
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          189,
          129
        ],
        [
          154,
          129
        ]
      ]
    }
  },
  "ginyu": {
    "src": "assets/namek/ginyu-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          249,
          364
        ],
        [
          449,
          6,
          233,
          364
        ]
      ],
      "attack": [
        [
          892,
          6,
          320,
          364
        ],
        [
          1335,
          6,
          431,
          364
        ],
        [
          6,
          382,
          395,
          364
        ]
      ],
      "special": [
        [
          449,
          382,
          387,
          364
        ],
        [
          892,
          382,
          285,
          364
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          124.5,
          364
        ],
        [
          116.5,
          364
        ]
      ],
      "attack": [
        [
          160.0,
          364
        ],
        [
          215.5,
          364
        ],
        [
          197.5,
          364
        ]
      ],
      "special": [
        [
          193.5,
          364
        ],
        [
          142.5,
          364
        ]
      ]
    },
    "bodyHeight": 364,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00017",
    "cardId": "1000370",
    "source": "https://dbz-dokkanbattle.com/card/1000370",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/ginyu/idle/idle_character_00017.lwf",
          "sourceTexture": "source-assets/namek/ginyu/idle/lwf_image0.png",
          "sourceRectPixels": [
            254,
            1,
            503,
            183
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            249,
            364
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/ginyu/idle/idle_character_00017.lwf",
          "sourceTexture": "source-assets/namek/ginyu/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            252,
            196
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            250,
            391
          ],
          "scaleForDisplay": 0.9309462915601023
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/ginyu/battle/battle_character_00017.lwf",
          "sourceTexture": "source-assets/namek/ginyu/battle/lwf_image1.png",
          "sourceRectPixels": [
            721,
            110,
            945,
            209
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            197,
            224
          ],
          "scaleForDisplay": 1.625
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/ginyu/battle/battle_character_00017.lwf",
          "sourceTexture": "source-assets/namek/ginyu/battle/lwf_image0.png",
          "sourceRectPixels": [
            342,
            1,
            605,
            112
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            263,
            222
          ],
          "scaleForDisplay": 1.6396396396396395
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/ginyu/battle/battle_character_00017.lwf",
          "sourceTexture": "source-assets/namek/ginyu/battle/lwf_image0.png",
          "sourceRectPixels": [
            607,
            101,
            851,
            214
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            244,
            225
          ],
          "scaleForDisplay": 1.6177777777777778
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/ginyu/sp01/sp_character_00017_01.lwf",
          "sourceTexture": "source-assets/namek/ginyu/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            695,
            326
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            693,
            651
          ],
          "scaleForDisplay": 0.5591397849462365
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/ginyu/sp01/sp_character_00017_01.lwf",
          "sourceTexture": "source-assets/namek/ginyu/sp01/lwf_image0.png",
          "sourceRectPixels": [
            340,
            382,
            518,
            495
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            178,
            227
          ],
          "scaleForDisplay": 1.60352422907489
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          310,
          157
        ],
        [
          228,
          157
        ]
      ]
    }
  },
  "frieza": {
    "src": "assets/namek/frieza-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          243,
          234
        ],
        [
          323,
          6,
          105,
          234
        ]
      ],
      "attack": [
        [
          640,
          6,
          246,
          234
        ],
        [
          957,
          6,
          305,
          234
        ],
        [
          6,
          252,
          284,
          234
        ]
      ],
      "special": [
        [
          323,
          252,
          186,
          234
        ],
        [
          640,
          252,
          120,
          234
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          121.5,
          234
        ],
        [
          52.5,
          234
        ]
      ],
      "attack": [
        [
          123.0,
          234
        ],
        [
          152.5,
          234
        ],
        [
          142.0,
          234
        ]
      ],
      "special": [
        [
          93.0,
          234
        ],
        [
          60.0,
          234
        ]
      ]
    },
    "bodyHeight": 234,
    "faces": "right",
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00005",
    "cardId": "1014820",
    "source": "https://dbz-dokkanbattle.com/card/1014820",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original battle textures and card artwork hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "idle",
          "fragment": 0,
          "lwf": "source-assets/namek/frieza/idle/idle_character_00005.lwf",
          "sourceTexture": "source-assets/namek/frieza/idle/lwf_image0.png",
          "sourceRectPixels": [
            165,
            1,
            408,
            118
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            243,
            234
          ],
          "scaleForDisplay": 1.0
        },
        {
          "kind": "idle",
          "fragment": 1,
          "lwf": "source-assets/namek/frieza/idle/idle_character_00005.lwf",
          "sourceTexture": "source-assets/namek/frieza/idle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            163,
            180
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            161,
            359
          ],
          "scaleForDisplay": 0.6518105849582173
        }
      ],
      "attack": [
        {
          "kind": "battle",
          "fragment": 0,
          "lwf": "source-assets/namek/frieza/battle/battle_character_00005.lwf",
          "sourceTexture": "source-assets/namek/frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            510,
            367,
            669,
            442
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            159,
            151
          ],
          "scaleForDisplay": 1.5496688741721854
        },
        {
          "kind": "battle",
          "fragment": 31,
          "lwf": "source-assets/namek/frieza/battle/battle_character_00005.lwf",
          "sourceTexture": "source-assets/namek/frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            606,
            1,
            799,
            75
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            193,
            148
          ],
          "scaleForDisplay": 1.5810810810810811
        },
        {
          "kind": "battle",
          "fragment": 1,
          "lwf": "source-assets/namek/frieza/battle/battle_character_00005.lwf",
          "sourceTexture": "source-assets/namek/frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            315,
            153,
            504,
            231
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            189,
            156
          ],
          "scaleForDisplay": 1.5
        }
      ],
      "special": [
        {
          "kind": "sp01",
          "fragment": 0,
          "lwf": "source-assets/namek/frieza/sp01/sp_character_00005_01.lwf",
          "sourceTexture": "source-assets/namek/frieza/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            134,
            330,
            264
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            261,
            328
          ],
          "scaleForDisplay": 0.7134146341463414
        },
        {
          "kind": "sp01",
          "fragment": 2,
          "lwf": "source-assets/namek/frieza/sp01/sp_character_00005_01.lwf",
          "sourceTexture": "source-assets/namek/frieza/sp01/lwf_image0.png",
          "sourceRectPixels": [
            202,
            266,
            294,
            355
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            92,
            179
          ],
          "scaleForDisplay": 1.3072625698324023
        }
      ]
    },
    "note": "Original Dokkan full-body fragments, rotation restored and proportional pose normalization to idle height. Representative original poses, not the complete official LWF timeline.",
    "specialReleaseFrame": 0,
    "emissionPoints": {
      "special": [
        [
          182,
          73
        ],
        [
          118,
          73
        ]
      ]
    }
  },
  "goku_ssj": {
    "src": "assets/namek-forms/goku_ssj-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          156,
          256
        ]
      ],
      "attack": [
        [
          272,
          6,
          195,
          262
        ],
        [
          538,
          6,
          220,
          220
        ],
        [
          804,
          6,
          254,
          247
        ],
        [
          6,
          280,
          156,
          256
        ]
      ],
      "special": [
        [
          272,
          280,
          156,
          256
        ],
        [
          538,
          280,
          230,
          256
        ],
        [
          804,
          280,
          156,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          78.0,
          256
        ]
      ],
      "attack": [
        [
          97.5,
          262
        ],
        [
          110.0,
          220
        ],
        [
          127.0,
          247
        ],
        [
          78.0,
          256
        ]
      ],
      "special": [
        [
          78.0,
          256
        ],
        [
          115.0,
          256
        ],
        [
          78.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          109,
          102
        ],
        [
          222,
          92
        ],
        [
          109,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "01187",
    "cardId": "1022610",
    "source": "https://dbz-dokkanbattle.com/card/1022610",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            231,
            142,
            345
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            140,
            228
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            524,
            421,
            758,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            174,
            234
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            310,
            101,
            506,
            199
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            196,
            196
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            228,
            111
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            226,
            220
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            231,
            142,
            345
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            140,
            228
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            231,
            142,
            345
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            140,
            228
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "sp01/sp_character_01187_01.lwf",
          "sourceTexture": "sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            628,
            350
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            626,
            698
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 0.3667621776504298
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01187.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            231,
            142,
            345
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            140,
            228
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.1228070175438596
        }
      ]
    }
  },
  "piccolo_nail": {
    "src": "assets/namek-forms/piccolo_nail-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          157,
          256
        ]
      ],
      "attack": [
        [
          309,
          6,
          206,
          227
        ],
        [
          612,
          6,
          291,
          229
        ],
        [
          915,
          6,
          267,
          236
        ],
        [
          6,
          274,
          157,
          256
        ]
      ],
      "special": [
        [
          309,
          274,
          157,
          256
        ],
        [
          612,
          274,
          271,
          256
        ],
        [
          915,
          274,
          157,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          78.5,
          256
        ]
      ],
      "attack": [
        [
          103.0,
          227
        ],
        [
          145.5,
          229
        ],
        [
          133.5,
          236
        ],
        [
          78.5,
          256
        ]
      ],
      "special": [
        [
          78.5,
          256
        ],
        [
          135.5,
          256
        ],
        [
          78.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          110,
          102
        ],
        [
          165,
          123
        ],
        [
          110,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "01009",
    "cardId": "1022450",
    "source": "https://dbz-dokkanbattle.com/card/1022450",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            220,
            597,
            418,
            815
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            198,
            218
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            2,
            282,
            222
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            280,
            220
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            224,
            229,
            481
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            257,
            227
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "sp01/sp_character_01009_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            558,
            264
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            556,
            526
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 0.4866920152091255
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01009.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.0406504065040652
        }
      ]
    }
  },
  "gohan_potential": {
    "src": "assets/namek-forms/gohan_potential-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          143,
          256
        ]
      ],
      "attack": [
        [
          226,
          6,
          208,
          235
        ],
        [
          446,
          6,
          189,
          262
        ],
        [
          666,
          6,
          201,
          256
        ],
        [
          6,
          280,
          143,
          256
        ]
      ],
      "special": [
        [
          226,
          280,
          143,
          256
        ],
        [
          446,
          280,
          199,
          256
        ],
        [
          666,
          280,
          143,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          71.5,
          256
        ]
      ],
      "attack": [
        [
          104.0,
          235
        ],
        [
          94.5,
          262
        ],
        [
          100.5,
          256
        ],
        [
          71.5,
          256
        ]
      ],
      "special": [
        [
          71.5,
          256
        ],
        [
          99.5,
          256
        ],
        [
          71.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          100,
          102
        ],
        [
          161,
          79
        ],
        [
          100,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00075",
    "cardId": "1001620",
    "source": "https://dbz-dokkanbattle.com/card/1001620",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            286,
            313,
            354,
            374
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            68,
            122
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            329,
            256,
            428,
            312
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            99,
            112
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            82,
            313,
            172,
            376
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            90,
            125
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            214,
            375,
            310,
            436
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            96,
            122
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            286,
            313,
            354,
            374
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            68,
            122
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            286,
            313,
            354,
            374
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            68,
            122
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "sp01/sp_character_00075_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            386,
            150
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            298,
            384
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.6666666666666666
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00075.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            286,
            313,
            354,
            374
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            68,
            122
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 2.098360655737705
        }
      ]
    }
  },
  "krillin_potential": {
    "src": "assets/namek-forms/krillin_potential-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          189,
          256
        ]
      ],
      "attack": [
        [
          263,
          6,
          242,
          224
        ],
        [
          520,
          6,
          226,
          245
        ],
        [
          777,
          6,
          245,
          267
        ],
        [
          6,
          285,
          189,
          256
        ]
      ],
      "special": [
        [
          263,
          285,
          189,
          256
        ],
        [
          520,
          285,
          238,
          256
        ],
        [
          777,
          285,
          189,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          94.5,
          256
        ]
      ],
      "attack": [
        [
          121.0,
          224
        ],
        [
          113.0,
          245
        ],
        [
          122.5,
          267
        ],
        [
          94.5,
          256
        ]
      ],
      "special": [
        [
          94.5,
          256
        ],
        [
          119.0,
          256
        ],
        [
          94.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          132,
          102
        ],
        [
          214,
          77
        ],
        [
          132,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00076",
    "cardId": "1001680",
    "source": "https://dbz-dokkanbattle.com/card/1001680",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            298,
            1,
            444,
            55
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            108,
            146
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            140,
            140,
            204
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            138,
            128
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            889,
            402,
            1018,
            472
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            129,
            140
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            590,
            268,
            742,
            338
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            140,
            152
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            298,
            1,
            444,
            55
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            108,
            146
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            298,
            1,
            444,
            55
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            108,
            146
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "sp01/sp_character_00076_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            436,
            1,
            848,
            192
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            383,
            412
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.6213592233009708
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00076.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            298,
            1,
            444,
            55
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            108,
            146
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.7534246575342465
        }
      ]
    }
  },
  "zarbon_monster": {
    "src": "assets/namek-forms/zarbon_monster-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          232,
          256
        ]
      ],
      "attack": [
        [
          329,
          6,
          234,
          229
        ],
        [
          652,
          6,
          311,
          241
        ],
        [
          975,
          6,
          280,
          260
        ],
        [
          6,
          278,
          232,
          256
        ]
      ],
      "special": [
        [
          329,
          278,
          232,
          256
        ],
        [
          652,
          278,
          293,
          256
        ],
        [
          975,
          278,
          232,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          116.0,
          256
        ]
      ],
      "attack": [
        [
          117.0,
          229
        ],
        [
          155.5,
          241
        ],
        [
          140.0,
          260
        ],
        [
          116.0,
          256
        ]
      ],
      "special": [
        [
          116.0,
          256
        ],
        [
          146.5,
          256
        ],
        [
          116.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          162,
          102
        ],
        [
          284,
          46
        ],
        [
          162,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00073",
    "cardId": "1001530",
    "source": "https://dbz-dokkanbattle.com/card/1001530",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            273,
            378,
            544,
            500
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            246,
            271
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image4.png",
          "sourceRectPixels": [
            263,
            1,
            505,
            125
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            248,
            242
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            334,
            140,
            663,
            267
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            329,
            255
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            665,
            140,
            961,
            277
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            296,
            275
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            273,
            378,
            544,
            500
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            246,
            271
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            273,
            378,
            544,
            500
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            246,
            271
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "sp01/sp_character_00073_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            1004,
            439
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            1002,
            876
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.2922374429223744
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00073.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            273,
            378,
            544,
            500
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            246,
            271
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.9446494464944649
        }
      ]
    }
  },
  "ginyu_goku": {
    "src": "assets/namek-forms/ginyu_goku-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          170,
          256
        ]
      ],
      "attack": [
        [
          290,
          6,
          256,
          213
        ],
        [
          574,
          6,
          210,
          274
        ],
        [
          858,
          6,
          272,
          253
        ],
        [
          6,
          292,
          170,
          256
        ]
      ],
      "special": [
        [
          290,
          292,
          170,
          256
        ],
        [
          574,
          292,
          245,
          256
        ],
        [
          858,
          292,
          170,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          85.0,
          256
        ]
      ],
      "attack": [
        [
          128.0,
          213
        ],
        [
          105.0,
          274
        ],
        [
          136.0,
          253
        ],
        [
          85.0,
          256
        ]
      ],
      "special": [
        [
          85.0,
          256
        ],
        [
          122.5,
          256
        ],
        [
          85.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          119,
          102
        ],
        [
          241,
          84
        ],
        [
          119,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00074",
    "cardId": "1034690",
    "source": "https://dbz-dokkanbattle.com/card/1034690",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            187,
            136,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            134,
            202
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            658,
            181,
            826,
            282
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            202,
            168
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            490,
            181,
            656,
            289
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            166,
            216
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            274,
            187,
            490,
            287
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            216,
            200
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            187,
            136,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            134,
            202
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            187,
            136,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            134,
            202
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "sp01/sp_character_00074_01.lwf",
          "sourceTexture": "sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            584,
            305
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            582,
            608
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 0.42105263157894735
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00074.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            187,
            136,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            134,
            202
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2673267326732673
        }
      ]
    }
  },
  "frieza_second": {
    "src": "assets/namek-forms/frieza_second-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          146,
          256
        ]
      ],
      "attack": [
        [
          254,
          6,
          164,
          244
        ],
        [
          502,
          6,
          236,
          241
        ],
        [
          750,
          6,
          197,
          241
        ],
        [
          6,
          274,
          146,
          256
        ]
      ],
      "special": [
        [
          254,
          274,
          146,
          256
        ],
        [
          502,
          274,
          150,
          256
        ],
        [
          750,
          274,
          146,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          73.0,
          256
        ]
      ],
      "attack": [
        [
          82.0,
          244
        ],
        [
          118.0,
          241
        ],
        [
          98.5,
          241
        ],
        [
          73.0,
          256
        ]
      ],
      "special": [
        [
          73.0,
          256
        ],
        [
          75.0,
          256
        ],
        [
          73.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          102,
          102
        ],
        [
          90,
          9
        ],
        [
          102,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00071",
    "cardId": "1017160",
    "source": "https://dbz-dokkanbattle.com/card/1017161",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            337,
            191,
            503
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            189,
            332
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            193,
            334,
            406,
            492
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            213,
            316
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            158,
            308,
            314
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            306,
            312
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            316,
            257,
            472
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            255,
            312
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            337,
            191,
            503
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            189,
            332
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            337,
            191,
            503
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            189,
            332
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "sp01/sp_character_00071_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            578,
            492
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            576,
            983
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.26042726347914547
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00071.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            337,
            191,
            503
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            189,
            332
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.7710843373493976
        }
      ]
    }
  },
  "frieza_third": {
    "src": "assets/namek-forms/frieza_third-atlas-v2.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          194,
          256
        ]
      ],
      "attack": [
        [
          297,
          6,
          256,
          267
        ],
        [
          588,
          6,
          198,
          240
        ],
        [
          879,
          6,
          240,
          252
        ],
        [
          6,
          285,
          194,
          256
        ]
      ],
      "special": [
        [
          297,
          285,
          194,
          256
        ],
        [
          588,
          285,
          240,
          258
        ],
        [
          879,
          285,
          194,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          97.0,
          256
        ]
      ],
      "attack": [
        [
          128.0,
          267
        ],
        [
          99.0,
          240
        ],
        [
          120.0,
          252
        ],
        [
          97.0,
          256
        ]
      ],
      "special": [
        [
          97.0,
          256
        ],
        [
          120.0,
          258
        ],
        [
          97.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          136,
          102
        ],
        [
          236,
          70
        ],
        [
          136,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "01191",
    "cardId": "1022470",
    "source": "https://dbz-dokkanbattle.com/card/1022470",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Guard, melee and finger-release poses all come from the same battle_character_01191 LWF texture set, preserving one consistent original palette. The sp01 release artwork is excluded because it uses a different original palette. Representative poses, not the complete official animation timeline. No redraw, recolor or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            574,
            1,
            792,
            145
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            218,
            288
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            446,
            295,
            734,
            445
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            288,
            300
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            794,
            283,
            1018,
            418
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            224,
            270
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image3.png",
          "sourceRectPixels": [
            574,
            1,
            858,
            136
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            270,
            284
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            574,
            1,
            792,
            145
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            218,
            288
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            574,
            1,
            792,
            145
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            218,
            288
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        },
        {
          "kind": "attack",
          "fragment": 17,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            522,
            300,
            792,
            445
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            270,
            290
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_01191.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            574,
            1,
            792,
            145
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            218,
            288
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.8888888888888888
        }
      ]
    }
  },
  "frieza_final": {
    "src": "assets/namek-forms/frieza_final-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          96,
          256
        ]
      ],
      "attack": [
        [
          369,
          6,
          261,
          190
        ],
        [
          732,
          6,
          209,
          214
        ],
        [
          1095,
          6,
          205,
          241
        ],
        [
          6,
          274,
          96,
          256
        ]
      ],
      "special": [
        [
          369,
          274,
          96,
          256
        ],
        [
          732,
          274,
          351,
          256
        ],
        [
          1095,
          274,
          96,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          48.0,
          256
        ]
      ],
      "attack": [
        [
          130.5,
          190
        ],
        [
          104.5,
          214
        ],
        [
          102.5,
          241
        ],
        [
          48.0,
          256
        ]
      ],
      "special": [
        [
          48.0,
          256
        ],
        [
          175.5,
          256
        ],
        [
          48.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          67,
          102
        ],
        [
          344,
          82
        ],
        [
          67,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00068",
    "cardId": "1004420",
    "source": "https://dbz-dokkanbattle.com/card/1004420",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            106,
            80,
            210
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            78,
            207
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            546,
            280,
            700,
            386
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            211,
            154
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            504,
            90,
            673,
            176
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            169,
            173
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            410,
            168,
            507
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            166,
            195
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            106,
            80,
            210
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            78,
            207
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 48,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            106,
            80,
            210
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            78,
            207
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "sp01/sp_character_00068_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            672,
            246
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            670,
            489
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.523517382413088
        },
        {
          "kind": "attack",
          "fragment": 48,
          "sourceLwf": "battle/battle_character_00068.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            106,
            80,
            210
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            78,
            207
          ],
          "normalizedFlip": true,
          "scaleForDisplay": 1.2367149758454106
        }
      ]
    }
  },
  "frieza_fullpower": {
    "src": "assets/namek-forms/frieza_fullpower-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          208,
          256
        ]
      ],
      "attack": [
        [
          303,
          6,
          228,
          210
        ],
        [
          600,
          6,
          283,
          222
        ],
        [
          897,
          6,
          285,
          234
        ],
        [
          6,
          274,
          208,
          256
        ]
      ],
      "special": [
        [
          303,
          274,
          208,
          256
        ],
        [
          600,
          274,
          236,
          256
        ],
        [
          897,
          274,
          208,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          104.0,
          256
        ]
      ],
      "attack": [
        [
          114.0,
          210
        ],
        [
          141.5,
          222
        ],
        [
          142.5,
          234
        ],
        [
          104.0,
          256
        ]
      ],
      "special": [
        [
          104.0,
          256
        ],
        [
          118.0,
          256
        ],
        [
          104.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          146,
          102
        ],
        [
          217,
          31
        ],
        [
          146,
          102
        ]
      ]
    },
    "style": "dokkan",
    "pixelArt": false,
    "role": "form",
    "gameCharacterId": "00920",
    "cardId": "1022750",
    "source": "https://dbz-dokkanbattle.com/card/1022751",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original battle textures hosted by Dokkan Battle France",
    "notes": "Original full-body Dokkan textures extracted using exact LWF fragment rectangles and rotation, with proportional display scale and explicit facing normalization. Representative guard, melee and special-release poses; not a recreation of the complete official animation timeline. No redraw or palette replacement.",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            246,
            405,
            418,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            172,
            212
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            240,
            195,
            430,
            282
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            190,
            174
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            286,
            186,
            403
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            234,
            184
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image1.png",
          "sourceRectPixels": [
            244,
            97,
            480,
            194
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            236,
            194
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            246,
            405,
            418,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            172,
            212
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            246,
            405,
            418,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            172,
            212
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "sp01/sp_character_00920_01.lwf",
          "sourceTexture": "sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            554,
            300
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            552,
            598
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 0.4280936454849498
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "battle/battle_character_00920.lwf",
          "sourceTexture": "battle/lwf_image0.png",
          "sourceRectPixels": [
            246,
            405,
            418,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            172,
            212
          ],
          "normalizedFlip": false,
          "scaleForDisplay": 1.2075471698113207
        }
      ]
    }
  },
  "mecha_frieza": {
    "src": "assets/android/mecha_frieza-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          166,
          256
        ]
      ],
      "attack": [
        [
          270,
          6,
          252,
          200
        ],
        [
          534,
          6,
          231,
          244
        ],
        [
          798,
          6,
          233,
          260
        ],
        [
          6,
          278,
          166,
          256
        ]
      ],
      "special": [
        [
          270,
          278,
          166,
          256
        ],
        [
          534,
          278,
          164,
          256
        ],
        [
          798,
          278,
          166,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          83.0,
          256
        ]
      ],
      "attack": [
        [
          126.0,
          200
        ],
        [
          115.5,
          244
        ],
        [
          116.5,
          260
        ],
        [
          83.0,
          256
        ]
      ],
      "special": [
        [
          83.0,
          256
        ],
        [
          82.0,
          256
        ],
        [
          83.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          146,
          102
        ],
        [
          144,
          102
        ],
        [
          146,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00217",
    "cardId": "1030990",
    "source": "https://dbz-dokkanbattle.com/card/1030990",
    "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/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            891,
            410,
            1012,
            504
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
          "sourceRectPixels": [
            768,
            186,
            952,
            259
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            184,
            146
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
          "sourceRectPixels": [
            762,
            260,
            940,
            344
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            169,
            178
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
          "sourceRectPixels": [
            194,
            77,
            384,
            162
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            190
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            891,
            410,
            1012,
            504
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            891,
            410,
            1012,
            504
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/mecha_frieza/sp01/sp_character_00217_01.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            416,
            324
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            414,
            646
          ],
          "scaleForDisplay": 0.39628482972136225
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
          "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
          "sourceRectPixels": [
            891,
            410,
            1012,
            504
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "king_cold": {
    "src": "assets/android/king_cold-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          176,
          256
        ]
      ],
      "attack": [
        [
          329,
          6,
          202,
          239
        ],
        [
          652,
          6,
          265,
          238
        ],
        [
          975,
          6,
          258,
          241
        ],
        [
          6,
          274,
          176,
          256
        ]
      ],
      "special": [
        [
          329,
          274,
          176,
          256
        ],
        [
          652,
          274,
          311,
          256
        ],
        [
          975,
          274,
          176,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          88.0,
          256
        ]
      ],
      "attack": [
        [
          101.0,
          239
        ],
        [
          132.5,
          238
        ],
        [
          129.0,
          241
        ],
        [
          88.0,
          256
        ]
      ],
      "special": [
        [
          88.0,
          256
        ],
        [
          155.5,
          256
        ],
        [
          88.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          155,
          102
        ],
        [
          274,
          102
        ],
        [
          155,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00213",
    "cardId": "1024040",
    "source": "https://dbz-dokkanbattle.com/card/1024040",
    "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/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
          "sourceRectPixels": [
            780,
            166,
            1013,
            335
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            233,
            338
          ],
          "scaleForDisplay": 0.757396449704142
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image0.png",
          "sourceRectPixels": [
            586,
            160,
            902,
            294
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            267,
            316
          ],
          "scaleForDisplay": 0.757396449704142
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            336,
            316,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            350,
            314
          ],
          "scaleForDisplay": 0.757396449704142
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            345,
            343,
            504
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            341,
            318
          ],
          "scaleForDisplay": 0.757396449704142
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
          "sourceRectPixels": [
            780,
            166,
            1013,
            335
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            233,
            338
          ],
          "scaleForDisplay": 0.757396449704142
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
          "sourceRectPixels": [
            780,
            166,
            1013,
            335
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            233,
            338
          ],
          "scaleForDisplay": 0.757396449704142
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/king_cold/sp01/sp_character_00213_01.lwf",
          "sourceTexture": "source-assets/android/king_cold/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            1014,
            417
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            1012,
            832
          ],
          "scaleForDisplay": 0.3076923076923077
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
          "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
          "sourceRectPixels": [
            780,
            166,
            1013,
            335
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            233,
            338
          ],
          "scaleForDisplay": 0.757396449704142
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "android16": {
    "src": "assets/android/android16-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          139,
          256
        ]
      ],
      "attack": [
        [
          302,
          6,
          245,
          196
        ],
        [
          598,
          6,
          213,
          234
        ],
        [
          894,
          6,
          284,
          240
        ],
        [
          6,
          274,
          139,
          256
        ]
      ],
      "special": [
        [
          302,
          274,
          139,
          256
        ],
        [
          598,
          274,
          262,
          256
        ],
        [
          894,
          274,
          139,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          69.5,
          256
        ]
      ],
      "attack": [
        [
          122.5,
          196
        ],
        [
          106.5,
          234
        ],
        [
          142.0,
          240
        ],
        [
          69.5,
          256
        ]
      ],
      "special": [
        [
          69.5,
          256
        ],
        [
          131.0,
          256
        ],
        [
          69.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          122,
          102
        ],
        [
          231,
          102
        ],
        [
          122,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00022",
    "cardId": "1001270",
    "source": "https://dbz-dokkanbattle.com/card/1001270",
    "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/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
          "sourceRectPixels": [
            288,
            439,
            554,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            144,
            266
          ],
          "scaleForDisplay": 0.9660377358490566
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image2.png",
          "sourceRectPixels": [
            144,
            1,
            348,
            128
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            254,
            204
          ],
          "scaleForDisplay": 0.9660377358490566
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image2.png",
          "sourceRectPixels": [
            434,
            381,
            654,
            502
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            220,
            242
          ],
          "scaleForDisplay": 0.9660377358490566
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            296,
            125
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            294,
            248
          ],
          "scaleForDisplay": 0.9660377358490566
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
          "sourceRectPixels": [
            288,
            439,
            554,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            144,
            266
          ],
          "scaleForDisplay": 0.9660377358490566
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
          "sourceRectPixels": [
            288,
            439,
            554,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            144,
            266
          ],
          "scaleForDisplay": 0.9660377358490566
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "source-assets/android/android16/sp01/sp_character_00022_01.lwf",
          "sourceTexture": "source-assets/android/android16/sp01/lwf_image1.png",
          "sourceRectPixels": [
            596,
            138,
            864,
            269
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            268,
            262
          ],
          "scaleForDisplay": 0.9770992366412213
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
          "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
          "sourceRectPixels": [
            288,
            439,
            554,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            144,
            266
          ],
          "scaleForDisplay": 0.9660377358490566
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "android17": {
    "src": "assets/android/android17-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          122,
          256
        ]
      ],
      "attack": [
        [
          256,
          6,
          173,
          260
        ],
        [
          506,
          6,
          238,
          258
        ],
        [
          756,
          6,
          208,
          257
        ],
        [
          6,
          278,
          122,
          256
        ]
      ],
      "special": [
        [
          256,
          278,
          122,
          256
        ],
        [
          506,
          278,
          185,
          256
        ],
        [
          756,
          278,
          122,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          61.0,
          256
        ]
      ],
      "attack": [
        [
          86.5,
          260
        ],
        [
          119.0,
          258
        ],
        [
          104.0,
          257
        ],
        [
          61.0,
          256
        ]
      ],
      "special": [
        [
          61.0,
          256
        ],
        [
          92.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": [
        [
          107,
          102
        ],
        [
          163,
          102
        ],
        [
          107,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00021",
    "cardId": "1001250",
    "source": "https://dbz-dokkanbattle.com/card/1001250",
    "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/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            812,
            460,
            1021,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            100,
            209
          ],
          "scaleForDisplay": 1.2248803827751196
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            616,
            244,
            828,
            315
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            141,
            212
          ],
          "scaleForDisplay": 1.2248803827751196
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            428,
            76,
            622,
            181
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            194,
            211
          ],
          "scaleForDisplay": 1.2248803827751196
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            600,
            400,
            810,
            485
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            210
          ],
          "scaleForDisplay": 1.2248803827751196
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            812,
            460,
            1021,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            100,
            209
          ],
          "scaleForDisplay": 1.2248803827751196
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            812,
            460,
            1021,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            100,
            209
          ],
          "scaleForDisplay": 1.2248803827751196
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/android17/sp01/sp_character_00021_01.lwf",
          "sourceTexture": "source-assets/android/android17/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            425,
            294
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            423,
            585
          ],
          "scaleForDisplay": 0.4376068376068376
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
          "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
          "sourceRectPixels": [
            812,
            460,
            1021,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            100,
            209
          ],
          "scaleForDisplay": 1.2248803827751196
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "android18": {
    "src": "assets/android/android18-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          112,
          256
        ]
      ],
      "attack": [
        [
          175,
          6,
          134,
          216
        ],
        [
          344,
          6,
          157,
          226
        ],
        [
          513,
          6,
          149,
          243
        ],
        [
          6,
          274,
          112,
          256
        ]
      ],
      "special": [
        [
          175,
          274,
          112,
          256
        ],
        [
          344,
          274,
          117,
          256
        ],
        [
          513,
          274,
          112,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          56.0,
          256
        ]
      ],
      "attack": [
        [
          67.0,
          216
        ],
        [
          78.5,
          226
        ],
        [
          74.5,
          243
        ],
        [
          56.0,
          256
        ]
      ],
      "special": [
        [
          56.0,
          256
        ],
        [
          58.5,
          256
        ],
        [
          56.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          99,
          102
        ],
        [
          103,
          102
        ],
        [
          99,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00020",
    "cardId": "1001260",
    "source": "https://dbz-dokkanbattle.com/card/1001260",
    "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/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            239,
            404,
            332,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            93,
            212
          ],
          "scaleForDisplay": 1.2075471698113207
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            181,
            56
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            111,
            179
          ],
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            694,
            398,
            824,
            492
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            130,
            187
          ],
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            460,
            1,
            583,
            102
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            123,
            201
          ],
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            239,
            404,
            332,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            93,
            212
          ],
          "scaleForDisplay": 1.2075471698113207
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            239,
            404,
            332,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            93,
            212
          ],
          "scaleForDisplay": 1.2075471698113207
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/android18/sp01/sp_character_00020_01.lwf",
          "sourceTexture": "source-assets/android/android18/sp01/lwf_image0.png",
          "sourceRectPixels": [
            302,
            1,
            599,
            326
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            297,
            649
          ],
          "scaleForDisplay": 0.39445300462249616
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
          "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
          "sourceRectPixels": [
            239,
            404,
            332,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            93,
            212
          ],
          "scaleForDisplay": 1.2075471698113207
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "android19": {
    "src": "assets/android/android19-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          171,
          256
        ]
      ],
      "attack": [
        [
          239,
          6,
          176,
          244
        ],
        [
          472,
          6,
          219,
          240
        ],
        [
          705,
          6,
          221,
          245
        ],
        [
          6,
          274,
          171,
          256
        ]
      ],
      "special": [
        [
          239,
          274,
          171,
          256
        ],
        [
          472,
          274,
          168,
          256
        ],
        [
          705,
          274,
          171,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          85.5,
          256
        ]
      ],
      "attack": [
        [
          88.0,
          244
        ],
        [
          109.5,
          240
        ],
        [
          110.5,
          245
        ],
        [
          85.5,
          256
        ]
      ],
      "special": [
        [
          85.5,
          256
        ],
        [
          84.0,
          256
        ],
        [
          85.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          150,
          102
        ],
        [
          148,
          102
        ],
        [
          150,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00018",
    "cardId": "1001230",
    "source": "https://dbz-dokkanbattle.com/card/1001230",
    "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/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
          "sourceRectPixels": [
            383,
            76,
            616,
            154
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            233
          ],
          "scaleForDisplay": 1.0987124463519313
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
          "sourceRectPixels": [
            430,
            176,
            590,
            288
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            160,
            222
          ],
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
          "sourceRectPixels": [
            205,
            295,
            404,
            404
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            199,
            218
          ],
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            188,
            203,
            300
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            201,
            223
          ],
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
          "sourceRectPixels": [
            383,
            76,
            616,
            154
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            233
          ],
          "scaleForDisplay": 1.0987124463519313
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
          "sourceRectPixels": [
            383,
            76,
            616,
            154
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            233
          ],
          "scaleForDisplay": 1.0987124463519313
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/android19/sp01/sp_character_00018_01.lwf",
          "sourceTexture": "source-assets/android/android19/sp01/lwf_image0.png",
          "sourceRectPixels": [
            460,
            1,
            916,
            349
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            456,
            696
          ],
          "scaleForDisplay": 0.367816091954023
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
          "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
          "sourceRectPixels": [
            383,
            76,
            616,
            154
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            233
          ],
          "scaleForDisplay": 1.0987124463519313
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "dr_gero": {
    "src": "assets/android/dr_gero-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          199,
          256
        ]
      ],
      "attack": [
        [
          270,
          6,
          170,
          247
        ],
        [
          534,
          6,
          252,
          238
        ],
        [
          798,
          6,
          235,
          244
        ],
        [
          6,
          274,
          199,
          256
        ]
      ],
      "special": [
        [
          270,
          274,
          199,
          256
        ],
        [
          534,
          274,
          236,
          256
        ],
        [
          798,
          274,
          199,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          99.5,
          256
        ]
      ],
      "attack": [
        [
          85.0,
          247
        ],
        [
          126.0,
          238
        ],
        [
          117.5,
          244
        ],
        [
          99.5,
          256
        ]
      ],
      "special": [
        [
          99.5,
          256
        ],
        [
          118.0,
          256
        ],
        [
          99.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          175,
          102
        ],
        [
          208,
          102
        ],
        [
          175,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00019",
    "cardId": "1001240",
    "source": "https://dbz-dokkanbattle.com/card/1001240",
    "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/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            334,
            427,
            542,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            162,
            208
          ],
          "scaleForDisplay": 1.2307692307692308
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            602,
            1,
            740,
            102
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            138,
            201
          ],
          "scaleForDisplay": 1.2307692307692308
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image0.png",
          "sourceRectPixels": [
            215,
            310,
            420,
            406
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            205,
            193
          ],
          "scaleForDisplay": 1.2307692307692308
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            769,
            98,
            960,
            198
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            191,
            198
          ],
          "scaleForDisplay": 1.2307692307692308
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            334,
            427,
            542,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            162,
            208
          ],
          "scaleForDisplay": 1.2307692307692308
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            334,
            427,
            542,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            162,
            208
          ],
          "scaleForDisplay": 1.2307692307692308
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/dr_gero/sp01/sp_character_00019_01.lwf",
          "sourceTexture": "source-assets/android/dr_gero/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            550,
            298
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            548,
            595
          ],
          "scaleForDisplay": 0.43025210084033616
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
          "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
          "sourceRectPixels": [
            334,
            427,
            542,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            162,
            208
          ],
          "scaleForDisplay": 1.2307692307692308
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell": {
    "src": "assets/android/cell-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          213,
          256
        ]
      ],
      "attack": [
        [
          302,
          6,
          241,
          214
        ],
        [
          598,
          6,
          261,
          251
        ],
        [
          894,
          6,
          284,
          252
        ],
        [
          6,
          274,
          213,
          256
        ]
      ],
      "special": [
        [
          302,
          274,
          213,
          256
        ],
        [
          598,
          274,
          224,
          256
        ],
        [
          894,
          274,
          213,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          106.5,
          256
        ]
      ],
      "attack": [
        [
          120.5,
          214
        ],
        [
          130.5,
          251
        ],
        [
          142.0,
          252
        ],
        [
          106.5,
          256
        ]
      ],
      "special": [
        [
          106.5,
          256
        ],
        [
          112.0,
          256
        ],
        [
          106.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          187,
          102
        ],
        [
          197,
          102
        ],
        [
          187,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00006",
    "cardId": "1000070",
    "source": "https://dbz-dokkanbattle.com/card/1000070",
    "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/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            270,
            288,
            390
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            238,
            286
          ],
          "scaleForDisplay": 0.8951048951048951
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image3.png",
          "sourceRectPixels": [
            606,
            121,
            875,
            240
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            269,
            239
          ],
          "scaleForDisplay": 0.8951048951048951
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
          "sourceRectPixels": [
            326,
            1,
            618,
            141
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            292,
            280
          ],
          "scaleForDisplay": 0.8951048951048951
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            319,
            142
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            317,
            281
          ],
          "scaleForDisplay": 0.8951048951048951
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            270,
            288,
            390
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            238,
            286
          ],
          "scaleForDisplay": 0.8951048951048951
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            270,
            288,
            390
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            238,
            286
          ],
          "scaleForDisplay": 0.8951048951048951
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/cell/sp01/sp_character_00006_01.lwf",
          "sourceTexture": "source-assets/android/cell/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            841,
            480
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            839,
            957
          ],
          "scaleForDisplay": 0.26750261233019856
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
          "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            270,
            288,
            390
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            238,
            286
          ],
          "scaleForDisplay": 0.8951048951048951
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell_second": {
    "src": "assets/android/cell_second-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          152,
          256
        ]
      ],
      "attack": [
        [
          302,
          6,
          209,
          229
        ],
        [
          598,
          6,
          284,
          233
        ],
        [
          894,
          6,
          205,
          252
        ],
        [
          6,
          274,
          152,
          256
        ]
      ],
      "special": [
        [
          302,
          274,
          152,
          256
        ],
        [
          598,
          274,
          217,
          256
        ],
        [
          894,
          274,
          152,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          76.0,
          256
        ]
      ],
      "attack": [
        [
          104.5,
          229
        ],
        [
          142.0,
          233
        ],
        [
          102.5,
          252
        ],
        [
          76.0,
          256
        ]
      ],
      "special": [
        [
          76.0,
          256
        ],
        [
          108.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": [
        [
          134,
          102
        ],
        [
          191,
          102
        ],
        [
          134,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00204",
    "cardId": "1001710",
    "source": "https://dbz-dokkanbattle.com/card/1001710",
    "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/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
          "sourceRectPixels": [
            534,
            328,
            748,
            508
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            214,
            360
          ],
          "scaleForDisplay": 0.7111111111111111
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image0.png",
          "sourceRectPixels": [
            698,
            335,
            1020,
            482
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            294,
            322
          ],
          "scaleForDisplay": 0.7111111111111111
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            306,
            329,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            399,
            327
          ],
          "scaleForDisplay": 0.7111111111111111
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image3.png",
          "sourceRectPixels": [
            329,
            272,
            683,
            416
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            288,
            354
          ],
          "scaleForDisplay": 0.7111111111111111
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
          "sourceRectPixels": [
            534,
            328,
            748,
            508
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            214,
            360
          ],
          "scaleForDisplay": 0.7111111111111111
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
          "sourceRectPixels": [
            534,
            328,
            748,
            508
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            214,
            360
          ],
          "scaleForDisplay": 0.7111111111111111
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/cell_second/sp01/sp_character_00204_01.lwf",
          "sourceTexture": "source-assets/android/cell_second/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            828,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            826,
            974
          ],
          "scaleForDisplay": 0.26283367556468173
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
          "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
          "sourceRectPixels": [
            534,
            328,
            748,
            508
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            214,
            360
          ],
          "scaleForDisplay": 0.7111111111111111
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell_perfect": {
    "src": "assets/android/cell_perfect-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          94,
          256
        ]
      ],
      "attack": [
        [
          258,
          6,
          180,
          224
        ],
        [
          510,
          6,
          207,
          230
        ],
        [
          762,
          6,
          199,
          254
        ],
        [
          6,
          274,
          94,
          256
        ]
      ],
      "special": [
        [
          258,
          274,
          94,
          256
        ],
        [
          510,
          274,
          240,
          256
        ],
        [
          762,
          274,
          94,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          47.0,
          256
        ]
      ],
      "attack": [
        [
          90.0,
          224
        ],
        [
          103.5,
          230
        ],
        [
          99.5,
          254
        ],
        [
          47.0,
          256
        ]
      ],
      "special": [
        [
          47.0,
          256
        ],
        [
          120.0,
          256
        ],
        [
          47.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          83,
          102
        ],
        [
          211,
          102
        ],
        [
          83,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00205",
    "cardId": "1001720",
    "source": "https://dbz-dokkanbattle.com/card/1001720",
    "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/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            324,
            120,
            484
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            118,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            292,
            228,
            432
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            226,
            281
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            261,
            146
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            259,
            289
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            169,
            1,
            418,
            160
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            249,
            318
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            324,
            120,
            484
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            118,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            324,
            120,
            484
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            118,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/cell_perfect/sp01/sp_character_00205_01.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            806,
            430
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            804,
            858
          ],
          "scaleForDisplay": 0.29836829836829837
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
          "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            324,
            120,
            484
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            118,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell_superperfect": {
    "src": "assets/android/cell_superperfect-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          127,
          256
        ]
      ],
      "attack": [
        [
          285,
          6,
          194,
          236
        ],
        [
          564,
          6,
          189,
          211
        ],
        [
          843,
          6,
          189,
          234
        ],
        [
          6,
          274,
          127,
          256
        ]
      ],
      "special": [
        [
          285,
          274,
          127,
          256
        ],
        [
          564,
          274,
          267,
          256
        ],
        [
          843,
          274,
          127,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          63.5,
          256
        ]
      ],
      "attack": [
        [
          97.0,
          236
        ],
        [
          94.5,
          211
        ],
        [
          94.5,
          234
        ],
        [
          63.5,
          256
        ]
      ],
      "special": [
        [
          63.5,
          256
        ],
        [
          133.5,
          256
        ],
        [
          63.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          112,
          102
        ],
        [
          235,
          102
        ],
        [
          112,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00202",
    "cardId": "1003760",
    "source": "https://dbz-dokkanbattle.com/card/1003760",
    "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/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            187,
            188
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            185,
            373
          ],
          "scaleForDisplay": 0.6863270777479893
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            178,
            284,
            350
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            282,
            344
          ],
          "scaleForDisplay": 0.6863270777479893
        },
        {
          "kind": "attack",
          "fragment": 28,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image2.png",
          "sourceRectPixels": [
            746,
            162,
            1022,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            276,
            308
          ],
          "scaleForDisplay": 0.6863270777479893
        },
        {
          "kind": "attack",
          "fragment": 37,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image2.png",
          "sourceRectPixels": [
            134,
            180,
            409,
            350
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            275,
            341
          ],
          "scaleForDisplay": 0.6863270777479893
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            187,
            188
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            185,
            373
          ],
          "scaleForDisplay": 0.6863270777479893
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            187,
            188
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            185,
            373
          ],
          "scaleForDisplay": 0.6863270777479893
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/cell_superperfect/sp01/sp_character_00202_01.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            952,
            456
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            950,
            910
          ],
          "scaleForDisplay": 0.2813186813186813
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
          "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            187,
            188
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            185,
            373
          ],
          "scaleForDisplay": 0.6863270777479893
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell_jr": {
    "src": "assets/android/cell_jr-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          274,
          256
        ]
      ],
      "attack": [
        [
          376,
          6,
          292,
          233
        ],
        [
          746,
          6,
          358,
          284
        ],
        [
          1116,
          6,
          310,
          248
        ],
        [
          6,
          302,
          274,
          256
        ]
      ],
      "special": [
        [
          376,
          302,
          274,
          256
        ],
        [
          746,
          302,
          247,
          256
        ],
        [
          1116,
          302,
          274,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          137.0,
          256
        ]
      ],
      "attack": [
        [
          146.0,
          233
        ],
        [
          179.0,
          284
        ],
        [
          155.0,
          248
        ],
        [
          137.0,
          256
        ]
      ],
      "special": [
        [
          137.0,
          256
        ],
        [
          123.5,
          256
        ],
        [
          137.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          241,
          102
        ],
        [
          217,
          102
        ],
        [
          241,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00040",
    "cardId": "1000660",
    "source": "https://dbz-dokkanbattle.com/card/1000660",
    "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/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            686,
            282,
            793,
            332
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            107,
            100
          ],
          "scaleForDisplay": 2.56
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            783,
            162,
            874,
            219
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            114,
            91
          ],
          "scaleForDisplay": 2.56
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            364,
            1,
            504,
            56
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            140,
            111
          ],
          "scaleForDisplay": 2.56
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            506,
            64,
            627,
            113
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            97
          ],
          "scaleForDisplay": 2.56
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            686,
            282,
            793,
            332
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            107,
            100
          ],
          "scaleForDisplay": 2.56
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            686,
            282,
            793,
            332
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            107,
            100
          ],
          "scaleForDisplay": 2.56
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/cell_jr/sp01/sp_character_00040_01.lwf",
          "sourceTexture": "source-assets/android/cell_jr/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            163,
            348,
            330
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            334,
            346
          ],
          "scaleForDisplay": 0.7398843930635838
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
          "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
          "sourceRectPixels": [
            686,
            282,
            793,
            332
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            107,
            100
          ],
          "scaleForDisplay": 2.56
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "hercule": {
    "src": "assets/android/hercule-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          244,
          256
        ]
      ],
      "attack": [
        [
          355,
          6,
          280,
          273
        ],
        [
          704,
          6,
          279,
          273
        ],
        [
          1053,
          6,
          337,
          264
        ],
        [
          6,
          291,
          244,
          256
        ]
      ],
      "special": [
        [
          355,
          291,
          244,
          256
        ],
        [
          704,
          291,
          324,
          256
        ],
        [
          1053,
          291,
          244,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          122.0,
          256
        ]
      ],
      "attack": [
        [
          140.0,
          273
        ],
        [
          139.5,
          273
        ],
        [
          168.5,
          264
        ],
        [
          122.0,
          256
        ]
      ],
      "special": [
        [
          122.0,
          256
        ],
        [
          162.0,
          256
        ],
        [
          122.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          215,
          102
        ],
        [
          285,
          102
        ],
        [
          215,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00226",
    "cardId": "1000820",
    "source": "https://dbz-dokkanbattle.com/card/1000820",
    "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/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            217,
            104
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            205,
            215
          ],
          "scaleForDisplay": 1.1906976744186046
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            210,
            237,
            325
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            235,
            229
          ],
          "scaleForDisplay": 1.1906976744186046
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image2.png",
          "sourceRectPixels": [
            742,
            212,
            976,
            326
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            234,
            229
          ],
          "scaleForDisplay": 1.1906976744186046
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            243,
            224,
            384
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            283,
            222
          ],
          "scaleForDisplay": 1.1906976744186046
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            217,
            104
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            205,
            215
          ],
          "scaleForDisplay": 1.1906976744186046
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            217,
            104
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            205,
            215
          ],
          "scaleForDisplay": 1.1906976744186046
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "source-assets/android/hercule/sp01/sp_character_00226_01.lwf",
          "sourceTexture": "source-assets/android/hercule/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            984,
            389
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            982,
            776
          ],
          "scaleForDisplay": 0.32989690721649484
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
          "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
          "sourceRectPixels": [
            2,
            1,
            217,
            104
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            205,
            215
          ],
          "scaleForDisplay": 1.1906976744186046
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "trunks_future": {
    "src": "assets/android/trunks_future-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          156,
          256
        ]
      ],
      "attack": [
        [
          270,
          6,
          226,
          206
        ],
        [
          534,
          6,
          191,
          259
        ],
        [
          798,
          6,
          252,
          233
        ],
        [
          6,
          277,
          156,
          256
        ]
      ],
      "special": [
        [
          270,
          277,
          156,
          256
        ],
        [
          534,
          277,
          234,
          256
        ],
        [
          798,
          277,
          156,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          78.0,
          256
        ]
      ],
      "attack": [
        [
          113.0,
          206
        ],
        [
          95.5,
          259
        ],
        [
          126.0,
          233
        ],
        [
          78.0,
          256
        ]
      ],
      "special": [
        [
          78.0,
          256
        ],
        [
          117.0,
          256
        ],
        [
          78.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          137,
          102
        ],
        [
          206,
          102
        ],
        [
          137,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00211",
    "cardId": "1001860",
    "source": "https://dbz-dokkanbattle.com/card/1001860",
    "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/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            105,
            126,
            207
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            124,
            204
          ],
          "scaleForDisplay": 1.2549019607843137
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            620,
            192,
            784,
            282
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            180,
            164
          ],
          "scaleForDisplay": 1.2549019607843137
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image0.png",
          "sourceRectPixels": [
            770,
            424,
            976,
            500
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            152,
            206
          ],
          "scaleForDisplay": 1.2549019607843137
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            410,
            188,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            201,
            186
          ],
          "scaleForDisplay": 1.2549019607843137
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            105,
            126,
            207
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            124,
            204
          ],
          "scaleForDisplay": 1.2549019607843137
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            105,
            126,
            207
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            124,
            204
          ],
          "scaleForDisplay": 1.2549019607843137
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/trunks_future/sp01/sp_character_00211_01.lwf",
          "sourceTexture": "source-assets/android/trunks_future/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            552,
            302
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            550,
            601
          ],
          "scaleForDisplay": 0.4259567387687188
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
          "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            105,
            126,
            207
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            124,
            204
          ],
          "scaleForDisplay": 1.2549019607843137
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "trunks_ssj": {
    "src": "assets/android/trunks_ssj-atlas-v2.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          146,
          256
        ]
      ],
      "attack": [
        [
          256,
          6,
          181,
          265
        ],
        [
          506,
          6,
          218,
          214
        ],
        [
          756,
          6,
          238,
          237
        ],
        [
          6,
          283,
          146,
          256
        ]
      ],
      "special": [
        [
          256,
          283,
          146,
          256
        ],
        [
          506,
          283,
          204,
          249
        ],
        [
          756,
          283,
          146,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          73.0,
          256
        ]
      ],
      "attack": [
        [
          90.5,
          265
        ],
        [
          109.0,
          214
        ],
        [
          119.0,
          237
        ],
        [
          73.0,
          256
        ]
      ],
      "special": [
        [
          73.0,
          256
        ],
        [
          102.0,
          249
        ],
        [
          73.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          128,
          102
        ],
        [
          180,
          100
        ],
        [
          128,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "01345",
    "cardId": "1026991",
    "source": "https://dbz-dokkanbattle.com/card/1026991",
    "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/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            449,
            220,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            124,
            218
          ],
          "scaleForDisplay": 1.1743119266055047
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            205,
            156,
            318
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            154,
            226
          ],
          "scaleForDisplay": 1.1743119266055047
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            364,
            184,
            550,
            275
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            186,
            182
          ],
          "scaleForDisplay": 1.1743119266055047
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            103,
            206,
            204
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            204,
            202
          ],
          "scaleForDisplay": 1.1743119266055047
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            449,
            220,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            124,
            218
          ],
          "scaleForDisplay": 1.1743119266055047
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            449,
            220,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            124,
            218
          ],
          "scaleForDisplay": 1.1743119266055047
        },
        {
          "kind": "attack",
          "fragment": 0,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            848,
            342,
            1022,
            448
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            174,
            212
          ],
          "scaleForDisplay": 1.1743119266055047
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
          "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            449,
            220,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            124,
            218
          ],
          "scaleForDisplay": 1.1743119266055047
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "trunks_super": {
    "src": "assets/android/trunks_super-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          150,
          256
        ]
      ],
      "attack": [
        [
          241,
          6,
          215,
          229
        ],
        [
          476,
          6,
          223,
          252
        ],
        [
          711,
          6,
          210,
          226
        ],
        [
          6,
          274,
          150,
          256
        ]
      ],
      "special": [
        [
          241,
          274,
          150,
          256
        ],
        [
          476,
          274,
          164,
          256
        ],
        [
          711,
          274,
          150,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          75.0,
          256
        ]
      ],
      "attack": [
        [
          107.5,
          229
        ],
        [
          111.5,
          252
        ],
        [
          105.0,
          226
        ],
        [
          75.0,
          256
        ]
      ],
      "special": [
        [
          75.0,
          256
        ],
        [
          82.0,
          256
        ],
        [
          75.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          132,
          102
        ],
        [
          144,
          102
        ],
        [
          132,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00208",
    "cardId": "1009780",
    "source": "https://dbz-dokkanbattle.com/card/1009780",
    "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/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            264,
            150,
            390
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            148,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            116,
            228,
            222
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            212,
            226
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image0.png",
          "sourceRectPixels": [
            226,
            326,
            475,
            436
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            220,
            249
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            222,
            225,
            326
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            208,
            223
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            264,
            150,
            390
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            148,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            264,
            150,
            390
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            148,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/trunks_super/sp01/sp_character_00208_01.lwf",
          "sourceTexture": "source-assets/android/trunks_super/sp01/lwf_image0.png",
          "sourceRectPixels": [
            447,
            1,
            889,
            346
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            442,
            689
          ],
          "scaleForDisplay": 0.37155297532656023
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
          "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            264,
            150,
            390
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            148,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "gohan_teen": {
    "src": "assets/android/gohan_teen-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          135,
          256
        ]
      ],
      "attack": [
        [
          231,
          6,
          213,
          207
        ],
        [
          456,
          6,
          180,
          271
        ],
        [
          681,
          6,
          189,
          246
        ],
        [
          6,
          289,
          135,
          256
        ]
      ],
      "special": [
        [
          231,
          289,
          135,
          256
        ],
        [
          456,
          289,
          180,
          256
        ],
        [
          681,
          289,
          135,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          67.5,
          256
        ]
      ],
      "attack": [
        [
          106.5,
          207
        ],
        [
          90.0,
          271
        ],
        [
          94.5,
          246
        ],
        [
          67.5,
          256
        ]
      ],
      "special": [
        [
          67.5,
          256
        ],
        [
          90.0,
          256
        ],
        [
          67.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          119,
          102
        ],
        [
          158,
          102
        ],
        [
          119,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00322",
    "cardId": "1002870",
    "source": "https://dbz-dokkanbattle.com/card/1002870",
    "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/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            355,
            402,
            446,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            91,
            172
          ],
          "scaleForDisplay": 1.4883720930232558
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            747,
            384,
            890,
            453
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            143,
            139
          ],
          "scaleForDisplay": 1.4883720930232558
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            149,
            266,
            270,
            358
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            121,
            182
          ],
          "scaleForDisplay": 1.4883720930232558
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            282,
            129,
            364
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            127,
            165
          ],
          "scaleForDisplay": 1.4883720930232558
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            355,
            402,
            446,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            91,
            172
          ],
          "scaleForDisplay": 1.4883720930232558
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            355,
            402,
            446,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            91,
            172
          ],
          "scaleForDisplay": 1.4883720930232558
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/gohan_teen/sp01/sp_character_00322_01.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            458,
            162
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            321,
            456
          ],
          "scaleForDisplay": 0.5614035087719298
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
          "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
          "sourceRectPixels": [
            355,
            402,
            446,
            488
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            91,
            172
          ],
          "scaleForDisplay": 1.4883720930232558
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "gohan_teen_ssj": {
    "src": "assets/android/gohan_teen_ssj-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          136,
          256
        ]
      ],
      "attack": [
        [
          257,
          6,
          214,
          209
        ],
        [
          508,
          6,
          177,
          259
        ],
        [
          759,
          6,
          196,
          248
        ],
        [
          6,
          277,
          136,
          256
        ]
      ],
      "special": [
        [
          257,
          277,
          136,
          256
        ],
        [
          508,
          277,
          239,
          256
        ],
        [
          759,
          277,
          136,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          68.0,
          256
        ]
      ],
      "attack": [
        [
          107.0,
          209
        ],
        [
          88.5,
          259
        ],
        [
          98.0,
          248
        ],
        [
          68.0,
          256
        ]
      ],
      "special": [
        [
          68.0,
          256
        ],
        [
          119.5,
          256
        ],
        [
          68.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          120,
          102
        ],
        [
          210,
          102
        ],
        [
          120,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00199",
    "cardId": "1004690",
    "source": "https://dbz-dokkanbattle.com/card/1004690",
    "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/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            79,
            83,
            156
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            81,
            153
          ],
          "scaleForDisplay": 1.673202614379085
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            619,
            388,
            747,
            450
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            128,
            125
          ],
          "scaleForDisplay": 1.673202614379085
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            910,
            336,
            1016,
            414
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            106,
            155
          ],
          "scaleForDisplay": 1.673202614379085
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            357,
            161,
            474,
            235
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            117,
            148
          ],
          "scaleForDisplay": 1.673202614379085
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            79,
            83,
            156
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            81,
            153
          ],
          "scaleForDisplay": 1.673202614379085
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            79,
            83,
            156
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            81,
            153
          ],
          "scaleForDisplay": 1.673202614379085
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/sp01/sp_character_00199_01.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            431,
            231
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            429,
            460
          ],
          "scaleForDisplay": 0.5565217391304348
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            79,
            83,
            156
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            81,
            153
          ],
          "scaleForDisplay": 1.673202614379085
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "gohan_teen_ssj2": {
    "src": "assets/android/gohan_teen_ssj2-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          114,
          256
        ]
      ],
      "attack": [
        [
          258,
          6,
          209,
          256
        ],
        [
          510,
          6,
          228,
          253
        ],
        [
          762,
          6,
          240,
          236
        ],
        [
          6,
          274,
          114,
          256
        ]
      ],
      "special": [
        [
          258,
          274,
          114,
          256
        ],
        [
          510,
          274,
          186,
          256
        ],
        [
          762,
          274,
          114,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          57.0,
          256
        ]
      ],
      "attack": [
        [
          104.5,
          256
        ],
        [
          114.0,
          253
        ],
        [
          120.0,
          236
        ],
        [
          57.0,
          256
        ]
      ],
      "special": [
        [
          57.0,
          256
        ],
        [
          93.0,
          256
        ],
        [
          57.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          100,
          102
        ],
        [
          164,
          102
        ],
        [
          100,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00203",
    "cardId": "1004740",
    "source": "https://dbz-dokkanbattle.com/card/1004740",
    "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/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            865,
            351,
            1022,
            386
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            157
          ],
          "scaleForDisplay": 1.6305732484076434
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            594,
            250,
            751,
            314
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            128,
            157
          ],
          "scaleForDisplay": 1.6305732484076434
        },
        {
          "kind": "attack",
          "fragment": 28,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            864,
            387,
            1019,
            457
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            140,
            155
          ],
          "scaleForDisplay": 1.6305732484076434
        },
        {
          "kind": "attack",
          "fragment": 37,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            304,
            438,
            451,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            147,
            145
          ],
          "scaleForDisplay": 1.6305732484076434
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            865,
            351,
            1022,
            386
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            157
          ],
          "scaleForDisplay": 1.6305732484076434
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            865,
            351,
            1022,
            386
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            157
          ],
          "scaleForDisplay": 1.6305732484076434
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/sp01/sp_character_00203_01.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/sp01/lwf_image0.png",
          "sourceRectPixels": [
            475,
            1,
            935,
            318
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            460,
            634
          ],
          "scaleForDisplay": 0.4037854889589905
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
          "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
          "sourceRectPixels": [
            865,
            351,
            1022,
            386
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            70,
            157
          ],
          "scaleForDisplay": 1.6305732484076434
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "gohan_future": {
    "src": "assets/android/gohan_future-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          174,
          256
        ]
      ],
      "attack": [
        [
          299,
          6,
          249,
          200
        ],
        [
          592,
          6,
          216,
          269
        ],
        [
          885,
          6,
          281,
          248
        ],
        [
          6,
          287,
          174,
          256
        ]
      ],
      "special": [
        [
          299,
          287,
          174,
          256
        ],
        [
          592,
          287,
          263,
          256
        ],
        [
          885,
          287,
          174,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          87.0,
          256
        ]
      ],
      "attack": [
        [
          124.5,
          200
        ],
        [
          108.0,
          269
        ],
        [
          140.5,
          248
        ],
        [
          87.0,
          256
        ]
      ],
      "special": [
        [
          87.0,
          256
        ],
        [
          131.5,
          256
        ],
        [
          87.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          153,
          102
        ],
        [
          231,
          102
        ],
        [
          153,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00462",
    "cardId": "1005611",
    "source": "https://dbz-dokkanbattle.com/card/1005611",
    "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/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            191,
            402,
            324,
            500
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            196
          ],
          "scaleForDisplay": 1.3061224489795917
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            433,
            193,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            191,
            153
          ],
          "scaleForDisplay": 1.3061224489795917
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            236,
            208,
            318
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            165,
            206
          ],
          "scaleForDisplay": 1.3061224489795917
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            656,
            1,
            871,
            96
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            215,
            190
          ],
          "scaleForDisplay": 1.3061224489795917
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            191,
            402,
            324,
            500
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            196
          ],
          "scaleForDisplay": 1.3061224489795917
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            191,
            402,
            324,
            500
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            196
          ],
          "scaleForDisplay": 1.3061224489795917
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/gohan_future/sp01/sp_character_00462_01.lwf",
          "sourceTexture": "source-assets/android/gohan_future/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            639,
            310
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            637,
            619
          ],
          "scaleForDisplay": 0.4135702746365105
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
          "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
          "sourceRectPixels": [
            191,
            402,
            324,
            500
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            196
          ],
          "scaleForDisplay": 1.3061224489795917
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "gohan_future_ssj": {
    "src": "assets/android/gohan_future_ssj-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          170,
          256
        ]
      ],
      "attack": [
        [
          293,
          6,
          244,
          202
        ],
        [
          580,
          6,
          211,
          268
        ],
        [
          867,
          6,
          275,
          244
        ],
        [
          6,
          286,
          170,
          256
        ]
      ],
      "special": [
        [
          293,
          286,
          170,
          256
        ],
        [
          580,
          286,
          253,
          256
        ],
        [
          867,
          286,
          170,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          85.0,
          256
        ]
      ],
      "attack": [
        [
          122.0,
          202
        ],
        [
          105.5,
          268
        ],
        [
          137.5,
          244
        ],
        [
          85.0,
          256
        ]
      ],
      "special": [
        [
          85.0,
          256
        ],
        [
          126.5,
          256
        ],
        [
          85.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          150,
          102
        ],
        [
          223,
          102
        ],
        [
          150,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00209",
    "cardId": "1008530",
    "source": "https://dbz-dokkanbattle.com/card/1008530",
    "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/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            725,
            258,
            858,
            358
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            200
          ],
          "scaleForDisplay": 1.28
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            584,
            323,
            775,
            402
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            191,
            158
          ],
          "scaleForDisplay": 1.28
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            558,
            262,
            723,
            366
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            165,
            209
          ],
          "scaleForDisplay": 1.28
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            353,
            372,
            544,
            480
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            215,
            191
          ],
          "scaleForDisplay": 1.28
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            725,
            258,
            858,
            358
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            200
          ],
          "scaleForDisplay": 1.28
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            725,
            258,
            858,
            358
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            200
          ],
          "scaleForDisplay": 1.28
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/gohan_future_ssj/sp01/sp_character_00209_01.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            639,
            324
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            637,
            645
          ],
          "scaleForDisplay": 0.39689922480620154
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
          "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            725,
            258,
            858,
            358
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            133,
            200
          ],
          "scaleForDisplay": 1.28
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "vegeta_ssj": {
    "src": "assets/android/vegeta_ssj-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          134,
          256
        ]
      ],
      "attack": [
        [
          215,
          6,
          127,
          253
        ],
        [
          424,
          6,
          197,
          247
        ],
        [
          633,
          6,
          183,
          227
        ],
        [
          6,
          274,
          134,
          256
        ]
      ],
      "special": [
        [
          215,
          274,
          134,
          256
        ],
        [
          424,
          274,
          155,
          256
        ],
        [
          633,
          274,
          134,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          67.0,
          256
        ]
      ],
      "attack": [
        [
          63.5,
          253
        ],
        [
          98.5,
          247
        ],
        [
          91.5,
          227
        ],
        [
          67.0,
          256
        ]
      ],
      "special": [
        [
          67.0,
          256
        ],
        [
          77.5,
          256
        ],
        [
          67.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          118,
          102
        ],
        [
          136,
          102
        ],
        [
          118,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00002",
    "cardId": "1005550",
    "source": "https://dbz-dokkanbattle.com/card/1005550",
    "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/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            279,
            203,
            398,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            119,
            227
          ],
          "scaleForDisplay": 1.1277533039647578
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            499,
            203,
            612,
            315
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            113,
            224
          ],
          "scaleForDisplay": 1.1277533039647578
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image1.png",
          "sourceRectPixels": [
            223,
            1,
            442,
            88
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            175,
            219
          ],
          "scaleForDisplay": 1.1277533039647578
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            572,
            350,
            773,
            431
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            162,
            201
          ],
          "scaleForDisplay": 1.1277533039647578
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            279,
            203,
            398,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            119,
            227
          ],
          "scaleForDisplay": 1.1277533039647578
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            279,
            203,
            398,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            119,
            227
          ],
          "scaleForDisplay": 1.1277533039647578
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/vegeta_ssj/sp01/sp_character_00002_01.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/sp01/lwf_image0.png",
          "sourceRectPixels": [
            414,
            1,
            822,
            338
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            408,
            673
          ],
          "scaleForDisplay": 0.3803863298662704
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
          "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
          "sourceRectPixels": [
            279,
            203,
            398,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            119,
            227
          ],
          "scaleForDisplay": 1.1277533039647578
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "super_vegeta": {
    "src": "assets/android/super_vegeta-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          150,
          256
        ]
      ],
      "attack": [
        [
          236,
          6,
          196,
          214
        ],
        [
          466,
          6,
          205,
          236
        ],
        [
          696,
          6,
          218,
          232
        ],
        [
          6,
          274,
          150,
          256
        ]
      ],
      "special": [
        [
          236,
          274,
          150,
          256
        ],
        [
          466,
          274,
          150,
          256
        ],
        [
          696,
          274,
          150,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          75.0,
          256
        ]
      ],
      "attack": [
        [
          98.0,
          214
        ],
        [
          102.5,
          236
        ],
        [
          109.0,
          232
        ],
        [
          75.0,
          256
        ]
      ],
      "special": [
        [
          75.0,
          256
        ],
        [
          75.0,
          256
        ],
        [
          75.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          132,
          102
        ],
        [
          132,
          102
        ],
        [
          132,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00458",
    "cardId": "1004760",
    "source": "https://dbz-dokkanbattle.com/card/1004760",
    "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/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            114,
            127,
            220
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            125,
            214
          ],
          "scaleForDisplay": 1.1962616822429906
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            196,
            426,
            375,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            164,
            179
          ],
          "scaleForDisplay": 1.1962616822429906
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            649,
            90,
            846,
            176
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            171,
            197
          ],
          "scaleForDisplay": 1.1962616822429906
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image0.png",
          "sourceRectPixels": [
            669,
            179,
            851,
            276
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            182,
            194
          ],
          "scaleForDisplay": 1.1962616822429906
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            114,
            127,
            220
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            125,
            214
          ],
          "scaleForDisplay": 1.1962616822429906
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            114,
            127,
            220
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            125,
            214
          ],
          "scaleForDisplay": 1.1962616822429906
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/android/super_vegeta/sp01/sp_character_00458_01.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            393,
            335
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            391,
            668
          ],
          "scaleForDisplay": 0.38323353293413176
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
          "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            114,
            127,
            220
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            125,
            214
          ],
          "scaleForDisplay": 1.1962616822429906
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "piccolo_kami": {
    "src": "assets/android/piccolo_kami-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          157,
          256
        ]
      ],
      "attack": [
        [
          309,
          6,
          206,
          227
        ],
        [
          612,
          6,
          291,
          229
        ],
        [
          915,
          6,
          267,
          236
        ],
        [
          6,
          274,
          157,
          256
        ]
      ],
      "special": [
        [
          309,
          274,
          157,
          256
        ],
        [
          612,
          274,
          271,
          256
        ],
        [
          915,
          274,
          157,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          78.5,
          256
        ]
      ],
      "attack": [
        [
          103.0,
          227
        ],
        [
          145.5,
          229
        ],
        [
          133.5,
          236
        ],
        [
          78.5,
          256
        ]
      ],
      "special": [
        [
          78.5,
          256
        ],
        [
          135.5,
          256
        ],
        [
          78.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          138,
          102
        ],
        [
          238,
          102
        ],
        [
          138,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "01009",
    "cardId": "4017500",
    "source": "https://dbz-dokkanbattle.com/card/4017500",
    "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/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "scaleForDisplay": 1.0406504065040652
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image0.png",
          "sourceRectPixels": [
            220,
            597,
            418,
            815
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            198,
            218
          ],
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            2,
            282,
            222
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            280,
            220
          ],
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            224,
            229,
            481
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            257,
            227
          ],
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "scaleForDisplay": 1.0406504065040652
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "scaleForDisplay": 1.0406504065040652
        },
        {
          "kind": "special",
          "fragment": 2,
          "sourceLwf": "source-assets/android/piccolo_kami/sp01/sp_character_01009_01.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            558,
            264
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            556,
            526
          ],
          "scaleForDisplay": 0.4866920152091255
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
          "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
          "sourceRectPixels": [
            864,
            737,
            1015,
            983
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            151,
            246
          ],
          "scaleForDisplay": 1.0406504065040652
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "vegeta_android": {
    "src": "assets/android/vegeta_android-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          137,
          256
        ]
      ],
      "attack": [
        [
          217,
          6,
          127,
          249
        ],
        [
          428,
          6,
          199,
          244
        ],
        [
          639,
          6,
          184,
          229
        ],
        [
          6,
          274,
          137,
          256
        ]
      ],
      "special": [
        [
          217,
          274,
          137,
          256
        ],
        [
          428,
          274,
          191,
          236
        ],
        [
          639,
          274,
          137,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          68.5,
          256
        ]
      ],
      "attack": [
        [
          63.5,
          249
        ],
        [
          99.5,
          244
        ],
        [
          92.0,
          229
        ],
        [
          68.5,
          256
        ]
      ],
      "special": [
        [
          68.5,
          256
        ],
        [
          95.5,
          236
        ],
        [
          68.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          121,
          102
        ],
        [
          168,
          94
        ],
        [
          121,
          102
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "01003",
    "cardId": "1028491",
    "source": "https://dbz-dokkanbattle.com/card/1028491",
    "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/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            130,
            249,
            252,
            362
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            122,
            226
          ],
          "scaleForDisplay": 1.1327433628318584
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            114,
            111
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            112,
            220
          ],
          "scaleForDisplay": 1.1327433628318584
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            458,
            309,
            674,
            397
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            176,
            216
          ],
          "scaleForDisplay": 1.1327433628318584
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image1.png",
          "sourceRectPixels": [
            286,
            217,
            448,
            318
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            162,
            202
          ],
          "scaleForDisplay": 1.1327433628318584
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            130,
            249,
            252,
            362
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            122,
            226
          ],
          "scaleForDisplay": 1.1327433628318584
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            130,
            249,
            252,
            362
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            122,
            226
          ],
          "scaleForDisplay": 1.1327433628318584
        },
        {
          "kind": "attack",
          "fragment": 4,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            676,
            407,
            846,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            170,
            208
          ],
          "scaleForDisplay": 1.1327433628318584
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
          "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
          "sourceRectPixels": [
            130,
            249,
            252,
            362
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            122,
            226
          ],
          "scaleForDisplay": 1.1327433628318584
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
  },
  "cell_bloated": {
    "src": "assets/android/cell-bloated-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          288,
          256
        ]
      ],
      "attack": [
        [
          6,
          6,
          288,
          256
        ],
        [
          306,
          6,
          288,
          256
        ],
        [
          6,
          6,
          288,
          256
        ]
      ],
      "special": [
        [
          6,
          6,
          288,
          256
        ],
        [
          306,
          6,
          288,
          256
        ],
        [
          6,
          6,
          288,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          144.0,
          256
        ]
      ],
      "attack": [
        [
          144.0,
          256
        ],
        [
          144.0,
          256
        ],
        [
          144.0,
          256
        ]
      ],
      "special": [
        [
          144.0,
          256
        ],
        [
          144.0,
          256
        ],
        [
          144.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          144,
          20
        ],
        [
          144,
          20
        ],
        [
          144,
          20
        ]
      ]
    },
    "style": "dokkan",
    "role": "enemy",
    "gameCharacterId": "00202",
    "cardId": "1008821",
    "source": "https://dbz-dokkanbattle.com/card/1008821",
    "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
    "provenance": {
      "4": {
        "index": 4,
        "file": "fragments-sp03\\4.png",
        "size": [
          1002,
          890
        ],
        "rotated": 0,
        "source": "sp03\\sp_character_00202_03.lwf",
        "sourceTexture": "sp03\\lwf_image0.png",
        "sourceRectPixels": [
          2,
          1,
          1004,
          446
        ],
        "logicalTrimOffset": [
          272,
          315
        ],
        "textureLogicalSize": [
          1024,
          1024
        ],
        "textureActualSize": [
          1024,
          512
        ],
        "alphaTrimBox": [
          0,
          0,
          1002,
          890
        ],
        "scaleForDisplay": 0.2876404494382023
      },
      "0": {
        "index": 0,
        "file": "fragments-sp03\\0.png",
        "size": [
          1002,
          890
        ],
        "rotated": 0,
        "source": "sp03\\sp_character_00202_03.lwf",
        "sourceTexture": "sp03\\lwf_image1.png",
        "sourceRectPixels": [
          2,
          1,
          1004,
          446
        ],
        "logicalTrimOffset": [
          264,
          315
        ],
        "textureLogicalSize": [
          1024,
          1024
        ],
        "textureActualSize": [
          1024,
          512
        ],
        "alphaTrimBox": [
          0,
          0,
          1002,
          890
        ],
        "scaleForDisplay": 0.2876404494382023
      }
    },
    "note": "Original inflated Semi-Perfect Cell from character00202 SP03. Boss-only actor; never a collectible/player form. Original texture rectangles, proportional scale, no generated character pixels."
  },
  "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."
  },
  "spopovich": {
    "src": "assets/buu-enemies/spopovich-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          185,
          256
        ]
      ],
      "attack": [
        [
          293,
          6,
          227,
          262
        ],
        [
          580,
          6,
          275,
          250
        ],
        [
          867,
          6,
          272,
          246
        ],
        [
          6,
          280,
          185,
          256
        ]
      ],
      "special": [
        [
          293,
          280,
          185,
          256
        ],
        [
          580,
          280,
          231,
          256
        ],
        [
          867,
          280,
          185,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          92.5,
          256
        ]
      ],
      "attack": [
        [
          113.5,
          262
        ],
        [
          137.5,
          250
        ],
        [
          136.0,
          246
        ],
        [
          92.5,
          256
        ]
      ],
      "special": [
        [
          92.5,
          256
        ],
        [
          115.5,
          256
        ],
        [
          92.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          170,
          61
        ],
        [
          221,
          34
        ],
        [
          170,
          61
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00041",
    "cardId": "1018691",
    "source": "https://dbz-dokkanbattle.com/card/1018691",
    "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-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image0.png",
          "sourceRectPixels": [
            845,
            122,
            1018,
            241
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            173,
            239
          ],
          "scaleForDisplay": 1.0711297071129706
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            348,
            247,
            454
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            212,
            245
          ],
          "scaleForDisplay": 1.0711297071129706
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image0.png",
          "sourceRectPixels": [
            2,
            394,
            259,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            257,
            233
          ],
          "scaleForDisplay": 1.0711297071129706
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image1.png",
          "sourceRectPixels": [
            272,
            124,
            526,
            239
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            254,
            230
          ],
          "scaleForDisplay": 1.0711297071129706
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image0.png",
          "sourceRectPixels": [
            845,
            122,
            1018,
            241
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            173,
            239
          ],
          "scaleForDisplay": 1.0711297071129706
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image0.png",
          "sourceRectPixels": [
            845,
            122,
            1018,
            241
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            173,
            239
          ],
          "scaleForDisplay": 1.0711297071129706
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/spopovich/sp01/sp_character_00041_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            724,
            401
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            722,
            800
          ],
          "scaleForDisplay": 0.32
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/spopovich/battle/battle_character_00041.lwf",
          "sourceTexture": "source-assets/buu-enemies/spopovich/battle/lwf_image0.png",
          "sourceRectPixels": [
            845,
            122,
            1018,
            241
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            173,
            239
          ],
          "scaleForDisplay": 1.0711297071129706
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended palm. Guard/recovery coordinates are not used for the released projectile."
  },
  "yamu": {
    "src": "assets/buu-enemies/yamu-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          145,
          256
        ]
      ],
      "attack": [
        [
          484,
          6,
          199,
          245
        ],
        [
          962,
          6,
          220,
          246
        ],
        [
          1440,
          6,
          225,
          244
        ],
        [
          6,
          274,
          145,
          256
        ]
      ],
      "special": [
        [
          484,
          274,
          145,
          256
        ],
        [
          962,
          274,
          466,
          256
        ],
        [
          1440,
          274,
          145,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          72.5,
          256
        ]
      ],
      "attack": [
        [
          99.5,
          245
        ],
        [
          110.0,
          246
        ],
        [
          112.5,
          244
        ],
        [
          72.5,
          256
        ]
      ],
      "special": [
        [
          72.5,
          256
        ],
        [
          233.0,
          256
        ],
        [
          72.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          139,
          56
        ],
        [
          464,
          122
        ],
        [
          139,
          56
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00042",
    "cardId": "9200621",
    "source": "https://dbz-dokkanbattle.com/card/9200621",
    "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-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image1.png",
          "sourceRectPixels": [
            116,
            287,
            222,
            380
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            106,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image0.png",
          "sourceRectPixels": [
            877,
            96,
            1022,
            186
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            145,
            179
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image1.png",
          "sourceRectPixels": [
            224,
            287,
            385,
            377
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            161,
            180
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image0.png",
          "sourceRectPixels": [
            414,
            360,
            578,
            448
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            164,
            178
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image1.png",
          "sourceRectPixels": [
            116,
            287,
            222,
            380
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            106,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image1.png",
          "sourceRectPixels": [
            116,
            287,
            222,
            380
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            106,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/yamu/sp01/sp_character_00042_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            206,
            786,
            422
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            784,
            431
          ],
          "scaleForDisplay": 0.5939675174013921
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yamu/battle/battle_character_00042.lwf",
          "sourceTexture": "source-assets/buu-enemies/yamu/battle/lwf_image1.png",
          "sourceRectPixels": [
            116,
            287,
            222,
            380
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            106,
            187
          ],
          "scaleForDisplay": 1.3689839572192513
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: energy-draining syringe tip. Guard/recovery coordinates are not used for the released projectile."
  },
  "majin_vegeta": {
    "src": "assets/buu-enemies/majin_vegeta-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          142,
          256
        ]
      ],
      "attack": [
        [
          253,
          6,
          137,
          249
        ],
        [
          500,
          6,
          199,
          235
        ],
        [
          747,
          6,
          199,
          235
        ],
        [
          6,
          274,
          142,
          256
        ]
      ],
      "special": [
        [
          253,
          274,
          142,
          256
        ],
        [
          500,
          274,
          235,
          239
        ],
        [
          747,
          274,
          142,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          71.0,
          256
        ]
      ],
      "attack": [
        [
          68.5,
          249
        ],
        [
          99.5,
          235
        ],
        [
          99.5,
          235
        ],
        [
          71.0,
          256
        ]
      ],
      "special": [
        [
          71.0,
          256
        ],
        [
          117.5,
          239
        ],
        [
          71.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          136,
          51
        ],
        [
          224,
          69
        ],
        [
          136,
          51
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "01243",
    "cardId": "1023981",
    "source": "https://dbz-dokkanbattle.com/card/1023981",
    "credits": "Dragon Ball Z Dokkan Battle â€” Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
    "provenance": {
      "idle": [
        {
          "kind": "attack",
          "fragment": 57,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            343,
            122,
            451
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            120,
            216
          ],
          "scaleForDisplay": 1.1851851851851851
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 22,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            218,
            109,
            334,
            214
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            116,
            210
          ],
          "scaleForDisplay": 1.1851851851851851
        },
        {
          "kind": "attack",
          "fragment": 33,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            324,
            319,
            492,
            418
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            168,
            198
          ],
          "scaleForDisplay": 1.1851851851851851
        },
        {
          "kind": "attack",
          "fragment": 35,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            340,
            1,
            508,
            100
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            168,
            198
          ],
          "scaleForDisplay": 1.1851851851851851
        },
        {
          "kind": "attack",
          "fragment": 57,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            343,
            122,
            451
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            120,
            216
          ],
          "scaleForDisplay": 1.1851851851851851
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 57,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            343,
            122,
            451
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            120,
            216
          ],
          "scaleForDisplay": 1.1851851851851851
        },
        {
          "kind": "attack",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image0.png",
          "sourceRectPixels": [
            466,
            178,
            664,
            279
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            198,
            202
          ],
          "scaleForDisplay": 1.1851851851851851
        },
        {
          "kind": "attack",
          "fragment": 57,
          "sourceLwf": "source-assets/buu-enemies/majin_vegeta/battle/battle_character_01243.lwf",
          "sourceTexture": "source-assets/buu-enemies/majin_vegeta/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            343,
            122,
            451
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            120,
            216
          ],
          "scaleForDisplay": 1.1851851851851851
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended gloved palm. Guard/recovery coordinates are not used for the released projectile."
  },
  "puipui": {
    "src": "assets/buu-enemies/puipui-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          163,
          256
        ]
      ],
      "attack": [
        [
          275,
          6,
          215,
          215
        ],
        [
          544,
          6,
          193,
          256
        ],
        [
          813,
          6,
          257,
          233
        ],
        [
          6,
          274,
          163,
          256
        ]
      ],
      "special": [
        [
          275,
          274,
          163,
          256
        ],
        [
          544,
          274,
          213,
          256
        ],
        [
          813,
          274,
          163,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          81.5,
          256
        ]
      ],
      "attack": [
        [
          107.5,
          215
        ],
        [
          96.5,
          256
        ],
        [
          128.5,
          233
        ],
        [
          81.5,
          256
        ]
      ],
      "special": [
        [
          81.5,
          256
        ],
        [
          106.5,
          256
        ],
        [
          81.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          156,
          64
        ],
        [
          210,
          79
        ],
        [
          156,
          64
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00044",
    "cardId": "1033020",
    "source": "https://dbz-dokkanbattle.com/card/1033020",
    "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-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            420,
            146,
            627,
            212
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            132,
            207
          ],
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            304,
            360,
            478,
            447
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            174,
            174
          ],
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            422,
            66,
            629,
            144
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            156,
            207
          ],
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            210,
            95
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            208,
            188
          ],
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            420,
            146,
            627,
            212
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            132,
            207
          ],
          "scaleForDisplay": 1.2367149758454106
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            420,
            146,
            627,
            212
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            132,
            207
          ],
          "scaleForDisplay": 1.2367149758454106
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/puipui/sp01/sp_character_00044_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/sp01/lwf_image1.png",
          "sourceRectPixels": [
            2,
            1,
            567,
            341
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            565,
            680
          ],
          "scaleForDisplay": 0.3764705882352941
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/puipui/battle/battle_character_00044.lwf",
          "sourceTexture": "source-assets/buu-enemies/puipui/battle/lwf_image1.png",
          "sourceRectPixels": [
            420,
            146,
            627,
            212
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            132,
            207
          ],
          "scaleForDisplay": 1.2367149758454106
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended right fingertips. Guard/recovery coordinates are not used for the released projectile."
  },
  "yakon": {
    "src": "assets/buu-enemies/yakon-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          253,
          256
        ]
      ],
      "attack": [
        [
          305,
          6,
          226,
          257
        ],
        [
          604,
          6,
          287,
          262
        ],
        [
          903,
          6,
          262,
          248
        ],
        [
          6,
          280,
          253,
          256
        ]
      ],
      "special": [
        [
          305,
          280,
          253,
          256
        ],
        [
          604,
          280,
          258,
          256
        ],
        [
          903,
          280,
          253,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          126.5,
          256
        ]
      ],
      "attack": [
        [
          113.0,
          257
        ],
        [
          143.5,
          262
        ],
        [
          131.0,
          248
        ],
        [
          126.5,
          256
        ]
      ],
      "special": [
        [
          126.5,
          256
        ],
        [
          129.0,
          256
        ],
        [
          126.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {},
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00043",
    "cardId": "1000630",
    "source": "https://dbz-dokkanbattle.com/card/1000630",
    "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-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image4.png",
          "sourceRectPixels": [
            288,
            349,
            605,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            317,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image2.png",
          "sourceRectPixels": [
            698,
            362,
            1020,
            504
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            284,
            322
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image2.png",
          "sourceRectPixels": [
            338,
            184,
            698,
            348
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            360,
            328
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            355,
            331,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            329,
            311
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image4.png",
          "sourceRectPixels": [
            288,
            349,
            605,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            317,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image4.png",
          "sourceRectPixels": [
            288,
            349,
            605,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            317,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/yakon/sp01/sp_character_00043_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            1005,
            498
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            1003,
            994
          ],
          "scaleForDisplay": 0.2575452716297787
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/yakon/battle/battle_character_00043.lwf",
          "sourceTexture": "source-assets/buu-enemies/yakon/battle/lwf_image4.png",
          "sourceRectPixels": [
            288,
            349,
            605,
            510
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            317,
            321
          ],
          "scaleForDisplay": 0.7975077881619937
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Physical light-drain pose: intentionally no beam emitter. Engine actor must use physical special behavior."
  },
  "dabura": {
    "src": "assets/buu-enemies/dabura-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          303,
          256
        ]
      ],
      "attack": [
        [
          399,
          6,
          363,
          250
        ],
        [
          792,
          6,
          298,
          211
        ],
        [
          1185,
          6,
          381,
          251
        ],
        [
          6,
          274,
          303,
          256
        ]
      ],
      "special": [
        [
          399,
          274,
          303,
          256
        ],
        [
          792,
          274,
          294,
          256
        ],
        [
          1185,
          274,
          303,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          151.5,
          256
        ]
      ],
      "attack": [
        [
          181.5,
          250
        ],
        [
          149.0,
          211
        ],
        [
          190.5,
          251
        ],
        [
          151.5,
          256
        ]
      ],
      "special": [
        [
          151.5,
          256
        ],
        [
          147.0,
          256
        ],
        [
          151.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          288,
          74
        ],
        [
          271,
          50
        ],
        [
          288,
          74
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00233",
    "cardId": "1033010",
    "source": "https://dbz-dokkanbattle.com/card/1033010",
    "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-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image3.png",
          "sourceRectPixels": [
            634,
            142,
            1014,
            302
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            380,
            320
          ],
          "scaleForDisplay": 0.8
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image3.png",
          "sourceRectPixels": [
            318,
            142,
            632,
            369
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            454,
            314
          ],
          "scaleForDisplay": 0.8
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image5.png",
          "sourceRectPixels": [
            2,
            184,
            376,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            373,
            264
          ],
          "scaleForDisplay": 0.8
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image0.png",
          "sourceRectPixels": [
            544,
            159,
            1020,
            316
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            476,
            314
          ],
          "scaleForDisplay": 0.8
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image3.png",
          "sourceRectPixels": [
            634,
            142,
            1014,
            302
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            380,
            320
          ],
          "scaleForDisplay": 0.8
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image3.png",
          "sourceRectPixels": [
            634,
            142,
            1014,
            302
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            380,
            320
          ],
          "scaleForDisplay": 0.8
        },
        {
          "kind": "special",
          "fragment": 1,
          "sourceLwf": "source-assets/buu-enemies/dabura/sp01/sp_character_00233_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            876,
            381
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            874,
            760
          ],
          "scaleForDisplay": 0.3368421052631579
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/dabura/battle/battle_character_00233.lwf",
          "sourceTexture": "source-assets/buu-enemies/dabura/battle/lwf_image3.png",
          "sourceRectPixels": [
            634,
            142,
            1014,
            302
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            1,
            0,
            380,
            320
          ],
          "scaleForDisplay": 0.8
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended palm. Guard/recovery coordinates are not used for the released projectile."
  },
  "buu_fat": {
    "src": "assets/buu-enemies/buu_fat-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          208,
          256
        ]
      ],
      "attack": [
        [
          338,
          6,
          247,
          256
        ],
        [
          670,
          6,
          320,
          278
        ],
        [
          1002,
          6,
          282,
          254
        ],
        [
          6,
          296,
          208,
          256
        ]
      ],
      "special": [
        [
          338,
          296,
          208,
          256
        ],
        [
          670,
          296,
          236,
          256
        ],
        [
          1002,
          296,
          208,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          104.0,
          256
        ]
      ],
      "attack": [
        [
          123.5,
          256
        ],
        [
          160.0,
          278
        ],
        [
          141.0,
          254
        ],
        [
          104.0,
          256
        ]
      ],
      "special": [
        [
          104.0,
          256
        ],
        [
          118.0,
          256
        ],
        [
          104.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          181,
          54
        ],
        [
          205,
          82
        ],
        [
          181,
          54
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00229",
    "cardId": "1019580",
    "source": "https://dbz-dokkanbattle.com/card/1019580",
    "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-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image2.png",
          "sourceRectPixels": [
            830,
            1,
            1013,
            114
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            183,
            225
          ],
          "scaleForDisplay": 1.1377777777777778
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image2.png",
          "sourceRectPixels": [
            611,
            120,
            828,
            232
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            217,
            225
          ],
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image0.png",
          "sourceRectPixels": [
            647,
            236,
            891,
            376
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            281,
            244
          ],
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image1.png",
          "sourceRectPixels": [
            262,
            195,
            510,
            306
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            248,
            223
          ],
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image2.png",
          "sourceRectPixels": [
            830,
            1,
            1013,
            114
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            183,
            225
          ],
          "scaleForDisplay": 1.1377777777777778
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image2.png",
          "sourceRectPixels": [
            830,
            1,
            1013,
            114
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            183,
            225
          ],
          "scaleForDisplay": 1.1377777777777778
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/sp01/sp_character_00229_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            680,
            370
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            678,
            737
          ],
          "scaleForDisplay": 0.3473541383989145
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_fat/battle/battle_character_00229.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_fat/battle/lwf_image2.png",
          "sourceRectPixels": [
            830,
            1,
            1013,
            114
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            183,
            225
          ],
          "scaleForDisplay": 1.1377777777777778
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: mouth. Guard/recovery coordinates are not used for the released projectile."
  },
  "buu_evil": {
    "src": "assets/buu-enemies/buu_evil-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          194,
          256
        ]
      ],
      "attack": [
        [
          296,
          6,
          209,
          244
        ],
        [
          586,
          6,
          265,
          230
        ],
        [
          876,
          6,
          278,
          221
        ],
        [
          6,
          274,
          194,
          256
        ]
      ],
      "special": [
        [
          296,
          274,
          194,
          256
        ],
        [
          586,
          274,
          236,
          256
        ],
        [
          876,
          274,
          194,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          97.0,
          256
        ]
      ],
      "attack": [
        [
          104.5,
          244
        ],
        [
          132.5,
          230
        ],
        [
          139.0,
          221
        ],
        [
          97.0,
          256
        ]
      ],
      "special": [
        [
          97.0,
          256
        ],
        [
          118.0,
          256
        ],
        [
          97.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          180,
          56
        ],
        [
          231,
          55
        ],
        [
          180,
          56
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00230",
    "cardId": "1028850",
    "source": "https://dbz-dokkanbattle.com/card/1028850",
    "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-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image0.png",
          "sourceRectPixels": [
            778,
            224,
            1022,
            316
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            184,
            244
          ],
          "scaleForDisplay": 1.0534979423868314
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image1.png",
          "sourceRectPixels": [
            788,
            1,
            1020,
            100
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            198,
            232
          ],
          "scaleForDisplay": 1.0534979423868314
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image1.png",
          "sourceRectPixels": [
            514,
            187,
            766,
            296
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            252,
            218
          ],
          "scaleForDisplay": 1.0534979423868314
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image0.png",
          "sourceRectPixels": [
            416,
            362,
            626,
            494
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            264,
            210
          ],
          "scaleForDisplay": 1.0534979423868314
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image0.png",
          "sourceRectPixels": [
            778,
            224,
            1022,
            316
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            184,
            244
          ],
          "scaleForDisplay": 1.0534979423868314
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image0.png",
          "sourceRectPixels": [
            778,
            224,
            1022,
            316
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            184,
            244
          ],
          "scaleForDisplay": 1.0534979423868314
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/sp01/sp_character_00230_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            636,
            345
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            634,
            688
          ],
          "scaleForDisplay": 0.37209302325581395
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buu_evil/battle/battle_character_00230.lwf",
          "sourceTexture": "source-assets/buu-enemies/buu_evil/battle/lwf_image0.png",
          "sourceRectPixels": [
            778,
            224,
            1022,
            316
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            1,
            184,
            244
          ],
          "scaleForDisplay": 1.0534979423868314
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended palms. Guard/recovery coordinates are not used for the released projectile."
  },
  "super_buu": {
    "src": "assets/buu-enemies/super_buu-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          183,
          256
        ]
      ],
      "attack": [
        [
          248,
          6,
          158,
          265
        ],
        [
          490,
          6,
          213,
          250
        ],
        [
          732,
          6,
          230,
          284
        ],
        [
          6,
          302,
          183,
          256
        ]
      ],
      "special": [
        [
          248,
          302,
          183,
          256
        ],
        [
          490,
          302,
          194,
          256
        ],
        [
          732,
          302,
          183,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          91.5,
          256
        ]
      ],
      "attack": [
        [
          79.0,
          265
        ],
        [
          106.5,
          250
        ],
        [
          115.0,
          284
        ],
        [
          91.5,
          256
        ]
      ],
      "special": [
        [
          91.5,
          256
        ],
        [
          97.0,
          256
        ],
        [
          91.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          174,
          90
        ],
        [
          151,
          94
        ],
        [
          174,
          90
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00231",
    "cardId": "1015050",
    "source": "https://dbz-dokkanbattle.com/card/1015050",
    "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-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image2.png",
          "sourceRectPixels": [
            244,
            103,
            482,
            188
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            238
          ],
          "scaleForDisplay": 1.0756302521008403
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            435,
            433,
            681,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            147,
            246
          ],
          "scaleForDisplay": 1.0756302521008403
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            252,
            234,
            350
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            198,
            232
          ],
          "scaleForDisplay": 1.0756302521008403
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            402,
            266,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            214,
            264
          ],
          "scaleForDisplay": 1.0756302521008403
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image2.png",
          "sourceRectPixels": [
            244,
            103,
            482,
            188
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            238
          ],
          "scaleForDisplay": 1.0756302521008403
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image2.png",
          "sourceRectPixels": [
            244,
            103,
            482,
            188
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            238
          ],
          "scaleForDisplay": 1.0756302521008403
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/super_buu/sp01/sp_character_00231_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            542,
            356
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            540,
            711
          ],
          "scaleForDisplay": 0.360056258790436
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/super_buu/battle/battle_character_00231.lwf",
          "sourceTexture": "source-assets/buu-enemies/super_buu/battle/lwf_image2.png",
          "sourceRectPixels": [
            244,
            103,
            482,
            188
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            170,
            238
          ],
          "scaleForDisplay": 1.0756302521008403
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: mouth aperture. Guard/recovery coordinates are not used for the released projectile."
  },
  "buutenks": {
    "src": "assets/buu-enemies/buutenks-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          212,
          256
        ]
      ],
      "attack": [
        [
          275,
          6,
          187,
          261
        ],
        [
          544,
          6,
          255,
          264
        ],
        [
          813,
          6,
          257,
          274
        ],
        [
          6,
          292,
          212,
          256
        ]
      ],
      "special": [
        [
          275,
          292,
          212,
          256
        ],
        [
          544,
          292,
          228,
          256
        ],
        [
          813,
          292,
          212,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          106.0,
          256
        ]
      ],
      "attack": [
        [
          93.5,
          261
        ],
        [
          127.5,
          264
        ],
        [
          128.5,
          274
        ],
        [
          106.0,
          256
        ]
      ],
      "special": [
        [
          106.0,
          256
        ],
        [
          114.0,
          256
        ],
        [
          106.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          199,
          82
        ],
        [
          222,
          76
        ],
        [
          199,
          82
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00365",
    "cardId": "1012001",
    "source": "https://dbz-dokkanbattle.com/card/1012001",
    "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-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            776,
            384,
            986,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            418,
            260,
            511
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            185,
            258
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            126,
            263,
            252
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            252,
            261
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            184,
            278,
            438,
            414
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            254,
            271
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            776,
            384,
            986,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            776,
            384,
            986,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/buutenks/sp01/sp_character_00365_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            747,
            420
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            745,
            837
          ],
          "scaleForDisplay": 0.3058542413381123
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buutenks/battle/battle_character_00365.lwf",
          "sourceTexture": "source-assets/buu-enemies/buutenks/battle/lwf_image1.png",
          "sourceRectPixels": [
            776,
            384,
            986,
            511
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: extended palms. Guard/recovery coordinates are not used for the released projectile."
  },
  "buuhan": {
    "src": "assets/buu-enemies/buuhan-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          212,
          256
        ]
      ],
      "attack": [
        [
          274,
          6,
          190,
          261
        ],
        [
          542,
          6,
          256,
          264
        ],
        [
          810,
          6,
          255,
          274
        ],
        [
          6,
          292,
          212,
          256
        ]
      ],
      "special": [
        [
          274,
          292,
          212,
          256
        ],
        [
          542,
          292,
          244,
          256
        ],
        [
          810,
          292,
          212,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          106.0,
          256
        ]
      ],
      "attack": [
        [
          95.0,
          261
        ],
        [
          128.0,
          264
        ],
        [
          127.5,
          274
        ],
        [
          106.0,
          256
        ]
      ],
      "special": [
        [
          106.0,
          256
        ],
        [
          122.0,
          256
        ],
        [
          106.0,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          204,
          90
        ],
        [
          237,
          87
        ],
        [
          204,
          90
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00364",
    "cardId": "4015060",
    "source": "https://dbz-dokkanbattle.com/card/4015060",
    "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-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            402,
            255,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image1.png",
          "sourceRectPixels": [
            259,
            414,
            517,
            508
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            188,
            258
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image2.png",
          "sourceRectPixels": [
            198,
            269,
            451,
            400
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            253,
            261
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image1.png",
          "sourceRectPixels": [
            188,
            278,
            440,
            414
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            252,
            271
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            402,
            255,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            402,
            255,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/buuhan/sp01/sp_character_00364_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            821,
            431
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            819,
            860
          ],
          "scaleForDisplay": 0.29767441860465116
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/buuhan/battle/battle_character_00364.lwf",
          "sourceTexture": "source-assets/buu-enemies/buuhan/battle/lwf_image2.png",
          "sourceRectPixels": [
            2,
            402,
            255,
            506
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            210,
            253
          ],
          "scaleForDisplay": 1.0118577075098814
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: space between the outstretched hands. Guard/recovery coordinates are not used for the released projectile."
  },
  "kid_buu": {
    "src": "assets/buu-enemies/kid_buu-atlas.webp",
    "frames": {
      "idle": [
        [
          6,
          6,
          127,
          256
        ]
      ],
      "attack": [
        [
          234,
          6,
          157,
          232
        ],
        [
          462,
          6,
          207,
          242
        ],
        [
          690,
          6,
          216,
          236
        ],
        [
          6,
          274,
          127,
          256
        ]
      ],
      "special": [
        [
          234,
          274,
          127,
          256
        ],
        [
          462,
          274,
          180,
          256
        ],
        [
          690,
          274,
          127,
          256
        ]
      ]
    },
    "anchors": {
      "idle": [
        [
          63.5,
          256
        ]
      ],
      "attack": [
        [
          78.5,
          232
        ],
        [
          103.5,
          242
        ],
        [
          108.0,
          236
        ],
        [
          63.5,
          256
        ]
      ],
      "special": [
        [
          63.5,
          256
        ],
        [
          90.0,
          256
        ],
        [
          63.5,
          256
        ]
      ]
    },
    "bodyHeight": 256,
    "faces": "right",
    "frameFaces": {
      "idle": [
        "right"
      ],
      "attack": [
        "right",
        "right",
        "right",
        "right"
      ],
      "special": [
        "right",
        "right",
        "right"
      ]
    },
    "specialReleaseFrame": 1,
    "emissionPoints": {
      "special": [
        [
          57,
          5
        ],
        [
          81,
          13
        ],
        [
          57,
          5
        ]
      ]
    },
    "style": "dokkan",
    "role": "playable",
    "gameCharacterId": "00232",
    "cardId": "1023491",
    "source": "https://dbz-dokkanbattle.com/card/1023491",
    "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-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            390,
            400,
            492,
            502
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            102,
            205
          ],
          "scaleForDisplay": 1.248780487804878
        }
      ],
      "attack": [
        {
          "kind": "attack",
          "fragment": 25,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image1.png",
          "sourceRectPixels": [
            2,
            317,
            128,
            410
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            126,
            186
          ],
          "scaleForDisplay": 1.248780487804878
        },
        {
          "kind": "attack",
          "fragment": 26,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            819,
            334,
            1013,
            416
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            166,
            194
          ],
          "scaleForDisplay": 1.248780487804878
        },
        {
          "kind": "attack",
          "fragment": 31,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            199,
            424,
            388,
            510
          ],
          "rotationUndone": 1,
          "alphaTrimBox": [
            0,
            0,
            173,
            189
          ],
          "scaleForDisplay": 1.248780487804878
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            390,
            400,
            492,
            502
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            102,
            205
          ],
          "scaleForDisplay": 1.248780487804878
        }
      ],
      "special": [
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            390,
            400,
            492,
            502
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            102,
            205
          ],
          "scaleForDisplay": 1.248780487804878
        },
        {
          "kind": "special",
          "fragment": 0,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/sp01/sp_character_00232_01.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/sp01/lwf_image0.png",
          "sourceRectPixels": [
            2,
            1,
            386,
            274
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            384,
            546
          ],
          "scaleForDisplay": 0.46886446886446886
        },
        {
          "kind": "attack",
          "fragment": 49,
          "sourceLwf": "source-assets/buu-enemies/kid_buu/battle/battle_character_00232.lwf",
          "sourceTexture": "source-assets/buu-enemies/kid_buu/battle/lwf_image0.png",
          "sourceRectPixels": [
            390,
            400,
            492,
            502
          ],
          "rotationUndone": 0,
          "alphaTrimBox": [
            0,
            0,
            102,
            205
          ],
          "scaleForDisplay": 1.248780487804878
        }
      ]
    },
    "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline.",
    "emissionNote": "Release-frame coordinates inspected on original-pixel grid: raised hand above head. Guard/recovery coordinates are not used for the released projectile."
  }
}
