foitin/tools/finisher_timings.json
m3ultra c3d682b7dd Finisher timing pass: measured impact windows for all batch fighters
tools/tune_finishers.py detects each finisher's impact frame (max forward
extent of the sprite) and sets real-time totals + active windows; values
persist in finisher_timings.json and win over DEFAULT_FINISHER in tune.
kachujin/vesper keep hand-tuned values.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 14:31:13 +10:00

324 lines
4.4 KiB
JSON

{
"birdie": {
"total": 198,
"startup": 95,
"active": [
96,
119
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"96-119": [
[
0,
-320,
180,
300
]
]
}
},
"chef": {
"total": 138,
"startup": 23,
"active": [
24,
47
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"24-47": [
[
0,
-320,
180,
300
]
]
}
},
"decks": {
"total": 132,
"startup": 65,
"active": [
66,
89
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"66-89": [
[
0,
-320,
180,
300
]
]
}
},
"dread": {
"total": 204,
"startup": 131,
"active": [
132,
155
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"132-155": [
[
0,
-320,
180,
300
]
]
}
},
"elva": {
"total": 300,
"startup": 77,
"active": [
78,
101
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"78-101": [
[
0,
-320,
180,
300
]
]
}
},
"exec": {
"total": 144,
"startup": 65,
"active": [
66,
89
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"66-89": [
[
0,
-320,
180,
300
]
]
}
},
"jima": {
"total": 126,
"startup": 89,
"active": [
90,
113
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"90-113": [
[
0,
-320,
180,
300
]
]
}
},
"jinx": {
"total": 186,
"startup": 77,
"active": [
78,
101
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"78-101": [
[
0,
-320,
180,
300
]
]
}
},
"nappo": {
"total": 258,
"startup": 197,
"active": [
198,
221
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"198-221": [
[
0,
-320,
180,
300
]
]
}
},
"raver": {
"total": 258,
"startup": 197,
"active": [
198,
221
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"198-221": [
[
0,
-320,
180,
300
]
]
}
},
"roca": {
"total": 324,
"startup": 287,
"active": [
288,
311
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"288-311": [
[
0,
-320,
180,
300
]
]
}
},
"umbra": {
"total": 150,
"startup": 35,
"active": [
36,
59
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"36-59": [
[
0,
-320,
180,
300
]
]
}
},
"violet": {
"total": 126,
"startup": 53,
"active": [
54,
77
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"54-77": [
[
0,
-320,
180,
300
]
]
}
},
"widow": {
"total": 324,
"startup": 179,
"active": [
180,
203
],
"damage": 0,
"finisher": true,
"hitstun": 0,
"blockstun": 0,
"pushback": 0,
"hitboxes": {
"180-203": [
[
0,
-320,
180,
300
]
]
}
}
}