diff --git a/docs/BESTIARY.md b/docs/BESTIARY.md index 12e3202..a537ba4 100644 --- a/docs/BESTIARY.md +++ b/docs/BESTIARY.md @@ -88,7 +88,7 @@ measured in the simulator and came to nothing distinguishable from noise. **What you can do is kill them one at a time.** Against a pack, every agent putting their attacks into the same creature beats spreading them — in 38 of the -38 fights in this book whose outcome was ever in doubt, and by more +38 packs in this book whose odds leave room for a difference to show, and by more than the measurement’s own noise in 36 of them. It is worth about **6 points** of win rate against a pair and **10 points** against three or more; the best case in the book is @@ -96,7 +96,9 @@ than the measurement’s own noise in 36 of them. It is worth about above: a creature that is dead stops attacking, and one on half its hit points does not attack any less. Held at a fixed pack size the dodge ladder is worth a point or two. -*(1000 fights × 3 seeds per arm, re-measured by `check-focus` on every build.)* +*(1000 fights × 3 seeds per arm, re-measured by `check-focus` on every build. +A pack is measured when its spread-fire odds stand clear of 0% and 100% by more than its own noise, so a fight nobody could lose +and a fight nobody could win are both left out.)* The ones that take the most stripping: diff --git a/tools/bestiary.mjs b/tools/bestiary.mjs index 4d0d4fd..e91fc7c 100644 --- a/tools/bestiary.mjs +++ b/tools/bestiary.mjs @@ -162,14 +162,17 @@ function focusParagraph() { const every = helped === rows.length && clear === rows.length; return `**What you can do is kill them one at a time.** Against a pack, every agent putting\n` + `their attacks into the same creature beats spreading them \u2014 in ${every ? "**every one**" : `${helped}`} of the\n` - + `${rows.length} fights in this book whose outcome was ever in doubt${every ? ", without exception" : ""}, and by more\n` + + `${rows.length} packs in this book whose odds leave room for a difference to show` + + `${every ? ", without exception" : ""}, and by more\n` + `than the measurement\u2019s own noise ${every ? "each time" : `in ${clear} of them`}. It is worth about\n` + `**${mean(pairs.map(r => r.gain)).toFixed(0)} points** of win rate against a pair and\n` + `**${mean(packs.map(r => r.gain)).toFixed(0)} points** against three or more; the best case in the book is\n` + `${best.n} \u00d7 ${esc(bestName)}, which goes ${best.spread.toFixed(1)}% to ${best.focus.toFixed(1)}%. Most of that is not the ladder\n` + `above: a creature that is dead stops attacking, and one on half its hit points does not\n` + `attack any less. Held at a fixed pack size the dodge ladder is worth a point or two.\n\n` - + `*(${focus.runs} fights \u00d7 ${(focus.seeds ?? []).length} seeds per arm, re-measured by \`check-focus\` on every build.)*\n\n`; + + `*(${focus.runs} fights \u00d7 ${(focus.seeds ?? []).length} seeds per arm, re-measured by \`check-focus\` on every build.\n` + + `A pack is measured when ${focus.admission ?? "its odds can move"}, so a fight nobody could lose\n` + + `and a fight nobody could win are both left out.)*\n\n`; } { diff --git a/tools/check-focus.mjs b/tools/check-focus.mjs index 559cb57..e6d53ed 100644 --- a/tools/check-focus.mjs +++ b/tools/check-focus.mjs @@ -148,7 +148,9 @@ if (UPDATE) { await writeFile(BASELINE, JSON.stringify({ note: "Generated by tools/check-focus.mjs --update. Do not edit by hand.", party: PARTY_KEYS, runs: RUNS, seeds: SEEDS, seedMode: SEED_MODE, - admission: "spread clear of 0 and 100 by more than its own noise", + /* Phrased as a clause so the bestiary can print it in a sentence rather than + paraphrasing the rule and drifting from it. */ + admission: "its spread-fire odds stand clear of 0% and 100% by more than its own noise", /* R-281. The ratchet the claim check holds to: how many of the measurable packs showed a gain clearing their own noise when this was recorded. Focus fire may get more reliable and may not quietly get less. */ diff --git a/tools/focus-baseline.json b/tools/focus-baseline.json index 864bdd0..5cc8542 100644 --- a/tools/focus-baseline.json +++ b/tools/focus-baseline.json @@ -13,7 +13,7 @@ 90210 ], "seedMode": "per-creature", - "admission": "spread clear of 0 and 100 by more than its own noise", + "admission": "its spread-fire odds stand clear of 0% and 100% by more than its own noise", "reliable": { "aboveNoise": 36, "of": 38