diff --git a/assets/gufron/manifest.js b/assets/gufron/manifest.js index d3f6b22..cd57321 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": 6, "speed": 520, "turn": 5, "spread": 60, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.4}, "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}}, "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": 48, "top": -156, "bottom": 0}, "height": 156}, {"frame": 1, "bounds": {"left": -27, "right": 46, "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": -79, "right": 50, "top": -136, "bottom": 0}, "height": 136}, {"frame": 1, "bounds": {"left": -33, "right": 38, "top": -138, "bottom": 0}, "height": 138}, {"frame": 2, "bounds": {"left": -73, "right": 59, "top": -136, "bottom": 0}, "height": 136}, {"frame": 3, "bounds": {"left": -45, "right": 41, "top": -138, "bottom": 0}, "height": 138}]}, "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": -49, "right": 48, "top": -149, "bottom": 0}, "height": 149}, {"frame": 1, "bounds": {"left": -44, "right": 46, "top": -125, "bottom": 0}, "height": 125}, {"frame": 2, "bounds": {"left": -50, "right": 56, "top": -133, "bottom": 0}, "height": 133}, {"frame": 3, "bounds": {"left": -47, "right": 48, "top": -147, "bottom": 0}, "height": 147}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -52, "right": 58, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -54, "right": 65, "top": -155, "bottom": 0}, "height": 155}, {"frame": 2, "bounds": {"left": -57, "right": 74, "top": -154, "bottom": 0}, "height": 154}, {"frame": 3, "bounds": {"left": -52, "right": 58, "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": -58, "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": -54, "right": 52, "top": -157, "bottom": 0}, "height": 157}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -55, "right": 56, "top": -145, "bottom": 0}, "height": 145}, {"frame": 1, "bounds": {"left": -55, "right": 61, "top": -144, "bottom": 0}, "height": 144}, {"frame": 2, "bounds": {"left": -63, "right": 73, "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": -51, "right": 55, "top": -127, "bottom": 0}, "height": 127}, {"frame": 1, "bounds": {"left": -53, "right": 55, "top": -118, "bottom": 0}, "height": 118}, {"frame": 2, "bounds": {"left": -59, "right": 61, "top": -110, "bottom": 0}, "height": 110}, {"frame": 3, "bounds": {"left": -51, "right": 51, "top": -143, "bottom": 0}, "height": 143}]}, "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": -60, "right": 82, "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": 63, "top": -155, "bottom": 0}, "height": 155}, {"frame": 1, "bounds": {"left": -72, "right": 48, "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": -55, "right": 54, "top": -112, "bottom": 0}, "height": 112}, {"frame": 1, "bounds": {"left": -70, "right": 50, "top": -78, "bottom": 0}, "height": 78}, {"frame": 2, "bounds": {"left": -52, "right": 68, "top": -49, "bottom": 0}, "height": 49}, {"frame": 3, "bounds": {"left": -54, "right": 69, "top": -28, "bottom": 0}, "height": 28}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -70, "right": 72, "top": -67, "bottom": 0}, "height": 67}, {"frame": 1, "bounds": {"left": -56, "right": 51, "top": -99, "bottom": 0}, "height": 99}, {"frame": 2, "bounds": {"left": -43, "right": 45, "top": -118, "bottom": 0}, "height": 118}, {"frame": 3, "bounds": {"left": -55, "right": 56, "top": -165, "bottom": 0}, "height": 165}]}}, "emitters": {"attack1": {"x": 74, "y": -122, "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": 73, "y": -78, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 61, "y": -18, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 82, "y": -136, "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": 10, "speed": 620, "turn": 5, "spread": 90, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.6}, "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}}, "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": 4, "count": 6, "speed": 520, "turn": 5, "spread": 60, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.4}, "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}}, "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": 10, "speed": 620, "turn": 5, "spread": 90, "size": 70, "knockback": 90, "duration": 0.6, "hitAt": 0.5, "asset": "ant", "life": 2.6}, "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}}, "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"}}}; diff --git a/assets/gufron/run/sprite-sheet-alpha.webp b/assets/gufron/run/sprite-sheet-alpha.webp index 124c20c..5c831f1 100644 Binary files a/assets/gufron/run/sprite-sheet-alpha.webp and b/assets/gufron/run/sprite-sheet-alpha.webp differ diff --git a/assets/soloman/manifest.js b/assets/soloman/manifest.js index 30d3524..70d0502 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": -29, "right": 32, "top": -96, "bottom": 0}, "height": 96}, {"frame": 1, "bounds": {"left": -14, "right": 20, "top": -97, "bottom": 0}, "height": 97}, {"frame": 2, "bounds": {"left": -29, "right": 30, "top": -96, "bottom": 0}, "height": 96}, {"frame": 3, "bounds": {"left": -24, "right": 28, "top": -96, "bottom": 0}, "height": 96}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -29, "right": 20, "top": -59, "bottom": 0}, "height": 59}, {"frame": 1, "bounds": {"left": -14, "right": 17, "top": -61, "bottom": 0}, "height": 61}, {"frame": 2, "bounds": {"left": -37, "right": 19, "top": -60, "bottom": 0}, "height": 60}, {"frame": 3, "bounds": {"left": -18, "right": 20, "top": -60, "bottom": 0}, "height": 60}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 67, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -24, "right": 37, "top": -106, "bottom": 0}, "height": 106}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -20, "right": 24, "top": -63, "bottom": 0}, "height": 63}, {"frame": 1, "bounds": {"left": -20, "right": 22, "top": -51, "bottom": 0}, "height": 51}, {"frame": 2, "bounds": {"left": -24, "right": 25, "top": -56, "bottom": 0}, "height": 56}, {"frame": 3, "bounds": {"left": -21, "right": 21, "top": -63, "bottom": 0}, "height": 63}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -19, "right": 20, "top": -62, "bottom": 0}, "height": 62}, {"frame": 1, "bounds": {"left": -21, "right": 30, "top": -62, "bottom": 0}, "height": 62}, {"frame": 2, "bounds": {"left": -23, "right": 35, "top": -62, "bottom": 0}, "height": 62}, {"frame": 3, "bounds": {"left": -19, "right": 20, "top": -62, "bottom": 0}, "height": 62}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -24, "right": 24, "top": -69, "bottom": 0}, "height": 69}, {"frame": 1, "bounds": {"left": -24, "right": 23, "top": -69, "bottom": 0}, "height": 69}, {"frame": 2, "bounds": {"left": -25, "right": 26, "top": -69, "bottom": 0}, "height": 69}, {"frame": 3, "bounds": {"left": -22, "right": 24, "top": -70, "bottom": 0}, "height": 70}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -24, "right": 25, "top": -58, "bottom": 0}, "height": 58}, {"frame": 1, "bounds": {"left": -23, "right": 19, "top": -57, "bottom": 0}, "height": 57}, {"frame": 2, "bounds": {"left": -27, "right": 36, "top": -55, "bottom": 0}, "height": 55}, {"frame": 3, "bounds": {"left": -20, "right": 21, "top": -63, "bottom": 0}, "height": 63}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -21, "right": 20, "top": -40, "bottom": 0}, "height": 40}, {"frame": 1, "bounds": {"left": -21, "right": 28, "top": -50, "bottom": 0}, "height": 50}, {"frame": 2, "bounds": {"left": -15, "right": 49, "top": -45, "bottom": 0}, "height": 45}, {"frame": 3, "bounds": {"left": -18, "right": 19, "top": -57, "bottom": 0}, "height": 57}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -22, "right": 21, "top": -59, "bottom": 0}, "height": 59}, {"frame": 1, "bounds": {"left": -24, "right": 25, "top": -56, "bottom": 0}, "height": 56}, {"frame": 2, "bounds": {"left": -23, "right": 28, "top": -60, "bottom": 0}, "height": 60}, {"frame": 3, "bounds": {"left": -22, "right": 21, "top": -58, "bottom": 0}, "height": 58}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -21, "right": 21, "top": -53, "bottom": 0}, "height": 53}, {"frame": 1, "bounds": {"left": -31, "right": 28, "top": -63, "bottom": 0}, "height": 63}, {"frame": 2, "bounds": {"left": -22, "right": 28, "top": -59, "bottom": 0}, "height": 59}, {"frame": 3, "bounds": {"left": -25, "right": 30, "top": -58, "bottom": 0}, "height": 58}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -19, "right": 22, "top": -61, "bottom": 0}, "height": 61}, {"frame": 1, "bounds": {"left": -26, "right": 22, "top": -63, "bottom": 0}, "height": 63}, {"frame": 2, "bounds": {"left": -20, "right": 22, "top": -61, "bottom": 0}, "height": 61}, {"frame": 3, "bounds": {"left": -21, "right": 21, "top": -64, "bottom": 0}, "height": 64}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -26, "right": 19, "top": -47, "bottom": 0}, "height": 47}, {"frame": 1, "bounds": {"left": -38, "right": 9, "top": -40, "bottom": 0}, "height": 40}, {"frame": 2, "bounds": {"left": -23, "right": 26, "top": -26, "bottom": 0}, "height": 26}, {"frame": 3, "bounds": {"left": -26, "right": 27, "top": -13, "bottom": 0}, "height": 13}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -27, "right": 29, "top": -22, "bottom": 0}, "height": 22}, {"frame": 1, "bounds": {"left": -28, "right": 22, "top": -34, "bottom": 0}, "height": 34}, {"frame": 2, "bounds": {"left": -15, "right": 17, "top": -46, "bottom": 0}, "height": 46}, {"frame": 3, "bounds": {"left": -19, "right": 19, "top": -61, "bottom": 0}, "height": 61}]}}, "emitters": {"attack1": {"x": 35, "y": -46, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 26, "y": -37, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 36, "y": -45, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 49, "y": -28, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 28, "y": -35, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 28, "y": -46, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 17, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 6, "y": -53}}, "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}, "skill2": {"kind": "area", "damage": 26, "ahead": 0, "radius": 200, "vy": 150, "knockback": 320, "duration": 0.62, "hitAt": 0.5, "asset": "sarongstorm"}}, "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": 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}, "skill2": {"kind": "area", "damage": 26, "ahead": 0, "radius": 200, "vy": 150, "knockback": 320, "duration": 0.62, "hitAt": 0.5, "asset": "sarongstorm"}}, "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"}}}; diff --git a/assets/soloman/run/sprite-sheet-alpha.webp b/assets/soloman/run/sprite-sheet-alpha.webp index 5f908b7..69cae05 100644 Binary files a/assets/soloman/run/sprite-sheet-alpha.webp and b/assets/soloman/run/sprite-sheet-alpha.webp differ diff --git a/files.json b/files.json index 394a4ae..f291874 100644 --- a/files.json +++ b/files.json @@ -1,6 +1,6 @@ { "files": 216, - "bytes": 30355057, + "bytes": 30910020, "list": [ { "file": "index.html", @@ -24,7 +24,7 @@ }, { "file": "game.js", - "bytes": 223237 + "bytes": 224243 }, { "file": "menu.js", @@ -444,7 +444,7 @@ }, { "file": "assets/gufron/run/sprite-sheet-alpha.webp", - "bytes": 952108 + "bytes": 955308 }, { "file": "assets/gufron/ui/cutin-mode.webp", @@ -664,11 +664,11 @@ }, { "file": "assets/soloman/manifest.js", - "bytes": 13766 + "bytes": 13857 }, { "file": "assets/soloman/run/sprite-sheet-alpha.webp", - "bytes": 270610 + "bytes": 821276 }, { "file": "assets/soloman/ui/cutin-mode.webp", diff --git a/game.js b/game.js index 4701a73..b1f4403 100644 --- a/game.js +++ b/game.js @@ -308,6 +308,20 @@ // Down-down+Space is an uppercut launcher, down-forward+Space a lunging punch. They reuse the fighter's own attack poses. const inputLog = []; const STATE_SCALE = { jump: 1.14, crouch: 1.1 }; + // Every pose is drawn so its height matches the fighter's idle height as closely as the pose allows (walk, run, jump and + // crouch were generated smaller than idle); computed once from the measured atlas bounds. + const stateKCache = new WeakMap(); + function stateK(mt, st) { + if (!['walk', 'run', 'crouch', 'jump'].includes(st)) return 1; + if (!mt?.states) return STATE_SCALE[st] || 1; + let c = stateKCache.get(mt); if (!c) stateKCache.set(mt, c = {}); + if (c[st] === undefined) { + const h = n => { const f = mt.states[n]?.frames; return f?.length ? f.reduce((a, x) => a + (x.bounds.bottom - x.bounds.top), 0) / f.length : 0; }; + const idle = h('idle'), cur = h(st); + c[st] = idle && cur ? Math.min(st === 'run' ? 1.2 : 1.25, Math.max(1, idle / cur * ({ walk: .97, run: .97, crouch: .85, jump: .95 })[st])) : 1; + } + return c[st]; + } function logInput(key) { if (!'sad'.includes(key)) return; inputLog.push({ k: key, t: time }); if (inputLog.length > 6) inputLog.shift(); } function commandFor() { const fwd = hero.facing > 0 ? 'd' : 'a', n = inputLog.length, last = inputLog[n - 1], prev = inputLog[n - 2]; @@ -1962,7 +1976,7 @@ const pose = heroPose(), index = pose.frame; const r = list[index], cw = manifest.cell?.width || manifest.cell?.w || r.w, ch = manifest.cell?.height || manifest.cell?.h || r.h; const anchorX = manifest.cell?.anchor_x ?? cw / 2, anchorY = manifest.cell?.anchor_y ?? ch - (manifest.cell?.safe_margin_y || 0); - const spriteScale = pose.scale * (STATE_SCALE[hero.state] || 1), skin = window.Meta?.skinFilter?.(selectedCharacter); + const spriteScale = pose.scale * stateK(metrics, hero.state), skin = window.Meta?.skinFilter?.(selectedCharacter); if (hero.shield > 0) { ctx.save(); ctx.strokeStyle = '#9fe8ff'; ctx.globalAlpha = Math.min(1, hero.shield) * .8; ctx.lineWidth = 4; ctx.beginPath(); ctx.ellipse(hero.x, hero.y - 90, 70, 105, 0, 0, Math.PI * 2); ctx.stroke(); ctx.restore(); } ctx.save(); if (skin) ctx.filter = skin; ctx.translate(Math.round(hero.x), Math.round(hero.y)); ctx.scale(hero.facing * spriteScale, spriteScale); ctx.imageSmoothingEnabled = false; if (pose.pivot) { ctx.translate(pose.worldPivot.x, pose.worldPivot.y); ctx.rotate(pose.rotation); ctx.translate(-pose.pivot.x, -pose.pivot.y); } @@ -1973,7 +1987,7 @@ shadow(dummy.x,CONFIG.groundY,dummy.state==='down'?65:opponentCharacter==='mira'?61:opponentCharacter==='haldor'?55:43,.20); if(!m||!img)return; const r=m.frame_layout.rows[pose.state][pose.frame]; - ctx.save();ctx.translate(Math.round(dummy.x),Math.round(dummy.y));{const k=STATE_SCALE[pose.state]||1;ctx.scale((dummy.facing||-1)*k,k);}ctx.imageSmoothingEnabled=false; + ctx.save();ctx.translate(Math.round(dummy.x),Math.round(dummy.y));{const om=CF[opponentCharacter]?(cfFormOn(opponentCharacter,'enemy')?CF[opponentCharacter].mode?.form?.metrics:CF[opponentCharacter].metrics):null,k=stateK(om,pose.state);ctx.scale((dummy.facing||-1)*k,k);}ctx.imageSmoothingEnabled=false; ctx.drawImage(img,r.x,r.y,r.w,r.h,-m.cell.width/2,-(m.cell.height-m.cell.safe_margin_y),r.w,r.h);ctx.restore(); if(dummy.action && !dummy.action.fired && dummy.action.type!=='ultimate') { ctx.save();ctx.strokeStyle='#f0b15e';ctx.lineWidth=2;ctx.globalAlpha=.7; diff --git a/guide/tools/rebuild_raw.py b/guide/tools/rebuild_raw.py index eb1c2ba..3df6e22 100644 --- a/guide/tools/rebuild_raw.py +++ b/guide/tools/rebuild_raw.py @@ -61,11 +61,13 @@ def main(): ap.add_argument("--target", type=float, default=0.5) ap.add_argument("--rel", default="1") ap.add_argument("--key", default="ff00ff") + ap.add_argument("--pitch", type=float, default=None, help="pakai pitch ini (pitch pose idle) untuk semua baris; pitch tiap baris kadang salah ukur") args = ap.parse_args() key = np.array([int(args.key[i:i + 2], 16) for i in (0, 2, 4)]) im = Image.open(args.src).convert("RGB") px, py = estimate_pixel_grid_runlen(im.convert("RGBA")) + if args.pitch: px = py = args.pitch base = args.target / ((px + py) / 2) rel = [float(v) for v in args.rel.split(",")] rel = rel * args.poses if len(rel) == 1 else rel diff --git a/precache.js b/precache.js index f271420..8821d51 100644 --- a/precache.js +++ b/precache.js @@ -1,2 +1,2 @@ /* Generated by tools/build_dist.mjs (regenerated by hand for Konoha Fighting): runtime files [path, bytes, sha1] for preload.js and sw.js. Do not edit. */ -self.AETHER_PRECACHE = {"version":"9766aad439b9","total":30355057,"files":[["index.html",12066,"7bf79cb3daf8"],["mobile.html",3638,"920bc9372dca"],["style.css",25814,"413539b8eaca"],["menu.css",28655,"006133147876"],["preload.js",4100,"b042759fb485"],["game.js",223237,"67fa65e845da"],["menu.js",21426,"2579f142a8e8"],["match.js",4217,"99ac57c18f9d"],["announcer.js",3087,"43ec8295c5f4"],["touch.js",4816,"124342a02504"],["fenr.js",2903,"30635da02da7"],["browo.js",5523,"31bd14753a39"],["assets/anice/form/run/sprite-sheet-alpha.webp",1363320,"3762ce677116"],["assets/anice/manifest.js",25215,"20eae2a0a515"],["assets/anice/run/sprite-sheet-alpha.webp",933198,"4fb2cd5820fd"],["assets/anice/ui/cutin-mode.webp",381008,"fed063c899f7"],["assets/anice/ui/cutin.webp",200842,"1fa39d1c9ca4"],["assets/anice/ui/fx-burst.webp",142064,"14ee91dba90e"],["assets/anice/ui/fx-impact.webp",16644,"c24b27799758"],["assets/anice/ui/fx-nano.webp",80992,"5740f5a80f75"],["assets/anice/ui/fx-nanoblast.webp",46472,"a1afa4bece15"],["assets/anice/ui/fx-podium.webp",84750,"19836aa8e6d5"],["assets/anice/ui/fx-tackle.webp",78640,"bfb7736dad93"],["assets/anice/ui/fx-words.webp",67296,"52a66cefabce"],["assets/anice/ui/icon-basic.webp",27784,"bf77858fa893"],["assets/anice/ui/icon-mode-skill1.webp",36626,"b48253629667"],["assets/anice/ui/icon-mode-skill2.webp",42382,"a3e42aa81355"],["assets/anice/ui/icon-mode-ultimate.webp",40962,"e07e3fcefe02"],["assets/anice/ui/icon-skill1.webp",27550,"8100a94969e9"],["assets/anice/ui/icon-skill2.webp",27416,"63f3eb5cfa99"],["assets/anice/ui/icon-ultimate.webp",29408,"fe832c87be0e"],["assets/anice/ui/portrait.webp",31204,"04876d7cf2d7"],["assets/audio/announcer/arco_wins.mp3",23031,"4e3734fb863a"],["assets/audio/announcer/double_ko.mp3",24285,"5b0ba10cfa89"],["assets/audio/announcer/draw.mp3",17598,"eb92b764316c"],["assets/audio/announcer/fenr_wins.mp3",24285,"9fe9cb3a833b"],["assets/audio/announcer/fight.mp3",17598,"8a64a7e3d192"],["assets/audio/announcer/ko.mp3",11328,"f3106c569e34"],["assets/audio/announcer/manifest.js",1478,"df99fff86510"],["assets/audio/announcer/round_1.mp3",17598,"fdcce639d88d"],["assets/audio/announcer/round_2.mp3",35570,"2598ef54b8c4"],["assets/audio/announcer/round_3.mp3",21359,"83ec7e4ec306"],["assets/audio/announcer/select_arco.mp3",15090,"b0856ea865dc"],["assets/audio/announcer/select_fenr.mp3",17598,"a7770529a39c"],["assets/audio/announcer/time_up.mp3",20106,"e59e9a60345e"],["assets/audio/arco-ultimate-dylan.mp3",36824,"0d6136cbf82a"],["assets/audio/music/midday-showdown.mp3",1571832,"65d22abb18d9"],["assets/browo/manifest.js",11367,"0059f584090e"],["assets/browo/run/sprite-sheet-alpha.webp",1034754,"b9298446ad0c"],["assets/browo/ui/cutin-fire.webp",400460,"4f0ee94bcc60"],["assets/browo/ui/cutin.webp",410306,"d11a6fa4e1c3"],["assets/browo/ui/fx-burntree.webp",108312,"fbbbe24e8ac5"],["assets/browo/ui/fx-impact.webp",15564,"3aeb4063798e"],["assets/browo/ui/fx-sawit.webp",111080,"9ee0c3ac2f35"],["assets/browo/ui/fx-sunburst.webp",47934,"59684833a729"],["assets/browo/ui/fx-tornado.webp",138990,"224d165f7c5e"],["assets/browo/ui/fx-truck.webp",53508,"674f1bf52fb8"],["assets/browo/ui/icon-basic.webp",31632,"dff834ddda1d"],["assets/browo/ui/icon-rage-skill1.webp",38234,"c098d1a0cb5a"],["assets/browo/ui/icon-rage-skill2.webp",41992,"efc7b8a053d3"],["assets/browo/ui/icon-rage-ultimate.webp",39076,"6720839976cc"],["assets/browo/ui/icon-skill1.webp",39968,"a7c877917434"],["assets/browo/ui/icon-skill2.webp",31528,"f5bbc58a5ecc"],["assets/browo/ui/icon-ultimate.webp",38878,"5128489c945a"],["assets/browo/ui/portrait.webp",44684,"4bb5c0c5ecee"],["assets/ethanolman/manifest.js",13894,"e40c1faebddc"],["assets/ethanolman/run/sprite-sheet-alpha.webp",885038,"1c058021275b"],["assets/ethanolman/ui/cutin-mode.webp",466514,"1e17fb1eca55"],["assets/ethanolman/ui/cutin.webp",468960,"7de0ef8ca909"],["assets/ethanolman/ui/fx-blast.webp",165684,"15e65b1dadca"],["assets/ethanolman/ui/fx-burst.webp",125934,"0fac6678b182"],["assets/ethanolman/ui/fx-fireflow.webp",55662,"7026e8fa0442"],["assets/ethanolman/ui/fx-firepillar.webp",92556,"97aabac66799"],["assets/ethanolman/ui/fx-flood.webp",103472,"c437d832d1ad"],["assets/ethanolman/ui/fx-impact.webp",16930,"c15448d4f325"],["assets/ethanolman/ui/fx-splash.webp",157048,"32aff8cf663e"],["assets/ethanolman/ui/fx-wave.webp",54982,"473d5a746675"],["assets/ethanolman/ui/icon-basic.webp",34308,"6c4939cd2b42"],["assets/ethanolman/ui/icon-mode-skill1.webp",41852,"8ed215cd9fce"],["assets/ethanolman/ui/icon-mode-skill2.webp",44852,"68d69cf3e7dc"],["assets/ethanolman/ui/icon-mode-ultimate.webp",41016,"ac84b45e6512"],["assets/ethanolman/ui/icon-skill1.webp",38200,"4d8ea6fadb3e"],["assets/ethanolman/ui/icon-skill2.webp",34536,"cdf037f2d3f8"],["assets/ethanolman/ui/icon-ultimate.webp",40840,"380c19c26c36"],["assets/ethanolman/ui/portrait.webp",64936,"5eb8a1ac6b78"],["assets/fenr/audio/fenr-ultimate-holden.mp3",23031,"4d15d464b495"],["assets/fenr/human/manifest.js",11409,"fb5294ec1ce2"],["assets/fenr/human/run/sprite-sheet-alpha.webp",1486412,"0d6f47bb4cb5"],["assets/fenr/ui/cutin.webp",119558,"538658b309df"],["assets/fenr/ui/fx-bite.webp",8948,"b257d8dad484"],["assets/fenr/ui/fx-claw.webp",7178,"780d656a1837"],["assets/fenr/ui/fx-gale.webp",4970,"54bbac66f730"],["assets/fenr/ui/fx-howl.webp",10784,"3837b651a7a6"],["assets/fenr/ui/fx-rush.webp",10026,"ee5f015089dd"],["assets/fenr/ui/fx-transform.webp",15202,"aa9e6402f320"],["assets/fenr/ui/icon-human-basic.webp",11026,"a51720ccc2a1"],["assets/fenr/ui/icon-human-skill1.webp",6122,"028f0e547941"],["assets/fenr/ui/icon-human-skill2.webp",9938,"a04cc8d9767b"],["assets/fenr/ui/icon-ultimate.webp",14998,"bc755f2f7468"],["assets/fenr/ui/icon-wolf-basic.webp",15864,"54aeb1d66b05"],["assets/fenr/ui/icon-wolf-skill1.webp",10442,"0d5ada7ae5d2"],["assets/fenr/ui/icon-wolf-skill2.webp",8652,"a83241200084"],["assets/fenr/ui/portrait-human.webp",24324,"db4f7dbaea08"],["assets/fenr/ui/portrait-wolf.webp",27618,"3593d886c6e6"],["assets/fenr/wolf/manifest.js",11434,"cac1df6e1fe5"],["assets/fenr/wolf/run/sprite-sheet-alpha.webp",2360632,"c884ad55b290"],["assets/fonts/OFL.txt",4373,"061a0eb53e23"],["assets/fonts/Rajdhani-Bold.ttf",400680,"fb82c1992ff1"],["assets/fonts/Rajdhani-Medium.ttf",384348,"7837ff8a9aea"],["assets/gufron/manifest.js",13997,"bbb036cb8c22"],["assets/gufron/run/sprite-sheet-alpha.webp",952108,"f42f605027dd"],["assets/gufron/ui/cutin-mode.webp",385766,"547b288052c0"],["assets/gufron/ui/cutin.webp",376720,"bf17c8ef5576"],["assets/gufron/ui/fx-ant.webp",38064,"be9b39d4c04f"],["assets/gufron/ui/fx-antswarm.webp",44740,"cb4114217442"],["assets/gufron/ui/fx-burst.webp",132316,"c782bd4d854e"],["assets/gufron/ui/fx-giantant.webp",64786,"a2f603bfcbb6"],["assets/gufron/ui/fx-impact.webp",20724,"17c67b4d4699"],["assets/gufron/ui/fx-soundchain.webp",85598,"d4bdf799227e"],["assets/gufron/ui/fx-soundwave.webp",50296,"d578e131dae7"],["assets/gufron/ui/icon-basic.webp",33562,"6571eaa205c7"],["assets/gufron/ui/icon-mode-skill1.webp",39900,"c6f18a761bb1"],["assets/gufron/ui/icon-mode-skill2.webp",37666,"a9322f5d86aa"],["assets/gufron/ui/icon-mode-ultimate.webp",40038,"3d77d1409749"],["assets/gufron/ui/icon-skill1.webp",36430,"a5314f21e323"],["assets/gufron/ui/icon-skill2.webp",32212,"79fad79ff3ff"],["assets/gufron/ui/icon-ultimate.webp",39842,"9f145a38783e"],["assets/gufron/ui/portrait.webp",54520,"a1fab006ecd2"],["assets/mecha/manifest.js",13264,"6a57bf63b6e7"],["assets/mecha/run/sprite-sheet-alpha.webp",1140340,"02dfd7fc3f38"],["assets/megachan/manifest.js",13941,"a5d65eb7c9fb"],["assets/megachan/run/sprite-sheet-alpha.webp",1259292,"4ee735a8c199"],["assets/megachan/ui/cutin-mode.webp",361828,"162c7f48ee7e"],["assets/megachan/ui/cutin.webp",402302,"4d3f7c762127"],["assets/megachan/ui/fx-blackbull.webp",101600,"9473ab48136e"],["assets/megachan/ui/fx-bull.webp",71072,"e5cf32972bda"],["assets/megachan/ui/fx-bullflame.webp",62998,"4490c7e2930d"],["assets/megachan/ui/fx-burst.webp",140028,"49affed34a69"],["assets/megachan/ui/fx-firewave.webp",92234,"85ecc5b7c2d6"],["assets/megachan/ui/fx-hellbull.webp",88778,"f4bc116724f0"],["assets/megachan/ui/fx-impact.webp",18462,"6aecf90dfbe2"],["assets/megachan/ui/fx-soundwave.webp",52582,"95ef89ffc01f"],["assets/megachan/ui/icon-basic.webp",34370,"eb2234f905c9"],["assets/megachan/ui/icon-mode-skill1.webp",42356,"52f383e9f608"],["assets/megachan/ui/icon-mode-skill2.webp",35454,"f9e93e263bba"],["assets/megachan/ui/icon-mode-ultimate.webp",42464,"e9ff7e94a1a6"],["assets/megachan/ui/icon-skill1.webp",38852,"7ffd61cc9fab"],["assets/megachan/ui/icon-skill2.webp",35164,"836d4a372a92"],["assets/megachan/ui/icon-ultimate.webp",36534,"c600915ad2ac"],["assets/megachan/ui/portrait.webp",50208,"480c53efe5cf"],["assets/menu/anice-select.webp",84138,"2df5ad3aedec"],["assets/menu/azure-harbor.webp",116560,"e9b00d01e676"],["assets/menu/browo-select.webp",152000,"5b47b5c28cb2"],["assets/menu/elderwood.webp",130386,"ec28da7499fb"],["assets/menu/ethanolman-select.webp",110500,"338a537affa4"],["assets/menu/gufron-select.webp",141964,"556cea81f8bf"],["assets/menu/home-art.webp",188424,"3cccd1c9793b"],["assets/menu/home-factions-loop.mp4",1417101,"d48036ae3888"],["assets/menu/home-factions.webp",148524,"2068721bc197"],["assets/menu/locked.svg",768,"f3a3b427476c"],["assets/menu/megachan-select.webp",132458,"3183d7f39d7f"],["assets/menu/moonrise.webp",68134,"750461b81b3b"],["assets/menu/soloman-select.webp",110436,"d3f3ca73f203"],["assets/menu/sonofsolo-select.webp",89842,"f53866cb83d1"],["assets/menu/sunspire.webp",49268,"54b11853a23a"],["assets/soloman/manifest.js",13766,"35683e03761f"],["assets/soloman/run/sprite-sheet-alpha.webp",270610,"bcd4fd6cd6cb"],["assets/soloman/ui/cutin-mode.webp",365344,"c4c9c5dade73"],["assets/soloman/ui/cutin.webp",342288,"f74857a51a2a"],["assets/soloman/ui/fx-bigcar.webp",52920,"e338f3395245"],["assets/soloman/ui/fx-burst.webp",145262,"c7a4932ccbba"],["assets/soloman/ui/fx-car.webp",39348,"4b22dec17ae2"],["assets/soloman/ui/fx-impact.webp",18322,"37c84bd2ac07"],["assets/soloman/ui/fx-sarong.webp",80564,"d0efd9e6a754"],["assets/soloman/ui/fx-sarongstorm.webp",99630,"42feb9ba487e"],["assets/soloman/ui/icon-basic.webp",32998,"6c714fe220d3"],["assets/soloman/ui/icon-mode-skill1.webp",36614,"928acd22ab7d"],["assets/soloman/ui/icon-mode-skill2.webp",38390,"c3c8d5585157"],["assets/soloman/ui/icon-mode-ultimate.webp",38516,"82acaa3f5fd7"],["assets/soloman/ui/icon-skill1.webp",37222,"71e07a8fbde7"],["assets/soloman/ui/icon-skill2.webp",32592,"1684118d154c"],["assets/soloman/ui/icon-ultimate.webp",35204,"19eb66421733"],["assets/soloman/ui/portrait.webp",41504,"54af30bea16e"],["assets/sonofsolo/manifest.js",13987,"38b5634551cb"],["assets/sonofsolo/run/sprite-sheet-alpha.webp",794606,"d58e1110f2a1"],["assets/sonofsolo/ui/cutin-mode.webp",391760,"2c85475e78c0"],["assets/sonofsolo/ui/cutin.webp",372392,"18daa717980c"],["assets/sonofsolo/ui/fx-acidspray.webp",68430,"b368c4e8e418"],["assets/sonofsolo/ui/fx-bigpuddle.webp",34698,"550d00a48dfc"],["assets/sonofsolo/ui/fx-burst.webp",130608,"a59d08d91234"],["assets/sonofsolo/ui/fx-drop.webp",29396,"8808a822b5a0"],["assets/sonofsolo/ui/fx-flask.webp",36436,"e6df5128a9f5"],["assets/sonofsolo/ui/fx-impact.webp",21714,"f47cc13724fa"],["assets/sonofsolo/ui/fx-puddle.webp",25912,"1e2f93f15c65"],["assets/sonofsolo/ui/fx-soundwave.webp",70540,"dd1b34d135e5"],["assets/sonofsolo/ui/icon-basic.webp",32010,"a8939a2ff541"],["assets/sonofsolo/ui/icon-mode-skill1.webp",38246,"6adc58839078"],["assets/sonofsolo/ui/icon-mode-skill2.webp",36994,"5365bb50e06d"],["assets/sonofsolo/ui/icon-mode-ultimate.webp",37964,"a81dde34bbe7"],["assets/sonofsolo/ui/icon-skill1.webp",32678,"39f613bfb04d"],["assets/sonofsolo/ui/icon-skill2.webp",28192,"b847849c77a3"],["assets/sonofsolo/ui/icon-ultimate.webp",36286,"8e9c83500b0b"],["assets/sonofsolo/ui/portrait.webp",42766,"53f5f4b7532e"],["assets/stage-config.js",329,"a1a1d7579894"],["assets/stage.webp",84514,"35061ed6fae8"],["assets/ui/arco-avatar.webp",28238,"4c06b6cad40a"],["assets/ui/attack.webp",6744,"bd2b590d635e"],["assets/ui/drone-config.js",195,"f7e8e6490fc4"],["assets/ui/drone.png",18724,"474894562b64"],["assets/ui/dummy-avatar.webp",22410,"d3fbe1234b69"],["assets/ui/icons-check.webp",32114,"e27fecadcda7"],["assets/ui/skill1.webp",8908,"3228c3690fb8"],["assets/ui/skill2.webp",9788,"dceb3d2b71cd"],["assets/ui/squadron-icon.webp",6466,"ddedba88f295"],["assets/ui/ultimate-cutin.webp",126218,"599145541b00"],["assets/ui/ultimate.webp",7504,"770631fda059"]]}; +self.AETHER_PRECACHE = {"version":"630bd620e24e","total":30910020,"files":[["index.html",12066,"7bf79cb3daf8"],["mobile.html",3638,"920bc9372dca"],["style.css",25814,"413539b8eaca"],["menu.css",28655,"006133147876"],["preload.js",4100,"b042759fb485"],["game.js",224243,"3197e5dc6575"],["menu.js",21426,"2579f142a8e8"],["match.js",4217,"99ac57c18f9d"],["announcer.js",3087,"43ec8295c5f4"],["touch.js",4816,"124342a02504"],["fenr.js",2903,"30635da02da7"],["browo.js",5523,"31bd14753a39"],["assets/anice/form/run/sprite-sheet-alpha.webp",1363320,"3762ce677116"],["assets/anice/manifest.js",25215,"20eae2a0a515"],["assets/anice/run/sprite-sheet-alpha.webp",933198,"4fb2cd5820fd"],["assets/anice/ui/cutin-mode.webp",381008,"fed063c899f7"],["assets/anice/ui/cutin.webp",200842,"1fa39d1c9ca4"],["assets/anice/ui/fx-burst.webp",142064,"14ee91dba90e"],["assets/anice/ui/fx-impact.webp",16644,"c24b27799758"],["assets/anice/ui/fx-nano.webp",80992,"5740f5a80f75"],["assets/anice/ui/fx-nanoblast.webp",46472,"a1afa4bece15"],["assets/anice/ui/fx-podium.webp",84750,"19836aa8e6d5"],["assets/anice/ui/fx-tackle.webp",78640,"bfb7736dad93"],["assets/anice/ui/fx-words.webp",67296,"52a66cefabce"],["assets/anice/ui/icon-basic.webp",27784,"bf77858fa893"],["assets/anice/ui/icon-mode-skill1.webp",36626,"b48253629667"],["assets/anice/ui/icon-mode-skill2.webp",42382,"a3e42aa81355"],["assets/anice/ui/icon-mode-ultimate.webp",40962,"e07e3fcefe02"],["assets/anice/ui/icon-skill1.webp",27550,"8100a94969e9"],["assets/anice/ui/icon-skill2.webp",27416,"63f3eb5cfa99"],["assets/anice/ui/icon-ultimate.webp",29408,"fe832c87be0e"],["assets/anice/ui/portrait.webp",31204,"04876d7cf2d7"],["assets/audio/announcer/arco_wins.mp3",23031,"4e3734fb863a"],["assets/audio/announcer/double_ko.mp3",24285,"5b0ba10cfa89"],["assets/audio/announcer/draw.mp3",17598,"eb92b764316c"],["assets/audio/announcer/fenr_wins.mp3",24285,"9fe9cb3a833b"],["assets/audio/announcer/fight.mp3",17598,"8a64a7e3d192"],["assets/audio/announcer/ko.mp3",11328,"f3106c569e34"],["assets/audio/announcer/manifest.js",1478,"df99fff86510"],["assets/audio/announcer/round_1.mp3",17598,"fdcce639d88d"],["assets/audio/announcer/round_2.mp3",35570,"2598ef54b8c4"],["assets/audio/announcer/round_3.mp3",21359,"83ec7e4ec306"],["assets/audio/announcer/select_arco.mp3",15090,"b0856ea865dc"],["assets/audio/announcer/select_fenr.mp3",17598,"a7770529a39c"],["assets/audio/announcer/time_up.mp3",20106,"e59e9a60345e"],["assets/audio/arco-ultimate-dylan.mp3",36824,"0d6136cbf82a"],["assets/audio/music/midday-showdown.mp3",1571832,"65d22abb18d9"],["assets/browo/manifest.js",11367,"0059f584090e"],["assets/browo/run/sprite-sheet-alpha.webp",1034754,"b9298446ad0c"],["assets/browo/ui/cutin-fire.webp",400460,"4f0ee94bcc60"],["assets/browo/ui/cutin.webp",410306,"d11a6fa4e1c3"],["assets/browo/ui/fx-burntree.webp",108312,"fbbbe24e8ac5"],["assets/browo/ui/fx-impact.webp",15564,"3aeb4063798e"],["assets/browo/ui/fx-sawit.webp",111080,"9ee0c3ac2f35"],["assets/browo/ui/fx-sunburst.webp",47934,"59684833a729"],["assets/browo/ui/fx-tornado.webp",138990,"224d165f7c5e"],["assets/browo/ui/fx-truck.webp",53508,"674f1bf52fb8"],["assets/browo/ui/icon-basic.webp",31632,"dff834ddda1d"],["assets/browo/ui/icon-rage-skill1.webp",38234,"c098d1a0cb5a"],["assets/browo/ui/icon-rage-skill2.webp",41992,"efc7b8a053d3"],["assets/browo/ui/icon-rage-ultimate.webp",39076,"6720839976cc"],["assets/browo/ui/icon-skill1.webp",39968,"a7c877917434"],["assets/browo/ui/icon-skill2.webp",31528,"f5bbc58a5ecc"],["assets/browo/ui/icon-ultimate.webp",38878,"5128489c945a"],["assets/browo/ui/portrait.webp",44684,"4bb5c0c5ecee"],["assets/ethanolman/manifest.js",13894,"e40c1faebddc"],["assets/ethanolman/run/sprite-sheet-alpha.webp",885038,"1c058021275b"],["assets/ethanolman/ui/cutin-mode.webp",466514,"1e17fb1eca55"],["assets/ethanolman/ui/cutin.webp",468960,"7de0ef8ca909"],["assets/ethanolman/ui/fx-blast.webp",165684,"15e65b1dadca"],["assets/ethanolman/ui/fx-burst.webp",125934,"0fac6678b182"],["assets/ethanolman/ui/fx-fireflow.webp",55662,"7026e8fa0442"],["assets/ethanolman/ui/fx-firepillar.webp",92556,"97aabac66799"],["assets/ethanolman/ui/fx-flood.webp",103472,"c437d832d1ad"],["assets/ethanolman/ui/fx-impact.webp",16930,"c15448d4f325"],["assets/ethanolman/ui/fx-splash.webp",157048,"32aff8cf663e"],["assets/ethanolman/ui/fx-wave.webp",54982,"473d5a746675"],["assets/ethanolman/ui/icon-basic.webp",34308,"6c4939cd2b42"],["assets/ethanolman/ui/icon-mode-skill1.webp",41852,"8ed215cd9fce"],["assets/ethanolman/ui/icon-mode-skill2.webp",44852,"68d69cf3e7dc"],["assets/ethanolman/ui/icon-mode-ultimate.webp",41016,"ac84b45e6512"],["assets/ethanolman/ui/icon-skill1.webp",38200,"4d8ea6fadb3e"],["assets/ethanolman/ui/icon-skill2.webp",34536,"cdf037f2d3f8"],["assets/ethanolman/ui/icon-ultimate.webp",40840,"380c19c26c36"],["assets/ethanolman/ui/portrait.webp",64936,"5eb8a1ac6b78"],["assets/fenr/audio/fenr-ultimate-holden.mp3",23031,"4d15d464b495"],["assets/fenr/human/manifest.js",11409,"fb5294ec1ce2"],["assets/fenr/human/run/sprite-sheet-alpha.webp",1486412,"0d6f47bb4cb5"],["assets/fenr/ui/cutin.webp",119558,"538658b309df"],["assets/fenr/ui/fx-bite.webp",8948,"b257d8dad484"],["assets/fenr/ui/fx-claw.webp",7178,"780d656a1837"],["assets/fenr/ui/fx-gale.webp",4970,"54bbac66f730"],["assets/fenr/ui/fx-howl.webp",10784,"3837b651a7a6"],["assets/fenr/ui/fx-rush.webp",10026,"ee5f015089dd"],["assets/fenr/ui/fx-transform.webp",15202,"aa9e6402f320"],["assets/fenr/ui/icon-human-basic.webp",11026,"a51720ccc2a1"],["assets/fenr/ui/icon-human-skill1.webp",6122,"028f0e547941"],["assets/fenr/ui/icon-human-skill2.webp",9938,"a04cc8d9767b"],["assets/fenr/ui/icon-ultimate.webp",14998,"bc755f2f7468"],["assets/fenr/ui/icon-wolf-basic.webp",15864,"54aeb1d66b05"],["assets/fenr/ui/icon-wolf-skill1.webp",10442,"0d5ada7ae5d2"],["assets/fenr/ui/icon-wolf-skill2.webp",8652,"a83241200084"],["assets/fenr/ui/portrait-human.webp",24324,"db4f7dbaea08"],["assets/fenr/ui/portrait-wolf.webp",27618,"3593d886c6e6"],["assets/fenr/wolf/manifest.js",11434,"cac1df6e1fe5"],["assets/fenr/wolf/run/sprite-sheet-alpha.webp",2360632,"c884ad55b290"],["assets/fonts/OFL.txt",4373,"061a0eb53e23"],["assets/fonts/Rajdhani-Bold.ttf",400680,"fb82c1992ff1"],["assets/fonts/Rajdhani-Medium.ttf",384348,"7837ff8a9aea"],["assets/gufron/manifest.js",13997,"8648b217b20f"],["assets/gufron/run/sprite-sheet-alpha.webp",955308,"a800deeaa038"],["assets/gufron/ui/cutin-mode.webp",385766,"547b288052c0"],["assets/gufron/ui/cutin.webp",376720,"bf17c8ef5576"],["assets/gufron/ui/fx-ant.webp",38064,"be9b39d4c04f"],["assets/gufron/ui/fx-antswarm.webp",44740,"cb4114217442"],["assets/gufron/ui/fx-burst.webp",132316,"c782bd4d854e"],["assets/gufron/ui/fx-giantant.webp",64786,"a2f603bfcbb6"],["assets/gufron/ui/fx-impact.webp",20724,"17c67b4d4699"],["assets/gufron/ui/fx-soundchain.webp",85598,"d4bdf799227e"],["assets/gufron/ui/fx-soundwave.webp",50296,"d578e131dae7"],["assets/gufron/ui/icon-basic.webp",33562,"6571eaa205c7"],["assets/gufron/ui/icon-mode-skill1.webp",39900,"c6f18a761bb1"],["assets/gufron/ui/icon-mode-skill2.webp",37666,"a9322f5d86aa"],["assets/gufron/ui/icon-mode-ultimate.webp",40038,"3d77d1409749"],["assets/gufron/ui/icon-skill1.webp",36430,"a5314f21e323"],["assets/gufron/ui/icon-skill2.webp",32212,"79fad79ff3ff"],["assets/gufron/ui/icon-ultimate.webp",39842,"9f145a38783e"],["assets/gufron/ui/portrait.webp",54520,"a1fab006ecd2"],["assets/mecha/manifest.js",13264,"6a57bf63b6e7"],["assets/mecha/run/sprite-sheet-alpha.webp",1140340,"02dfd7fc3f38"],["assets/megachan/manifest.js",13941,"a5d65eb7c9fb"],["assets/megachan/run/sprite-sheet-alpha.webp",1259292,"4ee735a8c199"],["assets/megachan/ui/cutin-mode.webp",361828,"162c7f48ee7e"],["assets/megachan/ui/cutin.webp",402302,"4d3f7c762127"],["assets/megachan/ui/fx-blackbull.webp",101600,"9473ab48136e"],["assets/megachan/ui/fx-bull.webp",71072,"e5cf32972bda"],["assets/megachan/ui/fx-bullflame.webp",62998,"4490c7e2930d"],["assets/megachan/ui/fx-burst.webp",140028,"49affed34a69"],["assets/megachan/ui/fx-firewave.webp",92234,"85ecc5b7c2d6"],["assets/megachan/ui/fx-hellbull.webp",88778,"f4bc116724f0"],["assets/megachan/ui/fx-impact.webp",18462,"6aecf90dfbe2"],["assets/megachan/ui/fx-soundwave.webp",52582,"95ef89ffc01f"],["assets/megachan/ui/icon-basic.webp",34370,"eb2234f905c9"],["assets/megachan/ui/icon-mode-skill1.webp",42356,"52f383e9f608"],["assets/megachan/ui/icon-mode-skill2.webp",35454,"f9e93e263bba"],["assets/megachan/ui/icon-mode-ultimate.webp",42464,"e9ff7e94a1a6"],["assets/megachan/ui/icon-skill1.webp",38852,"7ffd61cc9fab"],["assets/megachan/ui/icon-skill2.webp",35164,"836d4a372a92"],["assets/megachan/ui/icon-ultimate.webp",36534,"c600915ad2ac"],["assets/megachan/ui/portrait.webp",50208,"480c53efe5cf"],["assets/menu/anice-select.webp",84138,"2df5ad3aedec"],["assets/menu/azure-harbor.webp",116560,"e9b00d01e676"],["assets/menu/browo-select.webp",152000,"5b47b5c28cb2"],["assets/menu/elderwood.webp",130386,"ec28da7499fb"],["assets/menu/ethanolman-select.webp",110500,"338a537affa4"],["assets/menu/gufron-select.webp",141964,"556cea81f8bf"],["assets/menu/home-art.webp",188424,"3cccd1c9793b"],["assets/menu/home-factions-loop.mp4",1417101,"d48036ae3888"],["assets/menu/home-factions.webp",148524,"2068721bc197"],["assets/menu/locked.svg",768,"f3a3b427476c"],["assets/menu/megachan-select.webp",132458,"3183d7f39d7f"],["assets/menu/moonrise.webp",68134,"750461b81b3b"],["assets/menu/soloman-select.webp",110436,"d3f3ca73f203"],["assets/menu/sonofsolo-select.webp",89842,"f53866cb83d1"],["assets/menu/sunspire.webp",49268,"54b11853a23a"],["assets/soloman/manifest.js",13857,"5b5bcde467f7"],["assets/soloman/run/sprite-sheet-alpha.webp",821276,"2420bf3d59c1"],["assets/soloman/ui/cutin-mode.webp",365344,"c4c9c5dade73"],["assets/soloman/ui/cutin.webp",342288,"f74857a51a2a"],["assets/soloman/ui/fx-bigcar.webp",52920,"e338f3395245"],["assets/soloman/ui/fx-burst.webp",145262,"c7a4932ccbba"],["assets/soloman/ui/fx-car.webp",39348,"4b22dec17ae2"],["assets/soloman/ui/fx-impact.webp",18322,"37c84bd2ac07"],["assets/soloman/ui/fx-sarong.webp",80564,"d0efd9e6a754"],["assets/soloman/ui/fx-sarongstorm.webp",99630,"42feb9ba487e"],["assets/soloman/ui/icon-basic.webp",32998,"6c714fe220d3"],["assets/soloman/ui/icon-mode-skill1.webp",36614,"928acd22ab7d"],["assets/soloman/ui/icon-mode-skill2.webp",38390,"c3c8d5585157"],["assets/soloman/ui/icon-mode-ultimate.webp",38516,"82acaa3f5fd7"],["assets/soloman/ui/icon-skill1.webp",37222,"71e07a8fbde7"],["assets/soloman/ui/icon-skill2.webp",32592,"1684118d154c"],["assets/soloman/ui/icon-ultimate.webp",35204,"19eb66421733"],["assets/soloman/ui/portrait.webp",41504,"54af30bea16e"],["assets/sonofsolo/manifest.js",13987,"38b5634551cb"],["assets/sonofsolo/run/sprite-sheet-alpha.webp",794606,"d58e1110f2a1"],["assets/sonofsolo/ui/cutin-mode.webp",391760,"2c85475e78c0"],["assets/sonofsolo/ui/cutin.webp",372392,"18daa717980c"],["assets/sonofsolo/ui/fx-acidspray.webp",68430,"b368c4e8e418"],["assets/sonofsolo/ui/fx-bigpuddle.webp",34698,"550d00a48dfc"],["assets/sonofsolo/ui/fx-burst.webp",130608,"a59d08d91234"],["assets/sonofsolo/ui/fx-drop.webp",29396,"8808a822b5a0"],["assets/sonofsolo/ui/fx-flask.webp",36436,"e6df5128a9f5"],["assets/sonofsolo/ui/fx-impact.webp",21714,"f47cc13724fa"],["assets/sonofsolo/ui/fx-puddle.webp",25912,"1e2f93f15c65"],["assets/sonofsolo/ui/fx-soundwave.webp",70540,"dd1b34d135e5"],["assets/sonofsolo/ui/icon-basic.webp",32010,"a8939a2ff541"],["assets/sonofsolo/ui/icon-mode-skill1.webp",38246,"6adc58839078"],["assets/sonofsolo/ui/icon-mode-skill2.webp",36994,"5365bb50e06d"],["assets/sonofsolo/ui/icon-mode-ultimate.webp",37964,"a81dde34bbe7"],["assets/sonofsolo/ui/icon-skill1.webp",32678,"39f613bfb04d"],["assets/sonofsolo/ui/icon-skill2.webp",28192,"b847849c77a3"],["assets/sonofsolo/ui/icon-ultimate.webp",36286,"8e9c83500b0b"],["assets/sonofsolo/ui/portrait.webp",42766,"53f5f4b7532e"],["assets/stage-config.js",329,"a1a1d7579894"],["assets/stage.webp",84514,"35061ed6fae8"],["assets/ui/arco-avatar.webp",28238,"4c06b6cad40a"],["assets/ui/attack.webp",6744,"bd2b590d635e"],["assets/ui/drone-config.js",195,"f7e8e6490fc4"],["assets/ui/drone.png",18724,"474894562b64"],["assets/ui/dummy-avatar.webp",22410,"d3fbe1234b69"],["assets/ui/icons-check.webp",32114,"e27fecadcda7"],["assets/ui/skill1.webp",8908,"3228c3690fb8"],["assets/ui/skill2.webp",9788,"dceb3d2b71cd"],["assets/ui/squadron-icon.webp",6466,"ddedba88f295"],["assets/ui/ultimate-cutin.webp",126218,"599145541b00"],["assets/ui/ultimate.webp",7504,"770631fda059"]]}; diff --git a/serve.py b/serve.py new file mode 100644 index 0000000..fde11c9 --- /dev/null +++ b/serve.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +"""Server lokal untuk pengembangan: python3 serve.py [port]. Mengirim Cache-Control: no-store supaya browser tidak memakai berkas lama.""" +import http.server, sys + +class Handler(http.server.SimpleHTTPRequestHandler): + def end_headers(self): + self.send_header('Cache-Control', 'no-store, max-age=0') + super().end_headers() + +port = int(sys.argv[1]) if len(sys.argv) > 1 else 8141 +http.server.ThreadingHTTPServer(('', port), Handler).serve_forever()