Commit 384c43c
fix: model tiered sub-set artifact bonuses (the ACC discrepancy root cause)
Chasing the ~20 ACC validation gap led to the real cause: 13 newer sets
(id 35/36/47/48/58-66, e.g. IncreaseAccuracyAndSpeedWithSkillEffects,
BlockReflectDebuffAndHpAndDef) have pieces=0 and store their bonus in a
piece-count LADDER (`sub_sets`), where each tier's StatBonuses is the TOTAL at
that count (not multiplied, not cumulative). The hero gets the highest tier
whose `pieces` <= owned count. e.g. set 36: 1pc=+20 ACC, 2pc=+20 ACC & +10% SPD,
3pc=+40 ACC … up to 9pc. IL2CPP confirms via ArtifactSubSetInfo
(ArtifactCount + List<StatBonus> StatBonuses).
Our artifact_sets.json was stale (no sub_sets); the mod already emits them.
Refreshed it, added SUB_SET_BONUSES (id -> sorted [(pieces, {stat: value})])
in gear_constants, and applied the highest-tier-<=-count lookup in calc_stats.
Validation jumped: Venom/Geo/Arbiter ACC now EXACT (were -20/-20/-40); Ninja
ACC improved 40 (one tier). Remaining: smaller DEF outliers (Cardiel/Ninja),
likely Divine on ACC/DEF or another tier. Default calc_stats (sim) path
unaffected — sub-set bonuses route through set_pct/set_flat which the
mod-column path ignores; same 2 pre-existing regression failures.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 1b0b0ad commit 384c43c
3 files changed
Lines changed: 57 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
| 3 | + | |
| 4 | + | |
7 | 5 | | |
8 | 6 | | |
9 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| |||
412 | 412 | | |
413 | 413 | | |
414 | 414 | | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
415 | 435 | | |
416 | 436 | | |
417 | 437 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
191 | 194 | | |
192 | 195 | | |
193 | 196 | | |
| |||
246 | 249 | | |
247 | 250 | | |
248 | 251 | | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
249 | 283 | | |
250 | 284 | | |
251 | 285 | | |
| |||
0 commit comments