diff --git a/assets/ethanolman/manifest.js b/assets/ethanolman/manifest.js
index 4c2e083..9fde5b7 100644
--- a/assets/ethanolman/manifest.js
+++ b/assets/ethanolman/manifest.js
@@ -1,2 +1,2 @@
window.FIGHTERS=window.FIGHTERS||{};
-window.FIGHTERS.ethanolman={"id": "ethanolman", "name": "ETHANOL MAN", "tag": "THE GREEN FUEL", "race": "HUMAN", "title": "GREEN FUEL", "color": "#2fbf7a", "status": "FULLY FUELED", "select": "assets/menu/ethanolman-select.webp", "detail": "Cheerful, all in white, and a flood of bio-fuel.", "style": "Heavy zoner / waves and area", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["TINJU ETANOL", "ETHANOL SPLASH", "TAWA MELEDAK", "BANJIR BIOETANOL"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "wave", "damage": 17, "speed": 620, "range": 520, "size": 280, "tall": 190, "knockback": 220, "duration": 0.62, "hitAt": 0.5, "asset": "wave", "pierce": true, "fx": "roll", "lift": 620}, "skill2": {"kind": "area", "damage": 18, "ahead": 0, "radius": 135, "vy": 140, "knockback": 260, "duration": 0.6, "hitAt": 0.5, "asset": "splash"}}, "ultimate": {"kind": "stampede", "asset": "flood", "count": 5, "gap": 0.5, "damage": 9, "speed": 900, "size": 420, "lift": 110, "rx": 120, "ry": 150, "hold": 1.2, "settle": 0.7, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["blast", "burst", "fireflow", "firepillar", "flood", "impact", "splash", "wave"], "cutin": {"a": "#06231a", "b": "#12704f", "kicker": "#c8ffe8", "title": "BANJIR
BIOETANOL", "detail": "FLOOD OF GREEN FUEL"}, "manifest": {"characterId": "ethanolman", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "magenta", "hex": "#FF00FF", "rgb": [255, 0, 255], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 54, "top": -180, "bottom": 0}, "height": 180}, {"frame": 1, "bounds": {"left": -59, "right": 53, "top": -179, "bottom": 0}, "height": 179}, {"frame": 2, "bounds": {"left": -60, "right": 53, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -60, "right": 53, "top": -180, "bottom": 0}, "height": 180}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 48, "top": -164, "bottom": 0}, "height": 164}, {"frame": 1, "bounds": {"left": -27, "right": 44, "top": -164, "bottom": 0}, "height": 164}, {"frame": 2, "bounds": {"left": -47, "right": 49, "top": -164, "bottom": 0}, "height": 164}, {"frame": 3, "bounds": {"left": -41, "right": 49, "top": -164, "bottom": 0}, "height": 164}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -80, "right": 35, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -26, "right": 65, "top": -140, "bottom": 0}, "height": 140}, {"frame": 2, "bounds": {"left": -75, "right": 52, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -19, "right": 84, "top": -146, "bottom": 0}, "height": 146}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -25, "right": 81, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 32, "top": -115, "bottom": 0}, "height": 115}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 56, "top": -143, "bottom": 0}, "height": 143}, {"frame": 1, "bounds": {"left": -50, "right": 53, "top": -122, "bottom": 0}, "height": 122}, {"frame": 2, "bounds": {"left": -47, "right": 53, "top": -121, "bottom": 0}, "height": 121}, {"frame": 3, "bounds": {"left": -48, "right": 50, "top": -136, "bottom": 0}, "height": 136}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 52, "top": -154, "bottom": 0}, "height": 154}, {"frame": 1, "bounds": {"left": -50, "right": 76, "top": -153, "bottom": 0}, "height": 153}, {"frame": 2, "bounds": {"left": -57, "right": 91, "top": -153, "bottom": 0}, "height": 153}, {"frame": 3, "bounds": {"left": -52, "right": 52, "top": -155, "bottom": 0}, "height": 155}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 53, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -53, "right": 67, "top": -145, "bottom": 0}, "height": 145}, {"frame": 2, "bounds": {"left": -63, "right": 78, "top": -144, "bottom": 0}, "height": 144}, {"frame": 3, "bounds": {"left": -55, "right": 51, "top": -147, "bottom": 0}, "height": 147}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -56, "right": 52, "top": -140, "bottom": 0}, "height": 140}, {"frame": 1, "bounds": {"left": -62, "right": 62, "top": -141, "bottom": 0}, "height": 141}, {"frame": 2, "bounds": {"left": -67, "right": 73, "top": -139, "bottom": 0}, "height": 139}, {"frame": 3, "bounds": {"left": -53, "right": 50, "top": -147, "bottom": 0}, "height": 147}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 50, "top": -142, "bottom": 0}, "height": 142}, {"frame": 1, "bounds": {"left": -56, "right": 55, "top": -146, "bottom": 0}, "height": 146}, {"frame": 2, "bounds": {"left": -56, "right": 79, "top": -147, "bottom": 0}, "height": 147}, {"frame": 3, "bounds": {"left": -59, "right": 55, "top": -147, "bottom": 0}, "height": 147}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 47, "top": -130, "bottom": 0}, "height": 130}, {"frame": 1, "bounds": {"left": -65, "right": 60, "top": -122, "bottom": 0}, "height": 122}, {"frame": 2, "bounds": {"left": -72, "right": 59, "top": -141, "bottom": 0}, "height": 141}, {"frame": 3, "bounds": {"left": -50, "right": 49, "top": -136, "bottom": 0}, "height": 136}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 46, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -54, "right": 49, "top": -167, "bottom": 0}, "height": 167}, {"frame": 2, "bounds": {"left": -55, "right": 52, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -55, "right": 54, "top": -183, "bottom": 0}, "height": 183}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 56, "top": -152, "bottom": 0}, "height": 152}, {"frame": 1, "bounds": {"left": -67, "right": 58, "top": -158, "bottom": 0}, "height": 158}, {"frame": 2, "bounds": {"left": -50, "right": 55, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -54, "right": 56, "top": -158, "bottom": 0}, "height": 158}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 61, "top": -111, "bottom": 0}, "height": 111}, {"frame": 1, "bounds": {"left": -87, "right": 38, "top": -94, "bottom": 0}, "height": 94}, {"frame": 2, "bounds": {"left": -70, "right": 61, "top": -56, "bottom": 0}, "height": 56}, {"frame": 3, "bounds": {"left": -56, "right": 72, "top": -35, "bottom": 0}, "height": 35}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -71, "right": 76, "top": -60, "bottom": 0}, "height": 60}, {"frame": 1, "bounds": {"left": -66, "right": 55, "top": -96, "bottom": 0}, "height": 96}, {"frame": 2, "bounds": {"left": -38, "right": 52, "top": -110, "bottom": 0}, "height": 110}, {"frame": 3, "bounds": {"left": -55, "right": 50, "top": -141, "bottom": 0}, "height": 141}]}}, "emitters": {"attack1": {"x": 91, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 78, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 73, "y": -103, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 79, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 59, "y": -99, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 52, "y": -5, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 28, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": -1, "y": -58}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE LEDAKAN", "label": "LEDAKAN", "announce": "MODE LEDAKAN!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#ff9a2a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["TINJU API", "PERCIKAN API", "BOTOL MELEDAK", "LEDAKAN BIOETANOL"], "skills": {"skill1": {"kind": "wave", "damage": 20, "speed": 680, "range": 580, "size": 320, "tall": 200, "knockback": 240, "duration": 0.62, "hitAt": 0.5, "asset": "fireflow", "pierce": true, "fx": "roll", "fire": true, "trail": {"gap": 115, "radius": 60, "dps": 3, "life": 3}}, "skill2": {"kind": "area", "damage": 22, "ahead": 0, "radius": 180, "vy": 150, "knockback": 320, "duration": 0.6, "hitAt": 0.5, "asset": "blast", "aftershock": {"delay": 0.22, "radius": 260, "damage": 9}}}, "ultimate": {"kind": "pillars", "asset": "firepillar", "count": 12, "gap": 0.12, "damage": 4, "h": 380, "hold": 1.1, "settle": 0.6, "finisher": {"damage": 32, "asset": "burst"}}, "cutin": {"a": "#1f0d00", "b": "#c46a10", "kicker": "#ffe8c0", "title": "LEDAKAN
BIOETANOL", "detail": "FUEL MEETS FIRE"}}};
+window.FIGHTERS.ethanolman={"id": "ethanolman", "name": "ETHANOL MAN", "tag": "THE GREEN FUEL", "race": "HUMAN", "title": "GREEN FUEL", "color": "#2fbf7a", "status": "FULLY FUELED", "select": "assets/menu/ethanolman-select.webp", "detail": "Cheerful, all in white, and a flood of bio-fuel.", "style": "Heavy zoner / waves and area", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["TINJU ETANOL", "ETHANOL SPLASH", "TAWA MELEDAK", "BANJIR BIOETANOL"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "wave", "damage": 17, "speed": 620, "range": 520, "size": 280, "tall": 190, "knockback": 220, "duration": 0.62, "hitAt": 0.5, "asset": "wave", "pierce": true, "fx": "roll", "lift": 620}, "skill2": {"kind": "area", "damage": 20, "ahead": 0, "radius": 135, "vy": 140, "knockback": 260, "duration": 0.6, "hitAt": 0.5, "asset": "splash"}}, "ultimate": {"kind": "stampede", "asset": "flood", "count": 5, "gap": 0.5, "damage": 10, "speed": 900, "size": 420, "lift": 110, "rx": 120, "ry": 150, "hold": 1.2, "settle": 0.7, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["blast", "burst", "fireflow", "firepillar", "flood", "impact", "splash", "wave"], "cutin": {"a": "#06231a", "b": "#12704f", "kicker": "#c8ffe8", "title": "BANJIR
BIOETANOL", "detail": "FLOOD OF GREEN FUEL"}, "manifest": {"characterId": "ethanolman", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "magenta", "hex": "#FF00FF", "rgb": [255, 0, 255], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 54, "top": -180, "bottom": 0}, "height": 180}, {"frame": 1, "bounds": {"left": -59, "right": 53, "top": -179, "bottom": 0}, "height": 179}, {"frame": 2, "bounds": {"left": -60, "right": 53, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -60, "right": 53, "top": -180, "bottom": 0}, "height": 180}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 48, "top": -164, "bottom": 0}, "height": 164}, {"frame": 1, "bounds": {"left": -27, "right": 44, "top": -164, "bottom": 0}, "height": 164}, {"frame": 2, "bounds": {"left": -47, "right": 49, "top": -164, "bottom": 0}, "height": 164}, {"frame": 3, "bounds": {"left": -41, "right": 49, "top": -164, "bottom": 0}, "height": 164}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -80, "right": 35, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -26, "right": 65, "top": -140, "bottom": 0}, "height": 140}, {"frame": 2, "bounds": {"left": -75, "right": 52, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -19, "right": 84, "top": -146, "bottom": 0}, "height": 146}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -25, "right": 81, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 32, "top": -115, "bottom": 0}, "height": 115}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 56, "top": -143, "bottom": 0}, "height": 143}, {"frame": 1, "bounds": {"left": -50, "right": 53, "top": -122, "bottom": 0}, "height": 122}, {"frame": 2, "bounds": {"left": -47, "right": 53, "top": -121, "bottom": 0}, "height": 121}, {"frame": 3, "bounds": {"left": -48, "right": 50, "top": -136, "bottom": 0}, "height": 136}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 52, "top": -154, "bottom": 0}, "height": 154}, {"frame": 1, "bounds": {"left": -50, "right": 76, "top": -153, "bottom": 0}, "height": 153}, {"frame": 2, "bounds": {"left": -57, "right": 91, "top": -153, "bottom": 0}, "height": 153}, {"frame": 3, "bounds": {"left": -52, "right": 52, "top": -155, "bottom": 0}, "height": 155}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 53, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -53, "right": 67, "top": -145, "bottom": 0}, "height": 145}, {"frame": 2, "bounds": {"left": -63, "right": 78, "top": -144, "bottom": 0}, "height": 144}, {"frame": 3, "bounds": {"left": -55, "right": 51, "top": -147, "bottom": 0}, "height": 147}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -56, "right": 52, "top": -140, "bottom": 0}, "height": 140}, {"frame": 1, "bounds": {"left": -62, "right": 62, "top": -141, "bottom": 0}, "height": 141}, {"frame": 2, "bounds": {"left": -67, "right": 73, "top": -139, "bottom": 0}, "height": 139}, {"frame": 3, "bounds": {"left": -53, "right": 50, "top": -147, "bottom": 0}, "height": 147}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 50, "top": -142, "bottom": 0}, "height": 142}, {"frame": 1, "bounds": {"left": -56, "right": 55, "top": -146, "bottom": 0}, "height": 146}, {"frame": 2, "bounds": {"left": -56, "right": 79, "top": -147, "bottom": 0}, "height": 147}, {"frame": 3, "bounds": {"left": -59, "right": 55, "top": -147, "bottom": 0}, "height": 147}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 47, "top": -130, "bottom": 0}, "height": 130}, {"frame": 1, "bounds": {"left": -65, "right": 60, "top": -122, "bottom": 0}, "height": 122}, {"frame": 2, "bounds": {"left": -72, "right": 59, "top": -141, "bottom": 0}, "height": 141}, {"frame": 3, "bounds": {"left": -50, "right": 49, "top": -136, "bottom": 0}, "height": 136}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 46, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -54, "right": 49, "top": -167, "bottom": 0}, "height": 167}, {"frame": 2, "bounds": {"left": -55, "right": 52, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -55, "right": 54, "top": -183, "bottom": 0}, "height": 183}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 56, "top": -152, "bottom": 0}, "height": 152}, {"frame": 1, "bounds": {"left": -67, "right": 58, "top": -158, "bottom": 0}, "height": 158}, {"frame": 2, "bounds": {"left": -50, "right": 55, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -54, "right": 56, "top": -158, "bottom": 0}, "height": 158}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 61, "top": -111, "bottom": 0}, "height": 111}, {"frame": 1, "bounds": {"left": -87, "right": 38, "top": -94, "bottom": 0}, "height": 94}, {"frame": 2, "bounds": {"left": -70, "right": 61, "top": -56, "bottom": 0}, "height": 56}, {"frame": 3, "bounds": {"left": -56, "right": 72, "top": -35, "bottom": 0}, "height": 35}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -71, "right": 76, "top": -60, "bottom": 0}, "height": 60}, {"frame": 1, "bounds": {"left": -66, "right": 55, "top": -96, "bottom": 0}, "height": 96}, {"frame": 2, "bounds": {"left": -38, "right": 52, "top": -110, "bottom": 0}, "height": 110}, {"frame": 3, "bounds": {"left": -55, "right": 50, "top": -141, "bottom": 0}, "height": 141}]}}, "emitters": {"attack1": {"x": 91, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 78, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 73, "y": -103, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 79, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 59, "y": -99, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 52, "y": -5, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 28, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": -1, "y": -58}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE LEDAKAN", "label": "LEDAKAN", "announce": "MODE LEDAKAN!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#ff9a2a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["TINJU API", "PERCIKAN API", "BOTOL MELEDAK", "LEDAKAN BIOETANOL"], "skills": {"skill1": {"kind": "wave", "damage": 20, "speed": 680, "range": 580, "size": 320, "tall": 200, "knockback": 240, "duration": 0.62, "hitAt": 0.5, "asset": "fireflow", "pierce": true, "fx": "roll", "fire": true, "trail": {"gap": 115, "radius": 60, "dps": 3, "life": 3}}, "skill2": {"kind": "area", "damage": 22, "ahead": 0, "radius": 180, "vy": 150, "knockback": 320, "duration": 0.6, "hitAt": 0.5, "asset": "blast", "aftershock": {"delay": 0.22, "radius": 260, "damage": 9}}}, "ultimate": {"kind": "pillars", "asset": "firepillar", "count": 12, "gap": 0.12, "damage": 5, "h": 380, "hold": 1.1, "settle": 0.6, "finisher": {"damage": 32, "asset": "burst"}}, "cutin": {"a": "#1f0d00", "b": "#c46a10", "kicker": "#ffe8c0", "title": "LEDAKAN
BIOETANOL", "detail": "FUEL MEETS FIRE"}}};
diff --git a/assets/gufron/manifest.js b/assets/gufron/manifest.js
index 3e1352e..11676bc 100644
--- a/assets/gufron/manifest.js
+++ b/assets/gufron/manifest.js
@@ -1,2 +1,2 @@
window.FIGHTERS=window.FIGHTERS||{};
-window.FIGHTERS.gufron={"id": "gufron", "name": "GUFRON", "tag": "THE ANT WHISPERER", "race": "HUMAN", "title": "ANT WHISPERER", "color": "#c9a05a", "status": "ONE WITH THE ANTS", "select": "assets/menu/gufron-select.webp", "detail": "Quirky, calm, and followed by a very large colony.", "style": "Swarm / ants and sound", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["JAB NYENTRIK", "BAHASA SEMUT", "SYUDUDU", "KOLONI SEMUT RAYA"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "homing", "damage": 4, "count": 10, "speed": 520, "turn": 5, "spread": 60, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.4, "swarm": {"orbit": 0.55, "radius": 90, "stagger": 0.05}, "ramp": {"every": 5, "add": 1}}, "skill2": {"kind": "wave", "damage": 15, "speed": 640, "range": 520, "size": 220, "tall": 170, "knockback": 200, "duration": 0.62, "hitAt": 0.5, "asset": "soundwave", "pierce": true, "fx": "chain"}}, "ultimate": {"kind": "stampede", "asset": "antswarm", "count": 9, "gap": 0.24, "damage": 5, "speed": 900, "size": 280, "lift": 60, "rx": 100, "ry": 110, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 26, "asset": "burst"}}, "fx": ["ant", "antswarm", "burst", "giantant", "impact", "soundchain", "soundwave"], "cutin": {"a": "#1c1405", "b": "#5a4318", "kicker": "#ffe9b8", "title": "KOLONI
SEMUT RAYA", "detail": "THE COLONY ARRIVES"}, "manifest": {"characterId": "gufron", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "magenta", "hex": "#FF00FF", "rgb": [255, 0, 255], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 51, "top": -181, "bottom": 0}, "height": 181}, {"frame": 1, "bounds": {"left": -47, "right": 50, "top": -181, "bottom": 0}, "height": 181}, {"frame": 2, "bounds": {"left": -47, "right": 50, "top": -180, "bottom": 0}, "height": 180}, {"frame": 3, "bounds": {"left": -47, "right": 50, "top": -181, "bottom": 0}, "height": 181}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 47, "top": -156, "bottom": 0}, "height": 156}, {"frame": 1, "bounds": {"left": -26, "right": 47, "top": -156, "bottom": 0}, "height": 156}, {"frame": 2, "bounds": {"left": -45, "right": 48, "top": -156, "bottom": 0}, "height": 156}, {"frame": 3, "bounds": {"left": -33, "right": 42, "top": -156, "bottom": 0}, "height": 156}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -81, "right": 50, "top": -137, "bottom": 0}, "height": 137}, {"frame": 1, "bounds": {"left": -34, "right": 39, "top": -138, "bottom": 0}, "height": 138}, {"frame": 2, "bounds": {"left": -75, "right": 59, "top": -137, "bottom": 0}, "height": 137}, {"frame": 3, "bounds": {"left": -45, "right": 42, "top": -139, "bottom": 0}, "height": 139}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -28, "right": 66, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -36, "right": 37, "top": -112, "bottom": 0}, "height": 112}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 49, "top": -151, "bottom": 0}, "height": 151}, {"frame": 1, "bounds": {"left": -45, "right": 47, "top": -125, "bottom": 0}, "height": 125}, {"frame": 2, "bounds": {"left": -50, "right": 57, "top": -135, "bottom": 0}, "height": 135}, {"frame": 3, "bounds": {"left": -48, "right": 48, "top": -149, "bottom": 0}, "height": 149}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -52, "right": 58, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -53, "right": 65, "top": -156, "bottom": 0}, "height": 156}, {"frame": 2, "bounds": {"left": -57, "right": 73, "top": -154, "bottom": 0}, "height": 154}, {"frame": 3, "bounds": {"left": -53, "right": 57, "top": -157, "bottom": 0}, "height": 157}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -58, "right": 57, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -59, "right": 51, "top": -157, "bottom": 0}, "height": 157}, {"frame": 2, "bounds": {"left": -60, "right": 73, "top": -158, "bottom": 0}, "height": 158}, {"frame": 3, "bounds": {"left": -55, "right": 52, "top": -157, "bottom": 0}, "height": 157}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -55, "right": 57, "top": -145, "bottom": 0}, "height": 145}, {"frame": 1, "bounds": {"left": -55, "right": 62, "top": -144, "bottom": 0}, "height": 144}, {"frame": 2, "bounds": {"left": -63, "right": 72, "top": -143, "bottom": 0}, "height": 143}, {"frame": 3, "bounds": {"left": -50, "right": 54, "top": -156, "bottom": 0}, "height": 156}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -52, "right": 56, "top": -128, "bottom": 0}, "height": 128}, {"frame": 1, "bounds": {"left": -53, "right": 56, "top": -119, "bottom": 0}, "height": 119}, {"frame": 2, "bounds": {"left": -60, "right": 62, "top": -110, "bottom": 0}, "height": 110}, {"frame": 3, "bounds": {"left": -51, "right": 51, "top": -144, "bottom": 0}, "height": 144}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 55, "top": -175, "bottom": 0}, "height": 175}, {"frame": 1, "bounds": {"left": -51, "right": 52, "top": -175, "bottom": 0}, "height": 175}, {"frame": 2, "bounds": {"left": -61, "right": 81, "top": -173, "bottom": 0}, "height": 173}, {"frame": 3, "bounds": {"left": -48, "right": 51, "top": -175, "bottom": 0}, "height": 175}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -55, "right": 56, "top": -159, "bottom": 0}, "height": 159}, {"frame": 1, "bounds": {"left": -50, "right": 51, "top": -186, "bottom": 0}, "height": 186}, {"frame": 2, "bounds": {"left": -52, "right": 63, "top": -149, "bottom": 0}, "height": 149}, {"frame": 3, "bounds": {"left": -56, "right": 65, "top": -159, "bottom": 0}, "height": 159}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 64, "top": -155, "bottom": 0}, "height": 155}, {"frame": 1, "bounds": {"left": -71, "right": 49, "top": -161, "bottom": 0}, "height": 161}, {"frame": 2, "bounds": {"left": -51, "right": 54, "top": -152, "bottom": 0}, "height": 152}, {"frame": 3, "bounds": {"left": -51, "right": 50, "top": -160, "bottom": 0}, "height": 160}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 54, "top": -111, "bottom": 0}, "height": 111}, {"frame": 1, "bounds": {"left": -69, "right": 50, "top": -76, "bottom": 0}, "height": 76}, {"frame": 2, "bounds": {"left": -51, "right": 68, "top": -49, "bottom": 0}, "height": 49}, {"frame": 3, "bounds": {"left": -53, "right": 69, "top": -28, "bottom": 0}, "height": 28}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -69, "right": 73, "top": -66, "bottom": 0}, "height": 66}, {"frame": 1, "bounds": {"left": -56, "right": 52, "top": -99, "bottom": 0}, "height": 99}, {"frame": 2, "bounds": {"left": -43, "right": 44, "top": -117, "bottom": 0}, "height": 117}, {"frame": 3, "bounds": {"left": -55, "right": 56, "top": -164, "bottom": 0}, "height": 164}]}}, "emitters": {"attack1": {"x": 73, "y": -123, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 73, "y": -122, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 72, "y": -76, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 62, "y": -17, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 81, "y": -135, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 63, "y": -76, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 19, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 0, "y": -56}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE KOLONI", "label": "KOLONI", "announce": "MODE KOLONI!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#c9a05a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["JAB KOLONI", "SEMUT GANDA", "SYUDUDU BERANTAI", "KOLONI RAKSASA"], "skills": {"skill1": {"kind": "homing", "damage": 3, "count": 11, "speed": 620, "turn": 5, "spread": 90, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.6, "swarm": {"orbit": 0.55, "radius": 100, "stagger": 0.045}}, "skill2": {"kind": "wave", "damage": 20, "speed": 700, "range": 600, "size": 320, "tall": 200, "knockback": 220, "duration": 0.62, "hitAt": 0.5, "asset": "soundchain", "pierce": true, "bind": 0.6}}, "ultimate": {"kind": "stampede", "asset": "giantant", "count": 12, "gap": 0.18, "damage": 5, "speed": 1000, "size": 340, "lift": 70, "rx": 110, "ry": 120, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 30, "asset": "burst"}}, "cutin": {"a": "#150e02", "b": "#7a5a20", "kicker": "#ffe9b8", "title": "KOLONI
RAKSASA", "detail": "THE COLONY RISES"}}};
+window.FIGHTERS.gufron={"id": "gufron", "name": "GUFRON", "tag": "THE ANT WHISPERER", "race": "HUMAN", "title": "ANT WHISPERER", "color": "#c9a05a", "status": "ONE WITH THE ANTS", "select": "assets/menu/gufron-select.webp", "detail": "Quirky, calm, and followed by a very large colony.", "style": "Swarm / ants and sound", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["JAB NYENTRIK", "BAHASA SEMUT", "SYUDUDU", "KOLONI SEMUT RAYA"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "homing", "damage": 3, "count": 8, "speed": 520, "turn": 5, "spread": 60, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.4, "swarm": {"orbit": 0.55, "radius": 90, "stagger": 0.05}, "ramp": {"every": 5, "add": 1}}, "skill2": {"kind": "wave", "damage": 15, "speed": 640, "range": 520, "size": 220, "tall": 170, "knockback": 200, "duration": 0.62, "hitAt": 0.5, "asset": "soundwave", "pierce": true, "fx": "chain"}}, "ultimate": {"kind": "stampede", "asset": "antswarm", "count": 8, "gap": 0.24, "damage": 5, "speed": 900, "size": 280, "lift": 60, "rx": 100, "ry": 110, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 26, "asset": "burst"}}, "fx": ["ant", "antswarm", "burst", "giantant", "impact", "soundchain", "soundwave"], "cutin": {"a": "#1c1405", "b": "#5a4318", "kicker": "#ffe9b8", "title": "KOLONI
SEMUT RAYA", "detail": "THE COLONY ARRIVES"}, "manifest": {"characterId": "gufron", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "magenta", "hex": "#FF00FF", "rgb": [255, 0, 255], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 51, "top": -181, "bottom": 0}, "height": 181}, {"frame": 1, "bounds": {"left": -47, "right": 50, "top": -181, "bottom": 0}, "height": 181}, {"frame": 2, "bounds": {"left": -47, "right": 50, "top": -180, "bottom": 0}, "height": 180}, {"frame": 3, "bounds": {"left": -47, "right": 50, "top": -181, "bottom": 0}, "height": 181}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 47, "top": -156, "bottom": 0}, "height": 156}, {"frame": 1, "bounds": {"left": -26, "right": 47, "top": -156, "bottom": 0}, "height": 156}, {"frame": 2, "bounds": {"left": -45, "right": 48, "top": -156, "bottom": 0}, "height": 156}, {"frame": 3, "bounds": {"left": -33, "right": 42, "top": -156, "bottom": 0}, "height": 156}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -81, "right": 50, "top": -137, "bottom": 0}, "height": 137}, {"frame": 1, "bounds": {"left": -34, "right": 39, "top": -138, "bottom": 0}, "height": 138}, {"frame": 2, "bounds": {"left": -75, "right": 59, "top": -137, "bottom": 0}, "height": 137}, {"frame": 3, "bounds": {"left": -45, "right": 42, "top": -139, "bottom": 0}, "height": 139}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -28, "right": 66, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -36, "right": 37, "top": -112, "bottom": 0}, "height": 112}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 49, "top": -151, "bottom": 0}, "height": 151}, {"frame": 1, "bounds": {"left": -45, "right": 47, "top": -125, "bottom": 0}, "height": 125}, {"frame": 2, "bounds": {"left": -50, "right": 57, "top": -135, "bottom": 0}, "height": 135}, {"frame": 3, "bounds": {"left": -48, "right": 48, "top": -149, "bottom": 0}, "height": 149}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -52, "right": 58, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -53, "right": 65, "top": -156, "bottom": 0}, "height": 156}, {"frame": 2, "bounds": {"left": -57, "right": 73, "top": -154, "bottom": 0}, "height": 154}, {"frame": 3, "bounds": {"left": -53, "right": 57, "top": -157, "bottom": 0}, "height": 157}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -58, "right": 57, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -59, "right": 51, "top": -157, "bottom": 0}, "height": 157}, {"frame": 2, "bounds": {"left": -60, "right": 73, "top": -158, "bottom": 0}, "height": 158}, {"frame": 3, "bounds": {"left": -55, "right": 52, "top": -157, "bottom": 0}, "height": 157}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -55, "right": 57, "top": -145, "bottom": 0}, "height": 145}, {"frame": 1, "bounds": {"left": -55, "right": 62, "top": -144, "bottom": 0}, "height": 144}, {"frame": 2, "bounds": {"left": -63, "right": 72, "top": -143, "bottom": 0}, "height": 143}, {"frame": 3, "bounds": {"left": -50, "right": 54, "top": -156, "bottom": 0}, "height": 156}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -52, "right": 56, "top": -128, "bottom": 0}, "height": 128}, {"frame": 1, "bounds": {"left": -53, "right": 56, "top": -119, "bottom": 0}, "height": 119}, {"frame": 2, "bounds": {"left": -60, "right": 62, "top": -110, "bottom": 0}, "height": 110}, {"frame": 3, "bounds": {"left": -51, "right": 51, "top": -144, "bottom": 0}, "height": 144}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 55, "top": -175, "bottom": 0}, "height": 175}, {"frame": 1, "bounds": {"left": -51, "right": 52, "top": -175, "bottom": 0}, "height": 175}, {"frame": 2, "bounds": {"left": -61, "right": 81, "top": -173, "bottom": 0}, "height": 173}, {"frame": 3, "bounds": {"left": -48, "right": 51, "top": -175, "bottom": 0}, "height": 175}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -55, "right": 56, "top": -159, "bottom": 0}, "height": 159}, {"frame": 1, "bounds": {"left": -50, "right": 51, "top": -186, "bottom": 0}, "height": 186}, {"frame": 2, "bounds": {"left": -52, "right": 63, "top": -149, "bottom": 0}, "height": 149}, {"frame": 3, "bounds": {"left": -56, "right": 65, "top": -159, "bottom": 0}, "height": 159}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 64, "top": -155, "bottom": 0}, "height": 155}, {"frame": 1, "bounds": {"left": -71, "right": 49, "top": -161, "bottom": 0}, "height": 161}, {"frame": 2, "bounds": {"left": -51, "right": 54, "top": -152, "bottom": 0}, "height": 152}, {"frame": 3, "bounds": {"left": -51, "right": 50, "top": -160, "bottom": 0}, "height": 160}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 54, "top": -111, "bottom": 0}, "height": 111}, {"frame": 1, "bounds": {"left": -69, "right": 50, "top": -76, "bottom": 0}, "height": 76}, {"frame": 2, "bounds": {"left": -51, "right": 68, "top": -49, "bottom": 0}, "height": 49}, {"frame": 3, "bounds": {"left": -53, "right": 69, "top": -28, "bottom": 0}, "height": 28}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -69, "right": 73, "top": -66, "bottom": 0}, "height": 66}, {"frame": 1, "bounds": {"left": -56, "right": 52, "top": -99, "bottom": 0}, "height": 99}, {"frame": 2, "bounds": {"left": -43, "right": 44, "top": -117, "bottom": 0}, "height": 117}, {"frame": 3, "bounds": {"left": -55, "right": 56, "top": -164, "bottom": 0}, "height": 164}]}}, "emitters": {"attack1": {"x": 73, "y": -123, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 73, "y": -122, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 72, "y": -76, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 62, "y": -17, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 81, "y": -135, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 63, "y": -76, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 19, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 0, "y": -56}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE KOLONI", "label": "KOLONI", "announce": "MODE KOLONI!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#c9a05a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["JAB KOLONI", "SEMUT GANDA", "SYUDUDU BERANTAI", "KOLONI RAKSASA"], "skills": {"skill1": {"kind": "homing", "damage": 3, "count": 11, "speed": 620, "turn": 5, "spread": 90, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.6, "swarm": {"orbit": 0.55, "radius": 100, "stagger": 0.045}}, "skill2": {"kind": "wave", "damage": 20, "speed": 700, "range": 600, "size": 320, "tall": 200, "knockback": 220, "duration": 0.62, "hitAt": 0.5, "asset": "soundchain", "pierce": true, "bind": 0.6}}, "ultimate": {"kind": "stampede", "asset": "giantant", "count": 11, "gap": 0.18, "damage": 5, "speed": 1000, "size": 340, "lift": 70, "rx": 110, "ry": 120, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 30, "asset": "burst"}}, "cutin": {"a": "#150e02", "b": "#7a5a20", "kicker": "#ffe9b8", "title": "KOLONI
RAKSASA", "detail": "THE COLONY RISES"}}};
diff --git a/assets/megachan/manifest.js b/assets/megachan/manifest.js
index e151b81..57f12fb 100644
--- a/assets/megachan/manifest.js
+++ b/assets/megachan/manifest.js
@@ -1,2 +1,2 @@
window.FIGHTERS=window.FIGHTERS||{};
-window.FIGHTERS.megachan={"id": "megachan", "name": "MEGA CHAN", "tag": "THE RED BULL", "race": "HUMAN", "title": "RED BULL", "color": "#d62828", "status": "FIRED UP", "select": "assets/menu/megachan-select.webp", "detail": "A raised fist, a red blouse, and a herd on the way.", "style": "Matriarch / charge and sound wave", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["KEPALAN MERAH", "SRUDUK BANTENG", "ORASI LANTANG", "BANTENG HITAM"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "dash", "damage": 22, "dash": 720, "reach": 135, "knockback": 320, "duration": 0.6, "hitAt": 0.55, "asset": "bull", "size": 260}, "skill2": {"kind": "wave", "damage": 16, "speed": 650, "range": 540, "size": 230, "tall": 180, "knockback": 200, "duration": 0.62, "hitAt": 0.5, "asset": "soundwave", "pierce": true, "fx": "rings"}}, "ultimate": {"kind": "stampede", "asset": "blackbull", "count": 8, "gap": 0.32, "damage": 6, "speed": 1050, "size": 320, "lift": 100, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["blackbull", "bull", "bullflame", "burst", "firewave", "hellbull", "impact", "soundwave"], "cutin": {"a": "#1a0505", "b": "#7a1414", "kicker": "#ffd0c0", "title": "BANTENG
HITAM", "detail": "STAMPEDE OF BLACK BULLS"}, "manifest": {"characterId": "megachan", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "green", "hex": "#00FF00", "rgb": [0, 255, 0], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 62, "top": -181, "bottom": 0}, "height": 181}, {"frame": 1, "bounds": {"left": -60, "right": 60, "top": -181, "bottom": 0}, "height": 181}, {"frame": 2, "bounds": {"left": -62, "right": 62, "top": -172, "bottom": 0}, "height": 172}, {"frame": 3, "bounds": {"left": -61, "right": 60, "top": -181, "bottom": 0}, "height": 181}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 59, "top": -196, "bottom": 0}, "height": 196}, {"frame": 1, "bounds": {"left": -39, "right": 57, "top": -199, "bottom": 0}, "height": 199}, {"frame": 2, "bounds": {"left": -58, "right": 60, "top": -197, "bottom": 0}, "height": 197}, {"frame": 3, "bounds": {"left": -55, "right": 54, "top": -196, "bottom": 0}, "height": 196}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 60, "top": -172, "bottom": 0}, "height": 172}, {"frame": 1, "bounds": {"left": -26, "right": 91, "top": -173, "bottom": 0}, "height": 173}, {"frame": 2, "bounds": {"left": -94, "right": 48, "top": -172, "bottom": 0}, "height": 172}, {"frame": 3, "bounds": {"left": -88, "right": 35, "top": -172, "bottom": 0}, "height": 172}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -21, "right": 86, "top": -173, "bottom": 0}, "height": 173}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -34, "right": 37, "top": -123, "bottom": 0}, "height": 123}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -53, "right": 71, "top": -166, "bottom": 0}, "height": 166}, {"frame": 1, "bounds": {"left": -54, "right": 60, "top": -149, "bottom": 0}, "height": 149}, {"frame": 2, "bounds": {"left": -58, "right": 81, "top": -151, "bottom": 0}, "height": 151}, {"frame": 3, "bounds": {"left": -55, "right": 59, "top": -163, "bottom": 0}, "height": 163}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -60, "right": 62, "top": -170, "bottom": 0}, "height": 170}, {"frame": 1, "bounds": {"left": -59, "right": 72, "top": -170, "bottom": 0}, "height": 170}, {"frame": 2, "bounds": {"left": -67, "right": 85, "top": -170, "bottom": 0}, "height": 170}, {"frame": 3, "bounds": {"left": -61, "right": 62, "top": -170, "bottom": 0}, "height": 170}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 67, "top": -173, "bottom": 0}, "height": 173}, {"frame": 1, "bounds": {"left": -60, "right": 65, "top": -175, "bottom": 0}, "height": 175}, {"frame": 2, "bounds": {"left": -63, "right": 97, "top": -176, "bottom": 0}, "height": 176}, {"frame": 3, "bounds": {"left": -60, "right": 63, "top": -174, "bottom": 0}, "height": 174}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 63, "top": -171, "bottom": 0}, "height": 171}, {"frame": 1, "bounds": {"left": -70, "right": 63, "top": -172, "bottom": 0}, "height": 172}, {"frame": 2, "bounds": {"left": -78, "right": 97, "top": -166, "bottom": 0}, "height": 166}, {"frame": 3, "bounds": {"left": -62, "right": 66, "top": -173, "bottom": 0}, "height": 173}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 63, "top": -134, "bottom": 0}, "height": 134}, {"frame": 1, "bounds": {"left": -64, "right": 81, "top": -137, "bottom": 0}, "height": 137}, {"frame": 2, "bounds": {"left": -38, "right": 136, "top": -152, "bottom": 0}, "height": 152}, {"frame": 3, "bounds": {"left": -68, "right": 72, "top": -153, "bottom": 0}, "height": 153}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -62, "right": 64, "top": -190, "bottom": 0}, "height": 190}, {"frame": 1, "bounds": {"left": -62, "right": 66, "top": -192, "bottom": 0}, "height": 192}, {"frame": 2, "bounds": {"left": -72, "right": 78, "top": -189, "bottom": 0}, "height": 189}, {"frame": 3, "bounds": {"left": -60, "right": 63, "top": -190, "bottom": 0}, "height": 190}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -71, "right": 69, "top": -159, "bottom": 0}, "height": 159}, {"frame": 1, "bounds": {"left": -65, "right": 66, "top": -196, "bottom": 0}, "height": 196}, {"frame": 2, "bounds": {"left": -67, "right": 75, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -67, "right": 75, "top": -174, "bottom": 0}, "height": 174}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -84, "right": 61, "top": -185, "bottom": 0}, "height": 185}, {"frame": 1, "bounds": {"left": -117, "right": 69, "top": -182, "bottom": 0}, "height": 182}, {"frame": 2, "bounds": {"left": -54, "right": 61, "top": -179, "bottom": 0}, "height": 179}, {"frame": 3, "bounds": {"left": -66, "right": 68, "top": -185, "bottom": 0}, "height": 185}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 70, "top": -144, "bottom": 0}, "height": 144}, {"frame": 1, "bounds": {"left": -109, "right": 29, "top": -119, "bottom": 0}, "height": 119}, {"frame": 2, "bounds": {"left": -82, "right": 64, "top": -83, "bottom": 0}, "height": 83}, {"frame": 3, "bounds": {"left": -67, "right": 91, "top": -55, "bottom": 0}, "height": 55}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -85, "right": 72, "top": -90, "bottom": 0}, "height": 90}, {"frame": 1, "bounds": {"left": -66, "right": 55, "top": -121, "bottom": 0}, "height": 121}, {"frame": 2, "bounds": {"left": -42, "right": 53, "top": -144, "bottom": 0}, "height": 144}, {"frame": 3, "bounds": {"left": -61, "right": 65, "top": -161, "bottom": 0}, "height": 161}]}}, "emitters": {"attack1": {"x": 85, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 97, "y": -118, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 97, "y": -102, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 136, "y": -87, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 78, "y": -132, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 75, "y": -121, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 32, "y": -87}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 1, "y": -62}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "BANTENG MURKA", "label": "MURKA", "announce": "BANTENG MURKA!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#ff2a2a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["TINJU MURKA", "SERUDUK GANDA", "ORASI MEMBARA", "TANDUK NERAKA"], "skills": {"skill1": {"kind": "dash", "damage": 16, "dash": 920, "reach": 150, "knockback": 360, "duration": 0.6, "hitAt": 0.55, "asset": "bullflame", "size": 300, "rebound": {"range": 140, "damage": 12, "speed": 1100, "asset": "bullflame", "size": 300}}, "skill2": {"kind": "wave", "damage": 20, "speed": 700, "range": 600, "size": 320, "tall": 200, "knockback": 240, "duration": 0.62, "hitAt": 0.5, "asset": "firewave", "pierce": true, "fx": "flame", "trail": {"gap": 115, "radius": 60, "dps": 3, "life": 3}}}, "ultimate": {"kind": "stampede", "asset": "hellbull", "count": 10, "gap": 0.26, "damage": 7, "speed": 1150, "size": 380, "lift": 110, "rx": 110, "ry": 140, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 32, "asset": "burst"}}, "cutin": {"a": "#1a0000", "b": "#8a1010", "kicker": "#ffc8b8", "title": "TANDUK
NERAKA", "detail": "THE HERD BURNS"}}};
+window.FIGHTERS.megachan={"id": "megachan", "name": "MEGA CHAN", "tag": "THE RED BULL", "race": "HUMAN", "title": "RED BULL", "color": "#d62828", "status": "FIRED UP", "select": "assets/menu/megachan-select.webp", "detail": "A raised fist, a red blouse, and a herd on the way.", "style": "Matriarch / charge and sound wave", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["KEPALAN MERAH", "SRUDUK BANTENG", "ORASI LANTANG", "BANTENG HITAM"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "dash", "damage": 22, "dash": 720, "reach": 135, "knockback": 320, "duration": 0.6, "hitAt": 0.55, "asset": "bull", "size": 260}, "skill2": {"kind": "wave", "damage": 16, "speed": 650, "range": 540, "size": 230, "tall": 180, "knockback": 200, "duration": 0.62, "hitAt": 0.5, "asset": "soundwave", "pierce": true, "fx": "rings"}}, "ultimate": {"kind": "stampede", "asset": "blackbull", "count": 7, "gap": 0.32, "damage": 6, "speed": 1050, "size": 320, "lift": 100, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["blackbull", "bull", "bullflame", "burst", "firewave", "hellbull", "impact", "soundwave"], "cutin": {"a": "#1a0505", "b": "#7a1414", "kicker": "#ffd0c0", "title": "BANTENG
HITAM", "detail": "STAMPEDE OF BLACK BULLS"}, "manifest": {"characterId": "megachan", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "green", "hex": "#00FF00", "rgb": [0, 255, 0], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 62, "top": -181, "bottom": 0}, "height": 181}, {"frame": 1, "bounds": {"left": -60, "right": 60, "top": -181, "bottom": 0}, "height": 181}, {"frame": 2, "bounds": {"left": -62, "right": 62, "top": -172, "bottom": 0}, "height": 172}, {"frame": 3, "bounds": {"left": -61, "right": 60, "top": -181, "bottom": 0}, "height": 181}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 59, "top": -196, "bottom": 0}, "height": 196}, {"frame": 1, "bounds": {"left": -39, "right": 57, "top": -199, "bottom": 0}, "height": 199}, {"frame": 2, "bounds": {"left": -58, "right": 60, "top": -197, "bottom": 0}, "height": 197}, {"frame": 3, "bounds": {"left": -55, "right": 54, "top": -196, "bottom": 0}, "height": 196}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 60, "top": -172, "bottom": 0}, "height": 172}, {"frame": 1, "bounds": {"left": -26, "right": 91, "top": -173, "bottom": 0}, "height": 173}, {"frame": 2, "bounds": {"left": -94, "right": 48, "top": -172, "bottom": 0}, "height": 172}, {"frame": 3, "bounds": {"left": -88, "right": 35, "top": -172, "bottom": 0}, "height": 172}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -21, "right": 86, "top": -173, "bottom": 0}, "height": 173}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -34, "right": 37, "top": -123, "bottom": 0}, "height": 123}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -53, "right": 71, "top": -166, "bottom": 0}, "height": 166}, {"frame": 1, "bounds": {"left": -54, "right": 60, "top": -149, "bottom": 0}, "height": 149}, {"frame": 2, "bounds": {"left": -58, "right": 81, "top": -151, "bottom": 0}, "height": 151}, {"frame": 3, "bounds": {"left": -55, "right": 59, "top": -163, "bottom": 0}, "height": 163}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -60, "right": 62, "top": -170, "bottom": 0}, "height": 170}, {"frame": 1, "bounds": {"left": -59, "right": 72, "top": -170, "bottom": 0}, "height": 170}, {"frame": 2, "bounds": {"left": -67, "right": 85, "top": -170, "bottom": 0}, "height": 170}, {"frame": 3, "bounds": {"left": -61, "right": 62, "top": -170, "bottom": 0}, "height": 170}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 67, "top": -173, "bottom": 0}, "height": 173}, {"frame": 1, "bounds": {"left": -60, "right": 65, "top": -175, "bottom": 0}, "height": 175}, {"frame": 2, "bounds": {"left": -63, "right": 97, "top": -176, "bottom": 0}, "height": 176}, {"frame": 3, "bounds": {"left": -60, "right": 63, "top": -174, "bottom": 0}, "height": 174}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 63, "top": -171, "bottom": 0}, "height": 171}, {"frame": 1, "bounds": {"left": -70, "right": 63, "top": -172, "bottom": 0}, "height": 172}, {"frame": 2, "bounds": {"left": -78, "right": 97, "top": -166, "bottom": 0}, "height": 166}, {"frame": 3, "bounds": {"left": -62, "right": 66, "top": -173, "bottom": 0}, "height": 173}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -61, "right": 63, "top": -134, "bottom": 0}, "height": 134}, {"frame": 1, "bounds": {"left": -64, "right": 81, "top": -137, "bottom": 0}, "height": 137}, {"frame": 2, "bounds": {"left": -38, "right": 136, "top": -152, "bottom": 0}, "height": 152}, {"frame": 3, "bounds": {"left": -68, "right": 72, "top": -153, "bottom": 0}, "height": 153}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -62, "right": 64, "top": -190, "bottom": 0}, "height": 190}, {"frame": 1, "bounds": {"left": -62, "right": 66, "top": -192, "bottom": 0}, "height": 192}, {"frame": 2, "bounds": {"left": -72, "right": 78, "top": -189, "bottom": 0}, "height": 189}, {"frame": 3, "bounds": {"left": -60, "right": 63, "top": -190, "bottom": 0}, "height": 190}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -71, "right": 69, "top": -159, "bottom": 0}, "height": 159}, {"frame": 1, "bounds": {"left": -65, "right": 66, "top": -196, "bottom": 0}, "height": 196}, {"frame": 2, "bounds": {"left": -67, "right": 75, "top": -178, "bottom": 0}, "height": 178}, {"frame": 3, "bounds": {"left": -67, "right": 75, "top": -174, "bottom": 0}, "height": 174}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -84, "right": 61, "top": -185, "bottom": 0}, "height": 185}, {"frame": 1, "bounds": {"left": -117, "right": 69, "top": -182, "bottom": 0}, "height": 182}, {"frame": 2, "bounds": {"left": -54, "right": 61, "top": -179, "bottom": 0}, "height": 179}, {"frame": 3, "bounds": {"left": -66, "right": 68, "top": -185, "bottom": 0}, "height": 185}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 70, "top": -144, "bottom": 0}, "height": 144}, {"frame": 1, "bounds": {"left": -109, "right": 29, "top": -119, "bottom": 0}, "height": 119}, {"frame": 2, "bounds": {"left": -82, "right": 64, "top": -83, "bottom": 0}, "height": 83}, {"frame": 3, "bounds": {"left": -67, "right": 91, "top": -55, "bottom": 0}, "height": 55}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -85, "right": 72, "top": -90, "bottom": 0}, "height": 90}, {"frame": 1, "bounds": {"left": -66, "right": 55, "top": -121, "bottom": 0}, "height": 121}, {"frame": 2, "bounds": {"left": -42, "right": 53, "top": -144, "bottom": 0}, "height": 144}, {"frame": 3, "bounds": {"left": -61, "right": 65, "top": -161, "bottom": 0}, "height": 161}]}}, "emitters": {"attack1": {"x": 85, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 97, "y": -118, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 97, "y": -102, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 136, "y": -87, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 78, "y": -132, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 75, "y": -121, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 32, "y": -87}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 1, "y": -62}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "BANTENG MURKA", "label": "MURKA", "announce": "BANTENG MURKA!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#ff2a2a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["TINJU MURKA", "SERUDUK GANDA", "ORASI MEMBARA", "TANDUK NERAKA"], "skills": {"skill1": {"kind": "dash", "damage": 16, "dash": 920, "reach": 150, "knockback": 360, "duration": 0.6, "hitAt": 0.55, "asset": "bullflame", "size": 300, "rebound": {"range": 140, "damage": 12, "speed": 1100, "asset": "bullflame", "size": 300}}, "skill2": {"kind": "wave", "damage": 20, "speed": 700, "range": 600, "size": 320, "tall": 200, "knockback": 240, "duration": 0.62, "hitAt": 0.5, "asset": "firewave", "pierce": true, "fx": "flame", "trail": {"gap": 115, "radius": 60, "dps": 3, "life": 3}}}, "ultimate": {"kind": "stampede", "asset": "hellbull", "count": 10, "gap": 0.26, "damage": 6, "speed": 1150, "size": 380, "lift": 110, "rx": 110, "ry": 140, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 32, "asset": "burst"}}, "cutin": {"a": "#1a0000", "b": "#8a1010", "kicker": "#ffc8b8", "title": "TANDUK
NERAKA", "detail": "THE HERD BURNS"}}};
diff --git a/assets/soloman/manifest.js b/assets/soloman/manifest.js
index 219b4a2..eef395c 100644
--- a/assets/soloman/manifest.js
+++ b/assets/soloman/manifest.js
@@ -1,2 +1,2 @@
window.FIGHTERS=window.FIGHTERS||{};
-window.FIGHTERS.soloman={"id": "soloman", "name": "SOLO MAN", "tag": "THE SIMPLE ONE", "race": "HUMAN", "title": "SIMPLE ONE", "color": "#e0b04a", "status": "ON THE ROUTE", "select": "assets/menu/soloman-select.webp", "detail": "Soft-spoken, slim, and then a convoy arrives.", "style": "Rushdown / dash and cloth", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["KIBAS SARUNG", "ESEMKA RUSH", "SARUNG PUTAR", "KONVOI ESEMKA"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "dash", "damage": 20, "dash": 760, "reach": 140, "knockback": 300, "duration": 0.6, "hitAt": 0.55, "asset": "car", "size": 260}, "skill2": {"kind": "area", "damage": 16, "ahead": 0, "radius": 140, "vy": 140, "knockback": 280, "duration": 0.62, "hitAt": 0.5, "asset": "sarong"}}, "ultimate": {"kind": "stampede", "asset": "car", "count": 6, "gap": 0.4, "damage": 8, "speed": 1100, "size": 360, "lift": 100, "rx": 110, "ry": 140, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["bigcar", "burst", "car", "impact", "sarong", "sarongstorm"], "cutin": {"a": "#2a1c05", "b": "#8a6416", "kicker": "#fff0c0", "title": "KONVOI
ESEMKA", "detail": "A LINE OF CARS"}, "manifest": {"characterId": "soloman", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "green", "hex": "#00FF00", "rgb": [0, 255, 0], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 52, "top": -180, "bottom": 0}, "height": 180}, {"frame": 1, "bounds": {"left": -50, "right": 52, "top": -179, "bottom": 0}, "height": 179}, {"frame": 2, "bounds": {"left": -49, "right": 52, "top": -181, "bottom": 0}, "height": 181}, {"frame": 3, "bounds": {"left": -50, "right": 52, "top": -180, "bottom": 0}, "height": 180}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 55, "top": -166, "bottom": 0}, "height": 166}, {"frame": 1, "bounds": {"left": -24, "right": 34, "top": -168, "bottom": 0}, "height": 168}, {"frame": 2, "bounds": {"left": -50, "right": 53, "top": -166, "bottom": 0}, "height": 166}, {"frame": 3, "bounds": {"left": -41, "right": 48, "top": -166, "bottom": 0}, "height": 166}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -74, "right": 48, "top": -144, "bottom": 0}, "height": 144}, {"frame": 1, "bounds": {"left": -35, "right": 42, "top": -147, "bottom": 0}, "height": 147}, {"frame": 2, "bounds": {"left": -90, "right": 46, "top": -145, "bottom": 0}, "height": 145}, {"frame": 3, "bounds": {"left": -43, "right": 49, "top": -146, "bottom": 0}, "height": 146}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 68, "top": -151, "bottom": 0}, "height": 151}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -25, "right": 39, "top": -112, "bottom": 0}, "height": 112}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 57, "top": -150, "bottom": 0}, "height": 150}, {"frame": 1, "bounds": {"left": -49, "right": 53, "top": -123, "bottom": 0}, "height": 123}, {"frame": 2, "bounds": {"left": -56, "right": 61, "top": -136, "bottom": 0}, "height": 136}, {"frame": 3, "bounds": {"left": -48, "right": 53, "top": -152, "bottom": 0}, "height": 152}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 48, "top": -148, "bottom": 0}, "height": 148}, {"frame": 1, "bounds": {"left": -50, "right": 71, "top": -147, "bottom": 0}, "height": 147}, {"frame": 2, "bounds": {"left": -54, "right": 85, "top": -147, "bottom": 0}, "height": 147}, {"frame": 3, "bounds": {"left": -45, "right": 49, "top": -148, "bottom": 0}, "height": 148}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -60, "right": 57, "top": -168, "bottom": 0}, "height": 168}, {"frame": 1, "bounds": {"left": -59, "right": 55, "top": -168, "bottom": 0}, "height": 168}, {"frame": 2, "bounds": {"left": -61, "right": 65, "top": -167, "bottom": 0}, "height": 167}, {"frame": 3, "bounds": {"left": -55, "right": 57, "top": -168, "bottom": 0}, "height": 168}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -59, "right": 59, "top": -138, "bottom": 0}, "height": 138}, {"frame": 1, "bounds": {"left": -55, "right": 46, "top": -136, "bottom": 0}, "height": 136}, {"frame": 2, "bounds": {"left": -64, "right": 88, "top": -132, "bottom": 0}, "height": 132}, {"frame": 3, "bounds": {"left": -49, "right": 50, "top": -150, "bottom": 0}, "height": 150}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 48, "top": -98, "bottom": 0}, "height": 98}, {"frame": 1, "bounds": {"left": -53, "right": 66, "top": -120, "bottom": 0}, "height": 120}, {"frame": 2, "bounds": {"left": -36, "right": 118, "top": -108, "bottom": 0}, "height": 108}, {"frame": 3, "bounds": {"left": -45, "right": 45, "top": -137, "bottom": 0}, "height": 137}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 51, "top": -141, "bottom": 0}, "height": 141}, {"frame": 1, "bounds": {"left": -57, "right": 62, "top": -135, "bottom": 0}, "height": 135}, {"frame": 2, "bounds": {"left": -54, "right": 68, "top": -145, "bottom": 0}, "height": 145}, {"frame": 3, "bounds": {"left": -52, "right": 52, "top": -139, "bottom": 0}, "height": 139}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 51, "top": -125, "bottom": 0}, "height": 125}, {"frame": 1, "bounds": {"left": -73, "right": 69, "top": -151, "bottom": 0}, "height": 151}, {"frame": 2, "bounds": {"left": -51, "right": 69, "top": -142, "bottom": 0}, "height": 142}, {"frame": 3, "bounds": {"left": -59, "right": 72, "top": -137, "bottom": 0}, "height": 137}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 54, "top": -150, "bottom": 0}, "height": 150}, {"frame": 1, "bounds": {"left": -64, "right": 54, "top": -155, "bottom": 0}, "height": 155}, {"frame": 2, "bounds": {"left": -48, "right": 53, "top": -150, "bottom": 0}, "height": 150}, {"frame": 3, "bounds": {"left": -49, "right": 51, "top": -157, "bottom": 0}, "height": 157}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 46, "top": -112, "bottom": 0}, "height": 112}, {"frame": 1, "bounds": {"left": -90, "right": 21, "top": -96, "bottom": 0}, "height": 96}, {"frame": 2, "bounds": {"left": -56, "right": 61, "top": -62, "bottom": 0}, "height": 62}, {"frame": 3, "bounds": {"left": -63, "right": 64, "top": -31, "bottom": 0}, "height": 31}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -64, "right": 67, "top": -52, "bottom": 0}, "height": 52}, {"frame": 1, "bounds": {"left": -67, "right": 52, "top": -81, "bottom": 0}, "height": 81}, {"frame": 2, "bounds": {"left": -35, "right": 41, "top": -108, "bottom": 0}, "height": 108}, {"frame": 3, "bounds": {"left": -45, "right": 47, "top": -145, "bottom": 0}, "height": 145}]}}, "emitters": {"attack1": {"x": 85, "y": -111, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 65, "y": -116, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 88, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 118, "y": -69, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 68, "y": -89, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 69, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 17, "y": -76}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 7, "y": -56}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE BLUSUKAN", "label": "BLUSUKAN", "announce": "MODE BLUSUKAN!", "duration": 10, "damageMul": 1.35, "speedMul": 1.25, "reachAdd": 20, "aura": "#ffd24a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["KIBAS BADAI", "KONVOI MINI", "SARUNG BADAI", "KONVOI RAKSASA"], "skills": {"skill1": {"kind": "wave", "damage": 22, "speed": 900, "range": 640, "size": 330, "tall": 180, "knockback": 260, "duration": 0.6, "hitAt": 0.5, "asset": "car", "pierce": true, "fx": "drive", "convoy": {"n": 3, "mul": 0.36, "gap": 0.14}}, "skill2": {"kind": "area", "damage": 26, "ahead": 0, "radius": 200, "vy": 150, "knockback": 320, "duration": 0.62, "hitAt": 0.5, "asset": "sarongstorm", "pull": 520}}, "ultimate": {"kind": "stampede", "asset": "bigcar", "count": 9, "gap": 0.28, "damage": 6, "speed": 1200, "size": 430, "lift": 120, "rx": 120, "ry": 150, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "cutin": {"a": "#2a1c00", "b": "#b8861a", "kicker": "#fff2c8", "title": "KONVOI
RAKSASA", "detail": "THE ROUTE NEVER ENDS"}}};
+window.FIGHTERS.soloman={"id": "soloman", "name": "SOLO MAN", "tag": "THE SIMPLE ONE", "race": "HUMAN", "title": "SIMPLE ONE", "color": "#e0b04a", "status": "ON THE ROUTE", "select": "assets/menu/soloman-select.webp", "detail": "Soft-spoken, slim, and then a convoy arrives.", "style": "Rushdown / dash and cloth", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["KIBAS SARUNG", "ESEMKA RUSH", "SARUNG PUTAR", "KONVOI ESEMKA"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "dash", "damage": 22, "dash": 760, "reach": 140, "knockback": 300, "duration": 0.6, "hitAt": 0.55, "asset": "car", "size": 260}, "skill2": {"kind": "area", "damage": 18, "ahead": 0, "radius": 140, "vy": 140, "knockback": 280, "duration": 0.62, "hitAt": 0.5, "asset": "sarong"}}, "ultimate": {"kind": "stampede", "asset": "car", "count": 7, "gap": 0.4, "damage": 9, "speed": 1100, "size": 360, "lift": 100, "rx": 110, "ry": 140, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["bigcar", "burst", "car", "impact", "sarong", "sarongstorm"], "cutin": {"a": "#2a1c05", "b": "#8a6416", "kicker": "#fff0c0", "title": "KONVOI
ESEMKA", "detail": "A LINE OF CARS"}, "manifest": {"characterId": "soloman", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "green", "hex": "#00FF00", "rgb": [0, 255, 0], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -49, "right": 52, "top": -180, "bottom": 0}, "height": 180}, {"frame": 1, "bounds": {"left": -50, "right": 52, "top": -179, "bottom": 0}, "height": 179}, {"frame": 2, "bounds": {"left": -49, "right": 52, "top": -181, "bottom": 0}, "height": 181}, {"frame": 3, "bounds": {"left": -50, "right": 52, "top": -180, "bottom": 0}, "height": 180}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 55, "top": -166, "bottom": 0}, "height": 166}, {"frame": 1, "bounds": {"left": -24, "right": 34, "top": -168, "bottom": 0}, "height": 168}, {"frame": 2, "bounds": {"left": -50, "right": 53, "top": -166, "bottom": 0}, "height": 166}, {"frame": 3, "bounds": {"left": -41, "right": 48, "top": -166, "bottom": 0}, "height": 166}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -74, "right": 48, "top": -144, "bottom": 0}, "height": 144}, {"frame": 1, "bounds": {"left": -35, "right": 42, "top": -147, "bottom": 0}, "height": 147}, {"frame": 2, "bounds": {"left": -90, "right": 46, "top": -145, "bottom": 0}, "height": 145}, {"frame": 3, "bounds": {"left": -43, "right": 49, "top": -146, "bottom": 0}, "height": 146}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 68, "top": -151, "bottom": 0}, "height": 151}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -25, "right": 39, "top": -112, "bottom": 0}, "height": 112}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 57, "top": -150, "bottom": 0}, "height": 150}, {"frame": 1, "bounds": {"left": -49, "right": 53, "top": -123, "bottom": 0}, "height": 123}, {"frame": 2, "bounds": {"left": -56, "right": 61, "top": -136, "bottom": 0}, "height": 136}, {"frame": 3, "bounds": {"left": -48, "right": 53, "top": -152, "bottom": 0}, "height": 152}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -45, "right": 48, "top": -148, "bottom": 0}, "height": 148}, {"frame": 1, "bounds": {"left": -50, "right": 71, "top": -147, "bottom": 0}, "height": 147}, {"frame": 2, "bounds": {"left": -54, "right": 85, "top": -147, "bottom": 0}, "height": 147}, {"frame": 3, "bounds": {"left": -45, "right": 49, "top": -148, "bottom": 0}, "height": 148}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -60, "right": 57, "top": -168, "bottom": 0}, "height": 168}, {"frame": 1, "bounds": {"left": -59, "right": 55, "top": -168, "bottom": 0}, "height": 168}, {"frame": 2, "bounds": {"left": -61, "right": 65, "top": -167, "bottom": 0}, "height": 167}, {"frame": 3, "bounds": {"left": -55, "right": 57, "top": -168, "bottom": 0}, "height": 168}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -59, "right": 59, "top": -138, "bottom": 0}, "height": 138}, {"frame": 1, "bounds": {"left": -55, "right": 46, "top": -136, "bottom": 0}, "height": 136}, {"frame": 2, "bounds": {"left": -64, "right": 88, "top": -132, "bottom": 0}, "height": 132}, {"frame": 3, "bounds": {"left": -49, "right": 50, "top": -150, "bottom": 0}, "height": 150}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 48, "top": -98, "bottom": 0}, "height": 98}, {"frame": 1, "bounds": {"left": -53, "right": 66, "top": -120, "bottom": 0}, "height": 120}, {"frame": 2, "bounds": {"left": -36, "right": 118, "top": -108, "bottom": 0}, "height": 108}, {"frame": 3, "bounds": {"left": -45, "right": 45, "top": -137, "bottom": 0}, "height": 137}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -54, "right": 51, "top": -141, "bottom": 0}, "height": 141}, {"frame": 1, "bounds": {"left": -57, "right": 62, "top": -135, "bottom": 0}, "height": 135}, {"frame": 2, "bounds": {"left": -54, "right": 68, "top": -145, "bottom": 0}, "height": 145}, {"frame": 3, "bounds": {"left": -52, "right": 52, "top": -139, "bottom": 0}, "height": 139}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -50, "right": 51, "top": -125, "bottom": 0}, "height": 125}, {"frame": 1, "bounds": {"left": -73, "right": 69, "top": -151, "bottom": 0}, "height": 151}, {"frame": 2, "bounds": {"left": -51, "right": 69, "top": -142, "bottom": 0}, "height": 142}, {"frame": 3, "bounds": {"left": -59, "right": 72, "top": -137, "bottom": 0}, "height": 137}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 54, "top": -150, "bottom": 0}, "height": 150}, {"frame": 1, "bounds": {"left": -64, "right": 54, "top": -155, "bottom": 0}, "height": 155}, {"frame": 2, "bounds": {"left": -48, "right": 53, "top": -150, "bottom": 0}, "height": 150}, {"frame": 3, "bounds": {"left": -49, "right": 51, "top": -157, "bottom": 0}, "height": 157}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -63, "right": 46, "top": -112, "bottom": 0}, "height": 112}, {"frame": 1, "bounds": {"left": -90, "right": 21, "top": -96, "bottom": 0}, "height": 96}, {"frame": 2, "bounds": {"left": -56, "right": 61, "top": -62, "bottom": 0}, "height": 62}, {"frame": 3, "bounds": {"left": -63, "right": 64, "top": -31, "bottom": 0}, "height": 31}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -64, "right": 67, "top": -52, "bottom": 0}, "height": 52}, {"frame": 1, "bounds": {"left": -67, "right": 52, "top": -81, "bottom": 0}, "height": 81}, {"frame": 2, "bounds": {"left": -35, "right": 41, "top": -108, "bottom": 0}, "height": 108}, {"frame": 3, "bounds": {"left": -45, "right": 47, "top": -145, "bottom": 0}, "height": 145}]}}, "emitters": {"attack1": {"x": 85, "y": -111, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 65, "y": -116, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 88, "y": -108, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 118, "y": -69, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 68, "y": -89, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 69, "y": -112, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 17, "y": -76}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 7, "y": -56}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE BLUSUKAN", "label": "BLUSUKAN", "announce": "MODE BLUSUKAN!", "duration": 10, "damageMul": 1.35, "speedMul": 1.25, "reachAdd": 20, "aura": "#ffd24a", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["KIBAS BADAI", "KONVOI MINI", "SARUNG BADAI", "KONVOI RAKSASA"], "skills": {"skill1": {"kind": "wave", "damage": 22, "speed": 900, "range": 640, "size": 330, "tall": 180, "knockback": 260, "duration": 0.6, "hitAt": 0.5, "asset": "car", "pierce": true, "fx": "drive", "convoy": {"n": 3, "mul": 0.36, "gap": 0.14}}, "skill2": {"kind": "area", "damage": 26, "ahead": 0, "radius": 200, "vy": 150, "knockback": 320, "duration": 0.62, "hitAt": 0.5, "asset": "sarongstorm", "pull": 520}}, "ultimate": {"kind": "stampede", "asset": "bigcar", "count": 10, "gap": 0.28, "damage": 6, "speed": 1200, "size": 430, "lift": 120, "rx": 120, "ry": 150, "hold": 1.2, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "cutin": {"a": "#2a1c00", "b": "#b8861a", "kicker": "#fff2c8", "title": "KONVOI
RAKSASA", "detail": "THE ROUTE NEVER ENDS"}}};
diff --git a/browo.js b/browo.js
index 7004a06..b59ec34 100644
--- a/browo.js
+++ b/browo.js
@@ -21,7 +21,7 @@
// holds, then `treeCount` palms erupt in a rapid run toward the rival (`treeDamage` each) while the rival is held in place.
// At `giantAt` one giant palm rises (`giantRise`), leans back (`giantHold`) and is brought down on the rival (`slam`),
// dealing `giantDamage` and a knockdown. Afterwards BRO WO rampages (see `rage`).
- const forest = { cutinDuration:.78, zoomIn:.45, lockAt:.3, treesAt:1.45, treeCount:10, treeGap:.11, treeDamage:3,
+ const forest = { cutinDuration:.78, zoomIn:.45, lockAt:.3, treesAt:1.45, treeCount:10, treeGap:.11, treeDamage:4,
giantAt:2.85, giantRise:.55, giantHold:.3, slam:.16, giantDamage:40, tail:.55 };
forest.release = forest.giantAt + forest.giantRise + forest.giantHold + forest.slam;
forest.duration = forest.release + forest.tail;
diff --git a/content/passives.js b/content/passives.js
index 68035a9..9f474c1 100644
--- a/content/passives.js
+++ b/content/passives.js
@@ -8,7 +8,7 @@
cdSkill kecepatan pulih skill 1 dan 2 cdUlt kecepatan pulih ultimate
parry jendela parry (pemain) dan peluang blok (CPU) modeDur durasi mode pasca-ultimate
Kunci penambah (0 = tanpa perubahan): regen = HP per detik yang pulih bila tidak terkena serangan selama 3 detik.
- Angka sengaja kecil (sekitar 5 sampai 12 persen). Teks angka yang tampil ke pemain disusun otomatis dari `mods`, jadi deskripsi di sini hanya cerita
+ Angka sengaja kecil (sekitar 3 sampai 12 persen); disetel dengan simulator keseimbangan, riwayatnya di docs/balance-report.md. Teks angka yang tampil ke pemain disusun otomatis dari `mods`, jadi deskripsi di sini hanya cerita
dan tidak boleh memuat angka (supaya tidak ketinggalan saat angka disetel ulang). Pemisahan perk/kelemahan dibaca dari arah angkanya. */
window.PASSIVES = {
browo: {
@@ -19,7 +19,7 @@ window.PASSIVES = {
megachan: {
name: 'KEPALA BANTENG', desc: 'Keras kepala, keras tekad: pukulan lawan terasa lebih ringan.',
flaw: { name: 'LANGKAH BERAT', desc: 'Badan kokoh membuat jalannya pelan.' },
- mods: { dmgIn: .92, walk: .92 }
+ mods: { dmgIn: .95, walk: .92 }
},
sonofsolo: {
name: 'RACIKAN PEKAT', desc: 'Asam racikannya makin pekat: skill dan ultimate lebih nyelekit.',
@@ -29,7 +29,7 @@ window.PASSIVES = {
ethanolman: {
name: 'BAHAN BAKAR HIJAU', desc: 'Energi terbarukan: perlahan memulihkan HP bila lama tidak diserang.',
flaw: { name: 'MESIN DINGIN', desc: 'Selalu butuh pemanasan, jadi semua cooldown pulih lebih lambat.' },
- mods: { regen: .5, cd: .95 }
+ mods: { regen: .5, cd: .96 }
},
anice: {
name: 'JAWABAN TEPAT', desc: 'Bicara terukur, bertahan terukur: jendela parry lebih lebar.',
@@ -39,12 +39,12 @@ window.PASSIVES = {
soloman: {
name: 'LANGKAH RINGAN', desc: 'Si sederhana melangkah enteng: jalan dan lari lebih cepat.',
flaw: { name: 'TENAGA SEADANYA', desc: 'Serba sederhana, termasuk tenaganya: semua damage lebih kecil.' },
- mods: { walk: 1.1, dmgOut: .94 }
+ mods: { walk: 1.1, dmgOut: .97 }
},
gufron: {
name: 'BAHASA SEMUT', desc: 'Koloni cepat siap lagi: kedua skill pulih lebih cepat.',
flaw: { name: 'JAB NYENTRIK', desc: 'Pukulan dasarnya kurang meyakinkan, jadi damage kombo dasar lebih kecil.' },
- mods: { cdSkill: 1.12, dmgBasic: .88 }
+ mods: { cdSkill: 1.05, dmgBasic: .88 }
}
};
// Gaya bertarung per karakter: dipilih pemain di menu Karakter (disimpan di Meta.save.style[id]); CPU memakai gaya acak per pertandingan.
diff --git a/docs/balance-after.json b/docs/balance-after.json
new file mode 100644
index 0000000..14fc350
--- /dev/null
+++ b/docs/balance-after.json
@@ -0,0 +1,135 @@
+{
+ "date": "2026-10-05",
+ "label": "Setelah penyetelan",
+ "n": 8,
+ "level": "hard",
+ "seed": 11,
+ "chr": [
+ {
+ "id": "megachan",
+ "w": 56,
+ "l": 40,
+ "d": 0,
+ "n": 96,
+ "rate": 58.333333333333336,
+ "hpWin": 45.107142857142854,
+ "hpAll": 26.3125,
+ "dur": 18.772395833333334,
+ "to": 0,
+ "asBot": 100,
+ "asCpu": 16.666666666666664,
+ "tier": "S"
+ },
+ {
+ "id": "gufron",
+ "w": 54,
+ "l": 42,
+ "d": 0,
+ "n": 96,
+ "rate": 56.25,
+ "hpWin": 35.407407407407405,
+ "hpAll": 19.916666666666668,
+ "dur": 18.824270833333333,
+ "to": 0,
+ "asBot": 81.25,
+ "asCpu": 31.25,
+ "tier": "A"
+ },
+ {
+ "id": "sonofsolo",
+ "w": 51,
+ "l": 45,
+ "d": 0,
+ "n": 96,
+ "rate": 53.125,
+ "hpWin": 28.607843137254903,
+ "hpAll": 15.197916666666666,
+ "dur": 17.826875,
+ "to": 0,
+ "asBot": 77.08333333333334,
+ "asCpu": 29.166666666666668,
+ "tier": "A"
+ },
+ {
+ "id": "anice",
+ "w": 47,
+ "l": 49,
+ "d": 0,
+ "n": 96,
+ "rate": 48.95833333333333,
+ "hpWin": 28.70212765957447,
+ "hpAll": 14.052083333333334,
+ "dur": 17.625312499999996,
+ "to": 0,
+ "asBot": 87.5,
+ "asCpu": 10.416666666666668,
+ "tier": "B"
+ },
+ {
+ "id": "browo",
+ "w": 43,
+ "l": 53,
+ "d": 0,
+ "n": 96,
+ "rate": 44.79166666666667,
+ "hpWin": 33.41860465116279,
+ "hpAll": 14.96875,
+ "dur": 17.465416666666666,
+ "to": 0,
+ "asBot": 66.66666666666666,
+ "asCpu": 22.916666666666664,
+ "tier": "C"
+ },
+ {
+ "id": "ethanolman",
+ "w": 43,
+ "l": 53,
+ "d": 0,
+ "n": 96,
+ "rate": 44.79166666666667,
+ "hpWin": 45.604651162790695,
+ "hpAll": 20.427083333333332,
+ "dur": 17.44145833333333,
+ "to": 0,
+ "asBot": 79.16666666666666,
+ "asCpu": 10.416666666666668,
+ "tier": "C"
+ },
+ {
+ "id": "soloman",
+ "w": 42,
+ "l": 54,
+ "d": 0,
+ "n": 96,
+ "rate": 43.75,
+ "hpWin": 46.38095238095238,
+ "hpAll": 20.291666666666668,
+ "dur": 17.6671875,
+ "to": 0,
+ "asBot": 72.91666666666666,
+ "asCpu": 14.583333333333334,
+ "tier": "C"
+ }
+ ],
+ "side": {
+ "hero": {
+ "w": 271,
+ "l": 65,
+ "d": 0,
+ "n": 336
+ },
+ "mirror": {
+ "w": 43,
+ "l": 13,
+ "d": 0,
+ "n": 56
+ },
+ "stuck": 0,
+ "ult": {
+ "bot": 0,
+ "cpu": 135,
+ "both": 257,
+ "none": 0
+ }
+ }
+}
diff --git a/docs/balance-report.md b/docs/balance-report.md
new file mode 100644
index 0000000..56d6e0d
--- /dev/null
+++ b/docs/balance-report.md
@@ -0,0 +1,124 @@
+# Laporan keseimbangan karakter
+
+Dibuat oleh `node tests/harness.mjs tests/balance.mjs` (simulator RENCANA 5.1). Tanggal: **2026-10-05** · Jalan: **Setelah penyetelan**.
+
+- Tingkat CPU: **hard** · ronde per pasangan arah: **8** · karakter: BRO WO, MEGA CHAN, SON OF SOLO MAN, ETHANOL MAN, A NICE, SOLO MAN, GUFRON.
+- Satu **ronde** = satu pertarungan sampai K.O. atau waktu habis (90 dtk), arena Bellora, gaya Seimbang, tanpa layar VS. Pasif dan kelemahan karakter ikut aktif.
+- Tiap pasangan dimainkan di **kedua posisi** (A sebagai bot lalu B sebagai bot) dan digabung. Pertandingan cermin (karakter sama) hanya dipakai sebagai pembanding bot terhadap CPU, tidak masuk persentase karakter.
+- Bot pemain (tests/bot.mjs) mendekat, memukul dan menyambung kombo, memakai skill saat jaraknya cocok dan akan kena, memblok atau parry sebagian serangan yang terbaca setelah jeda reaksi, kadang melompati proyektil, dan **membalas ultimate lawan dengan ultimate** (atau memakainya sendiri setelah 8 dtk). Tidak memakai lempar, jurus perintah, atau jurus toko, dan tidak menghindari genangan.
+- Total ronde dimainkan: 392 (termasuk cermin). Ronde macet: 0.
+
+## Persentase menang per karakter
+
+Persen menang = (menang + setengah seri) dibagi jumlah ronde lawan non-cermin, gabungan kedua posisi. Sisa HP dari 200.
+
+| # | Karakter | Menang % | Tier | M-K-S | Menang sbg bot % | Menang sbg CPU % | Sisa HP saat menang | Sisa HP akhir ronde | Durasi rata-rata (dtk) |
+| ---: | --- | ---: | :---: | :---: | ---: | ---: | ---: | ---: | ---: |
+| 1 | MEGA CHAN | **58,3** | S | 56-40-0 | 100,0 | 16,7 | 45,1 | 26,3 | 18,8 |
+| 2 | GUFRON | **56,3** | A | 54-42-0 | 81,3 | 31,3 | 35,4 | 19,9 | 18,8 |
+| 3 | SON OF SOLO MAN | **53,1** | A | 51-45-0 | 77,1 | 29,2 | 28,6 | 15,2 | 17,8 |
+| 4 | A NICE | **49,0** | B | 47-49-0 | 87,5 | 10,4 | 28,7 | 14,1 | 17,6 |
+| 5 | BRO WO | **44,8** | C | 43-53-0 | 66,7 | 22,9 | 33,4 | 15,0 | 17,5 |
+| 6 | ETHANOL MAN | **44,8** | C | 43-53-0 | 79,2 | 10,4 | 45,6 | 20,4 | 17,4 |
+| 7 | SOLO MAN | **43,8** | C | 42-54-0 | 72,9 | 14,6 | 46,4 | 20,3 | 17,7 |
+
+## Posisi: bot melawan CPU
+
+- Pertandingan non-cermin: bot menang **80,7%**, CPU menang 19,3%, seri 0,0% (336 ronde).
+- Pertandingan cermin (karakter sama, hanya cermin posisi): bot menang **76,8%**, CPU menang 23,2%, seri 0,0% (56 ronde). Selisih dari 50% menunjukkan keunggulan struktural satu posisi (urutan pemrosesan, kebal saat jurus, bonus counter hanya untuk pemain); karena tiap karakter dimainkan di kedua posisi, selisih ini saling meniadakan di persentase per karakter.
+
+- Ultimate pertama dalam ronde (semua ronde): bot lebih dulu **0,0%**, CPU lebih dulu **34,4%**, hampir bersamaan (selisih di bawah 0,3 dtk, saling kunci) 65,6%, tak ada yang memakai 0,0%.
+
+## Tabel menang-kalah 7 x 7
+
+Persen menang karakter **baris** terhadap karakter **kolom**, gabungan kedua posisi (`M-K-S` ada di tabel berikutnya).
+
+| baris \ kolom | BRO WO | MEGA CHAN | SON OF SOLO MAN | ETHANOL MAN | A NICE | SOLO MAN | GUFRON |
+| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
+| **BRO WO** | · | 50% | 44% | 50% | 56% | 56% | 13% |
+| **MEGA CHAN** | 50% | · | 50% | 56% | 69% | 56% | 69% |
+| **SON OF SOLO MAN** | 56% | 50% | · | 75% | 44% | 63% | 31% |
+| **ETHANOL MAN** | 50% | 44% | 25% | · | 50% | 63% | 38% |
+| **A NICE** | 44% | 31% | 56% | 50% | · | 50% | 63% |
+| **SOLO MAN** | 44% | 44% | 38% | 38% | 50% | · | 50% |
+| **GUFRON** | 88% | 31% | 69% | 63% | 38% | 50% | · |
+
+### Menang-kalah-seri (ronde)
+
+| baris \ kolom | BRO WO | MEGA CHAN | SON OF SOLO MAN | ETHANOL MAN | A NICE | SOLO MAN | GUFRON |
+| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| **BRO WO** | · | 8-8-0 | 7-9-0 | 8-8-0 | 9-7-0 | 9-7-0 | 2-14-0 |
+| **MEGA CHAN** | 8-8-0 | · | 8-8-0 | 9-7-0 | 11-5-0 | 9-7-0 | 11-5-0 |
+| **SON OF SOLO MAN** | 9-7-0 | 8-8-0 | · | 12-4-0 | 7-9-0 | 10-6-0 | 5-11-0 |
+| **ETHANOL MAN** | 8-8-0 | 7-9-0 | 4-12-0 | · | 8-8-0 | 10-6-0 | 6-10-0 |
+| **A NICE** | 7-9-0 | 5-11-0 | 9-7-0 | 8-8-0 | · | 8-8-0 | 10-6-0 |
+| **SOLO MAN** | 7-9-0 | 7-9-0 | 6-10-0 | 6-10-0 | 8-8-0 | · | 8-8-0 |
+| **GUFRON** | 14-2-0 | 5-11-0 | 11-5-0 | 10-6-0 | 6-10-0 | 8-8-0 | · |
+
+## Sebelum dan sesudah penyetelan
+
+Sebelum: jalan "Sebelum penyetelan" (2026-10-05, 8 ronde per pasangan arah, benih 11). Sesudah: jalan ini (benih 11).
+
+| Karakter | Sebelum % | Sesudah % | Selisih | Tier sebelum | Tier sesudah |
+| --- | ---: | ---: | ---: | :---: | :---: |
+| MEGA CHAN | 78,1 | **58,3** | −19,8 | S | S |
+| GUFRON | 71,9 | **56,3** | −15,6 | S | A |
+| SON OF SOLO MAN | 50,0 | **53,1** | +3,1 | B | A |
+| A NICE | 52,1 | **49,0** | −3,1 | A | B |
+| BRO WO | 41,7 | **44,8** | +3,1 | C | C |
+| ETHANOL MAN | 27,1 | **44,8** | +17,7 | C | C |
+| SOLO MAN | 29,2 | **43,8** | +14,6 | C | C |
+
+## Cara membaca dan batasan
+
+- Angka berasal dari simulasi bot melawan CPU, **bukan kebenaran mutlak**. Dengan 8 ronde per pasangan arah, tiap karakter punya sekitar 96 ronde; galat acak sekitar ±5,1 poin persen (satu simpangan baku), jadi selisih di bawah itu belum berarti.
+- Ultimate dan mode pasca-ultimate mengunci lawan beberapa detik, sehingga siapa yang lebih dulu dan seberapa mematikan rangkaian ultimate-nya menentukan sebagian besar ronde. Bot sengaja membalas ultimate lawan agar yang diukur adalah adu rangkaian, bukan sekadar siapa menekan duluan.
+- Bot tidak menghindari genangan api atau asam dan tidak memakai lempar atau jurus toko, jadi karakter berbasis genangan mungkin sedikit terlalu tinggi dibanding pemain manusia yang pandai menghindar.
+- Batas tier: S ≥ 58% (Dewa Arena), A ≥ 52% (Jagoan Kampung), B ≥ 46% (Lumayan Lah), selebihnya C (Butuh Semangat).
+
+
+
+## Penyetelan angka (RENCANA 5.3)
+
+Hasil awal (benih 11, 8 ronde per pasangan arah): **MEGA CHAN 78,1%** dan **GUFRON 71,9%** di atas batas 65%, **ETHANOL MAN 27,1%** dan **SOLO MAN 29,2%** di bawah 35%. Angka disetel dalam empat putaran kecil: hanya angka data (manifest karakter, `browo.js`, `content/passives.js`), tanpa mengubah mekanik.
+
+| Karakter | Perubahan angka (sebelum → sesudah) |
+| --- | --- |
+| MEGA CHAN | ultimate: banteng 8 → 7; mode ultimate TANDUK NERAKA: damage per banteng 7 → 6; pasif KEPALA BANTENG: damage diterima −8% → −5% |
+| GUFRON | skill 1 BAHASA SEMUT: damage per semut 4 → 3 dan jumlah semut 10 → 8; ultimate: gelombang semut 9 → 8; mode ultimate: 12 → 11; pasif: pulih skill +12% → +5% |
+| SOLO MAN | skill 1 ESEMKA RUSH 20 → 22; skill 2 SARUNG PUTAR 16 → 18; ultimate KONVOI ESEMKA: mobil 6 → 7 dan damage per mobil 8 → 9; mode ultimate: mobil 9 → 10; kelemahan: damage keluar −6% → −3% |
+| ETHANOL MAN | skill 2 ETHANOL SPLASH 18 → 20; ultimate BANJIR BIOETANOL: damage per gelombang 9 → 10; mode ultimate: damage per pilar 4 → 5; kelemahan: pulih cooldown −5% → −4% |
+| BRO WO | ultimate HUTAN SAWIT: damage per pohon 3 → 4 |
+| A NICE, SON OF SOLO MAN | tidak diubah |
+
+Riwayat (persen menang, benih 11, 8 ronde per pasangan arah; satu putaran = satu kali jalan simulator sesudah beberapa perubahan sekaligus):
+
+| Karakter | Awal | Putaran 1 | Putaran 2 | Putaran 3 | Akhir (putaran 4, tabel di atas) |
+| --- | ---: | ---: | ---: | ---: | ---: |
+| MEGA CHAN | 78,1 | 53,1 | 47,9 | 52,1 | **58,3** |
+| GUFRON | 71,9 | 70,8 | 71,9 | 54,2 | **56,3** |
+| SON OF SOLO MAN | 50,0 | 46,9 | 55,2 | 52,1 | **53,1** |
+| A NICE | 52,1 | 47,9 | 46,9 | 47,9 | **49,0** |
+| BRO WO | 41,7 | 45,8 | 45,8 | 46,9 | **44,8** |
+| ETHANOL MAN | 27,1 | 49,0 | 51,0 | 55,2 | **44,8** |
+| SOLO MAN | 29,2 | 36,5 | 31,3 | 41,7 | **43,8** |
+
+Putaran 4 menambah buff kecil BRO WO (belum tersentuh sebelumnya, terendah pada jalan konfirmasi). Jalan konfirmasi dengan benih bot lain (benih 23, keadaan akhir, tidak tertulis ke laporan): GUFRON 62,5 · MEGA CHAN 52,1 · ETHANOL MAN 51,0 · A NICE 51,0 · SON OF SOLO MAN 49,0 · BRO WO 42,7 · SOLO MAN 41,7. Pada kedua jalan semua karakter berada di antara 41% dan 63%. Selisih antar putaran sebesar 5 sampai 10 poin masih wajar dari galat acak, jadi jangan membaca satu angka sebagai ukuran pasti.
+
+## Temuan penting
+
+1. **Rangkaian ultimate menentukan hampir semua ronde.** Terhadap sasaran pasif, ultimate pertama ditambah ultimate mode (pasca-ultimate) menghasilkan 110 sampai 148 damage dari 200 HP sebelum penyetelan (MEGA CHAN 148, A NICE 134, SON OF SOLO MAN 129, BRO WO 127, SOLO MAN 126, GUFRON 126, ETHANOL MAN 110), dan selama itu lawan terkunci. Bot yang dikunci CPU kehilangan rata-rata sekitar 155 HP per ronde dari rangkaian ultimate dan ultimate mode (diukur pada GUFRON dan MEGA CHAN sebagai CPU, 18 ronde masing-masing). Karena itu hampir semua penyetelan di atas menyentuh angka ultimate, dan satu atau dua damage per denyut bisa menggeser persen menang belasan poin.
+2. **Penutup ultimate menjatuhkan lawan.** Penutup (finisher) membuat sasaran jatuh dan bangun sekitar 2,1 dtk, dan denyut ultimate mode yang jatuh pada waktu itu tidak mengenai (sasaran jatuh dianggap tidak hidup oleh `bwAlive`). Memakai ultimate mode segera setelah rangkaian pertama membuang beberapa denyut; bot menunggu lawan bangun.
+3. **CPU hampir tidak pernah memakai skill 2 ETHANOL MAN dan SOLO MAN** (pada uji pasangan `tests/pairs.mjs`: SOLO MAN 0 dari 7 ronde, ETHANOL MAN 1 dari 7). Keduanya berjenis area tanpa `ahead` (jangkauan 135 dan 140), lebih pendek dari pukulan dasar (161), dan `cpuPick` selalu mendahulukan pukulan dasar, sedangkan penutup kombo (`cpuFollowUp`) praktis tidak pernah memenuhi `cpuLands` (sisa stun pemain lebih pendek dari waktu kena skill). Akibatnya kedua karakter ini lebih lemah sebagai lawan CPU daripada angka kitnya. Ini celah AI (mekanik), bukan angka; uji pasangan (`tests/pairs.mjs`) mencatatnya sebagai peringatan. Bila AI atau datanya diperbaiki (misalnya `ahead` di manifest), jalankan ulang simulator dan setel ulang kedua karakter.
+4. **Posisi bot punya keunggulan besar.** Bot menang 77 sampai 85% pada semua jalan, juga pada pertandingan cermin. Penyebabnya struktural (pemain kebal saat skill dan ultimate, bonus counter 25% hanya untuk pukulan pemain, urutan pemrosesan hero lebih dulu) ditambah bot yang cukup rapi. Persen menang per karakter menggabungkan kedua posisi sehingga keunggulan ini saling meniadakan, tetapi banyak pasangan berakhir 8-8-0 (bot menang di kedua posisi), yang berarti hasilnya ditentukan posisi dan bukan karakter. Resolusi pengukuran jadi lebih kasar; untuk keputusan penyetelan pakai `BAL_N` 12 atau lebih, atau lemahkan bot (`BAL_BOT`).
+5. **Pasangan paling timpang** (jalan akhir): GUFRON atas BRO WO 88% (14-2), SON OF SOLO MAN atas ETHANOL MAN 75%, MEGA CHAN atas A NICE dan atas GUFRON 69%. Pasangan GUFRON dan BRO WO layak diperiksa lebih dulu pada penyetelan berikutnya.
+6. **Kebijakan ultimate bot menentukan apa yang diukur.** Pada percobaan awal bot memakai ultimate sendiri pada detik ke-5 seperti CPU tanpa membalas, dan menang sekitar 93% ronde apa pun karakternya (siapa yang menekan duluan menang; tidak informatif). Maka bot kini membalas ultimate lawan dalam waktu reaksi: sekitar dua pertiga ronde menjadi adu rangkaian yang hampir bersamaan, dan sepertiga sisanya CPU lebih dulu (biasanya bot sedang terkena serangan atau sedang menjalankan skill saat CPU mulai).
+
+## Menjalankan ulang
+
+```bash
+BAL_N=8 BAL_WORKERS=2 BAL_LABEL="Setelah penyetelan" BAL_BASE=docs/balance-before.json BAL_JSON=docs/balance-after.json BAL_TIERS=1 \
+ node tests/harness.mjs tests/balance.mjs 2026-10-05
+```
+
+`BAL_BASE` memakai hasil sebelum penyetelan (`docs/balance-before.json`, benih 11, N=8) untuk tabel perbandingan, `BAL_TIERS=1` menulis ulang `content/tiers.js`, dan bagian ini (di bawah penanda catatan manual) dipertahankan. Hasilnya sama untuk benih, N, dan jumlah pekerja yang sama.