R-252 established that a recorded figure carried several points of slack
at 200 runs and that only more runs narrows it. This is that.
Measured by taking every creature under four different base seeds and
looking at how far the four answers sat apart, which is the noise a GM
reading the bestiary is unknowingly trusting:
mean spread worst creature
200 runs 1.28 points 11.5 points
2000 runs 0.36 points 2.7 points
The worst case is what mattered. One creature's published wipe rate
could be eleven points from the same creature rolled with different
dice, on a figure printed in docs/BESTIARY.md for somebody to plan an
evening around. Under three now.
It corrected 19 of 47 published figures, mean 0.35 points: the arrears
6% -> 8.9%, the supporter 44% -> 46.8%, the nuckelavee 13.5% -> 16%.
Each was a sampling artefact printed as a property.
The cost is the part worth recording, because it is why this was never
done. I guessed "maybe a minute of build time" when I suggested it,
which was wrong by a factor of thirty and would have been a fair reason
to say no:
check-lethality alone 0.29s -> 1.88s
whole nine-guard suite 2.55s
BESTIARY.md regenerates from the baseline, so its run count follows
automatically; its header now also says the seeds are derived per
creature, since "at seed 11" stopped being the whole truth in R-252.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
250 lines
4.0 KiB
JSON
250 lines
4.0 KiB
JSON
{
|
|
"note": "Generated by tools/check-lethality.mjs --update. Do not edit by hand.",
|
|
"party": [
|
|
"pc_holloway",
|
|
"pc_okonkwo",
|
|
"pc_nkemdirim",
|
|
"pc_ferriby"
|
|
],
|
|
"runs": 2000,
|
|
"seed": 11,
|
|
"seedMode": "per-creature",
|
|
"creatures": {
|
|
"quiet_neighbours_npc": {
|
|
"wipe": 0,
|
|
"down": 0.02,
|
|
"rounds": 2
|
|
},
|
|
"keepers": {
|
|
"wipe": 0,
|
|
"down": 0.04,
|
|
"rounds": 2
|
|
},
|
|
"cleaner": {
|
|
"wipe": 0,
|
|
"down": 0.03,
|
|
"rounds": 2
|
|
},
|
|
"cleaner_marksman": {
|
|
"wipe": 0,
|
|
"down": 0.08,
|
|
"rounds": 2
|
|
},
|
|
"revenant": {
|
|
"wipe": 0.1,
|
|
"down": 0.16,
|
|
"rounds": 3
|
|
},
|
|
"duplicate": {
|
|
"wipe": 0,
|
|
"down": 0.06,
|
|
"rounds": 2
|
|
},
|
|
"barghest": {
|
|
"wipe": 0.4,
|
|
"down": 0.43,
|
|
"rounds": 4
|
|
},
|
|
"kelpie": {
|
|
"wipe": 0.1,
|
|
"down": 0.24,
|
|
"rounds": 3
|
|
},
|
|
"redcap": {
|
|
"wipe": 0.1,
|
|
"down": 0.34,
|
|
"rounds": 3
|
|
},
|
|
"boggart": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"churchgrim": {
|
|
"wipe": 0.1,
|
|
"down": 0.28,
|
|
"rounds": 4
|
|
},
|
|
"supporter": {
|
|
"wipe": 46.8,
|
|
"down": 2.84,
|
|
"rounds": 14
|
|
},
|
|
"hollow_man": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"the_tenant": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 1
|
|
},
|
|
"the_choir": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"precedent": {
|
|
"wipe": 0,
|
|
"down": 0.17,
|
|
"rounds": 3
|
|
},
|
|
"carrion_file": {
|
|
"wipe": 0,
|
|
"down": 0.04,
|
|
"rounds": 5
|
|
},
|
|
"the_understudy": {
|
|
"wipe": 0,
|
|
"down": 0.01,
|
|
"rounds": 2
|
|
},
|
|
"surveyor": {
|
|
"wipe": 4.8,
|
|
"down": 1.39,
|
|
"rounds": 10
|
|
},
|
|
"quarantine_unit": {
|
|
"wipe": 88.8,
|
|
"down": 3.71,
|
|
"rounds": 8
|
|
},
|
|
"cuckoo_array": {
|
|
"wipe": 1.5,
|
|
"down": 0.78,
|
|
"rounds": 8
|
|
},
|
|
"long_walker": {
|
|
"wipe": 64.1,
|
|
"down": 3.18,
|
|
"rounds": 15
|
|
},
|
|
"auditor": {
|
|
"wipe": 0,
|
|
"down": 0.12,
|
|
"rounds": 3
|
|
},
|
|
"washer_ford": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 1
|
|
},
|
|
"lantern_man": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 1
|
|
},
|
|
"grindylow": {
|
|
"wipe": 0,
|
|
"down": 0.13,
|
|
"rounds": 3
|
|
},
|
|
"knockers": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"spriggan": {
|
|
"wipe": 0.1,
|
|
"down": 0.29,
|
|
"rounds": 4
|
|
},
|
|
"nuckelavee": {
|
|
"wipe": 16,
|
|
"down": 1.7,
|
|
"rounds": 7
|
|
},
|
|
"hedley_kow": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"apple_man": {
|
|
"wipe": 2.1,
|
|
"down": 1.04,
|
|
"rounds": 10
|
|
},
|
|
"the_committee": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 2
|
|
},
|
|
"night_registry": {
|
|
"wipe": 0,
|
|
"down": 0.08,
|
|
"rounds": 3
|
|
},
|
|
"the_locum": {
|
|
"wipe": 0,
|
|
"down": 0.04,
|
|
"rounds": 2
|
|
},
|
|
"lost_property": {
|
|
"wipe": 0.9,
|
|
"down": 0.78,
|
|
"rounds": 8
|
|
},
|
|
"the_minutes": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 1
|
|
},
|
|
"waiting_room": {
|
|
"wipe": 0,
|
|
"down": 0.17,
|
|
"rounds": 6
|
|
},
|
|
"the_predecessor": {
|
|
"wipe": 0,
|
|
"down": 0.09,
|
|
"rounds": 2
|
|
},
|
|
"switchboard": {
|
|
"wipe": 0,
|
|
"down": 0,
|
|
"rounds": 4
|
|
},
|
|
"the_census": {
|
|
"wipe": 0,
|
|
"down": 0.15,
|
|
"rounds": 4
|
|
},
|
|
"the_courier": {
|
|
"wipe": 6.6,
|
|
"down": 1.37,
|
|
"rounds": 9
|
|
},
|
|
"the_relay": {
|
|
"wipe": 0.5,
|
|
"down": 0.6,
|
|
"rounds": 10
|
|
},
|
|
"the_stanchion": {
|
|
"wipe": 31.9,
|
|
"down": 2.29,
|
|
"rounds": 19
|
|
},
|
|
"the_yield": {
|
|
"wipe": 0.9,
|
|
"down": 0.72,
|
|
"rounds": 6
|
|
},
|
|
"the_overwriter": {
|
|
"wipe": 0,
|
|
"down": 0.12,
|
|
"rounds": 6
|
|
},
|
|
"the_arrears": {
|
|
"wipe": 8.9,
|
|
"down": 1.62,
|
|
"rounds": 11
|
|
},
|
|
"the_margin": {
|
|
"wipe": 0,
|
|
"down": 0.02,
|
|
"rounds": 3
|
|
}
|
|
}
|
|
}
|