diff --git a/docs/REVIEW_LOG.md b/docs/REVIEW_LOG.md index 1872b5a..c8ca54a 100644 --- a/docs/REVIEW_LOG.md +++ b/docs/REVIEW_LOG.md @@ -4020,3 +4020,45 @@ and has never thrown anything away. Catalogue is now **206 items**: 118 gear, 62 weapons, 25 armour, 14 vehicles — 145 modern, 77 antique, 34 future, 19 anomalous. + +## GLASS LANTERN — the historical gear in play + +A village with two war memorials, Hollow class, salvage era **antique**. Antiquities, +Containment, Rigging, Physician. + +Salvage from a Hollow world did exactly what the era tag promises: a **poleaxe, a +chirurgeon's roll, a lodestone and a pocket watch**. They armed themselves out of the +village — poleaxe to the rigger, a Brown Bess and a maille shirt to the Antiquities +Officer, a halberd to Containment, a sling to the Physician. + +Three things the play-through proved, all of them the right behaviour: + +**Salvaged historical weapons are not automatically usable.** The poleaxe, halberd and +sling all came up at **5%**, because Polearm and Sling are skills nobody on the team +has. The Rigging Officer knows her boarding axe at 68% and a poleaxe at 5% — the same +shape of weapon, a different skill, and she sensibly kept the axe. Salvage is a +promise of usefulness, not a free upgrade. + +**Historical armour makes a knife pointless.** The Antiquities Officer in maille over +brigandine came out at AR 8, and the village hit her four times with utility knives +for **0, 0, 0 and 0 damage**. 1d4+2 against eight points of armour is nothing, and +that is exactly the historical fact the numbers should produce. She was also +**overloaded at 28 kg against a 20 kg free carry**, which is the other half of the +same fact. + +**Muzzle-loaders behave.** Flintlock and Brown Bess both hold one shot with a +two-round reload. She fired the flintlock in round one, and thereafter fought with the +duelling sword rather than spend two rounds reloading in a melee — which is the +decision the rule is supposed to produce. + +The fight ran seven rounds. The village lost one dead and two dying; the team took +almost nothing, because they were wearing four hundred years of armour development and +the village had knives. + +**R-226 · "Tradecraft first" was too literal.** My own R-221 fix overshot. A +Containment Officer whose Tradecraft had caught a stray bonus point sat at 12% against +a printed base of 5 — technically trained — and led every phase ahead of a Rigging +Officer on **53% Navigate**. The preference is meant to mean "whoever reads a +developing situation best", not "anybody with a point in the right column". Tradecraft +still wins ties and wins when it is genuinely better; it no longer wins when it is +plainly worse. The Containment phase went from 6% to 26% on the same team. diff --git a/packs/armour/LOG b/packs/armour/LOG index 35d9afe..f523ea5 100644 --- a/packs/armour/LOG +++ b/packs/armour/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.486571 174d33000 Recovering log #3 -2026/08/10-23:01:08.486599 174d33000 Level-0 table #5: started -2026/08/10-23:01:08.486723 174d33000 Level-0 table #5: 3269 bytes OK -2026/08/10-23:01:08.486979 174d33000 Delete type=0 #3 -2026/08/10-23:01:08.487023 174d33000 Delete type=3 #2 +2026/08/10-23:08:46.047112 174acf000 Recovering log #3 +2026/08/10-23:08:46.047137 174acf000 Level-0 table #5: started +2026/08/10-23:08:46.047255 174acf000 Level-0 table #5: 3269 bytes OK +2026/08/10-23:08:46.047517 174acf000 Delete type=0 #3 +2026/08/10-23:08:46.047560 174acf000 Delete type=3 #2 diff --git a/packs/armour/LOG.old b/packs/armour/LOG.old index e82aeb7..63f877a 100644 --- a/packs/armour/LOG.old +++ b/packs/armour/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.231905 1712a7000 Delete type=3 #1 +2026/08/10-23:08:37.754899 17291b000 Delete type=3 #1 diff --git a/packs/expedition/LOG b/packs/expedition/LOG index 5cb188a..8b6d9b4 100644 --- a/packs/expedition/LOG +++ b/packs/expedition/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.493618 174527000 Recovering log #3 -2026/08/10-23:01:08.493643 174527000 Level-0 table #5: started -2026/08/10-23:01:08.493808 174527000 Level-0 table #5: 4129 bytes OK -2026/08/10-23:01:08.494041 174527000 Delete type=0 #3 -2026/08/10-23:01:08.494071 174527000 Delete type=3 #2 +2026/08/10-23:08:46.054496 1752db000 Recovering log #3 +2026/08/10-23:08:46.054516 1752db000 Level-0 table #5: started +2026/08/10-23:08:46.054650 1752db000 Level-0 table #5: 4129 bytes OK +2026/08/10-23:08:46.054895 1752db000 Delete type=0 #3 +2026/08/10-23:08:46.054929 1752db000 Delete type=3 #2 diff --git a/packs/expedition/LOG.old b/packs/expedition/LOG.old index e8755b4..f1c3c9a 100644 --- a/packs/expedition/LOG.old +++ b/packs/expedition/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.256291 17028f000 Delete type=3 #1 +2026/08/10-23:08:37.780759 173933000 Delete type=3 #1 diff --git a/packs/gear/LOG b/packs/gear/LOG index a822e86..4a7ba55 100644 --- a/packs/gear/LOG +++ b/packs/gear/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.487664 174527000 Recovering log #3 -2026/08/10-23:01:08.487759 174527000 Level-0 table #5: started -2026/08/10-23:01:08.488053 174527000 Level-0 table #5: 27954 bytes OK -2026/08/10-23:01:08.488346 174527000 Delete type=0 #3 -2026/08/10-23:01:08.488387 174527000 Delete type=3 #2 +2026/08/10-23:08:46.048195 173ab7000 Recovering log #3 +2026/08/10-23:08:46.048288 173ab7000 Level-0 table #5: started +2026/08/10-23:08:46.048589 173ab7000 Level-0 table #5: 27954 bytes OK +2026/08/10-23:08:46.048854 173ab7000 Delete type=0 #3 +2026/08/10-23:08:46.048904 173ab7000 Delete type=3 #2 diff --git a/packs/gear/LOG.old b/packs/gear/LOG.old index 5b496f0..081ae35 100644 --- a/packs/gear/LOG.old +++ b/packs/gear/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.233897 17028f000 Delete type=3 #1 +2026/08/10-23:08:37.757302 173127000 Delete type=3 #1 diff --git a/packs/npcs/LOG b/packs/npcs/LOG index 7530099..4bbef1a 100644 --- a/packs/npcs/LOG +++ b/packs/npcs/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.479221 174527000 Recovering log #3 -2026/08/10-23:01:08.479486 174527000 Level-0 table #5: started -2026/08/10-23:01:08.480007 174527000 Level-0 table #5: 64974 bytes OK -2026/08/10-23:01:08.480345 174527000 Delete type=0 #3 -2026/08/10-23:01:08.480411 174527000 Delete type=3 #2 +2026/08/10-23:08:46.040166 1752db000 Recovering log #3 +2026/08/10-23:08:46.040415 1752db000 Level-0 table #5: started +2026/08/10-23:08:46.040907 1752db000 Level-0 table #5: 64974 bytes OK +2026/08/10-23:08:46.041174 1752db000 Delete type=0 #3 +2026/08/10-23:08:46.041236 1752db000 Delete type=3 #2 diff --git a/packs/npcs/LOG.old b/packs/npcs/LOG.old index 0921934..6d6d001 100644 --- a/packs/npcs/LOG.old +++ b/packs/npcs/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.243997 1712a7000 Delete type=3 #1 +2026/08/10-23:08:37.767972 17210f000 Delete type=3 #1 diff --git a/packs/powers/LOG b/packs/powers/LOG index d1faa39..dfeb20c 100644 --- a/packs/powers/LOG +++ b/packs/powers/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.484216 174d33000 Recovering log #3 -2026/08/10-23:01:08.484239 174d33000 Level-0 table #5: started -2026/08/10-23:01:08.484351 174d33000 Level-0 table #5: 3295 bytes OK -2026/08/10-23:01:08.484635 174d33000 Delete type=0 #3 -2026/08/10-23:01:08.484666 174d33000 Delete type=3 #2 +2026/08/10-23:08:46.044798 174acf000 Recovering log #3 +2026/08/10-23:08:46.044820 174acf000 Level-0 table #5: started +2026/08/10-23:08:46.044910 174acf000 Level-0 table #5: 3295 bytes OK +2026/08/10-23:08:46.045114 174acf000 Delete type=0 #3 +2026/08/10-23:08:46.045143 174acf000 Delete type=3 #2 diff --git a/packs/powers/LOG.old b/packs/powers/LOG.old index 1fa9f54..5bc9ecd 100644 --- a/packs/powers/LOG.old +++ b/packs/powers/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.249869 171ab3000 Delete type=3 #1 +2026/08/10-23:08:37.774231 17291b000 Delete type=3 #1 diff --git a/packs/pregens/LOG b/packs/pregens/LOG index 853d3e6..b9ecdd3 100644 --- a/packs/pregens/LOG +++ b/packs/pregens/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.476733 174527000 Recovering log #3 -2026/08/10-23:01:08.476990 174527000 Level-0 table #5: started -2026/08/10-23:01:08.477569 174527000 Level-0 table #5: 57435 bytes OK -2026/08/10-23:01:08.477881 174527000 Delete type=0 #3 -2026/08/10-23:01:08.477921 174527000 Delete type=3 #2 +2026/08/10-23:08:46.037647 1752db000 Recovering log #3 +2026/08/10-23:08:46.037898 1752db000 Level-0 table #5: started +2026/08/10-23:08:46.038470 1752db000 Level-0 table #5: 57435 bytes OK +2026/08/10-23:08:46.038791 1752db000 Delete type=0 #3 +2026/08/10-23:08:46.038847 1752db000 Delete type=3 #2 diff --git a/packs/pregens/LOG.old b/packs/pregens/LOG.old index 396b19e..4f8e38d 100644 --- a/packs/pregens/LOG.old +++ b/packs/pregens/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.239525 171ab3000 Delete type=3 #1 +2026/08/10-23:08:37.763212 17291b000 Delete type=3 #1 diff --git a/packs/rules/LOG b/packs/rules/LOG index 93969b7..9d927dc 100644 --- a/packs/rules/LOG +++ b/packs/rules/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.489989 174527000 Recovering log #3 -2026/08/10-23:01:08.490045 174527000 Level-0 table #5: started -2026/08/10-23:01:08.490287 174527000 Level-0 table #5: 24724 bytes OK -2026/08/10-23:01:08.490582 174527000 Delete type=0 #3 -2026/08/10-23:01:08.490609 174527000 Delete type=3 #2 +2026/08/10-23:08:46.050591 1752db000 Recovering log #3 +2026/08/10-23:08:46.050653 1752db000 Level-0 table #5: started +2026/08/10-23:08:46.050935 1752db000 Level-0 table #5: 24724 bytes OK +2026/08/10-23:08:46.051197 1752db000 Delete type=0 #3 +2026/08/10-23:08:46.051244 1752db000 Delete type=3 #2 diff --git a/packs/rules/LOG.old b/packs/rules/LOG.old index 1c00b63..ff4a77b 100644 --- a/packs/rules/LOG.old +++ b/packs/rules/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.254751 17028f000 Delete type=3 #1 +2026/08/10-23:08:37.778897 173127000 Delete type=3 #1 diff --git a/packs/skills/LOG b/packs/skills/LOG index d63a254..acd68be 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.481697 175d4b000 Recovering log #3 -2026/08/10-23:01:08.481745 175d4b000 Level-0 table #5: started -2026/08/10-23:01:08.481926 175d4b000 Level-0 table #5: 7486 bytes OK -2026/08/10-23:01:08.482244 175d4b000 Delete type=0 #3 -2026/08/10-23:01:08.482280 175d4b000 Delete type=3 #2 +2026/08/10-23:08:46.042468 1742c3000 Recovering log #3 +2026/08/10-23:08:46.042508 1742c3000 Level-0 table #5: started +2026/08/10-23:08:46.042648 1742c3000 Level-0 table #5: 7486 bytes OK +2026/08/10-23:08:46.042865 1742c3000 Delete type=0 #3 +2026/08/10-23:08:46.042900 1742c3000 Delete type=3 #2 diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old index e7d5a10..0568aa7 100644 --- a/packs/skills/LOG.old +++ b/packs/skills/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.226054 1712a7000 Delete type=3 #1 +2026/08/10-23:08:37.747903 173127000 Delete type=3 #1 diff --git a/packs/slice/LOG b/packs/slice/LOG index e318b43..e5b9ffb 100644 --- a/packs/slice/LOG +++ b/packs/slice/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.491211 175d4b000 Recovering log #3 -2026/08/10-23:01:08.491246 175d4b000 Level-0 table #5: started -2026/08/10-23:01:08.491445 175d4b000 Level-0 table #5: 16892 bytes OK -2026/08/10-23:01:08.491649 175d4b000 Delete type=0 #3 -2026/08/10-23:01:08.491673 175d4b000 Delete type=3 #2 +2026/08/10-23:08:46.051945 1742c3000 Recovering log #3 +2026/08/10-23:08:46.051993 1742c3000 Level-0 table #5: started +2026/08/10-23:08:46.052269 1742c3000 Level-0 table #5: 16892 bytes OK +2026/08/10-23:08:46.052540 1742c3000 Delete type=0 #3 +2026/08/10-23:08:46.052572 1742c3000 Delete type=3 #2 diff --git a/packs/slice/LOG.old b/packs/slice/LOG.old index 58cd2c4..a2ec8e4 100644 --- a/packs/slice/LOG.old +++ b/packs/slice/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.248248 1712a7000 Delete type=3 #1 +2026/08/10-23:08:37.772624 173933000 Delete type=3 #1 diff --git a/packs/tables/LOG b/packs/tables/LOG index 06f8dc6..ef7454c 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.492361 174d33000 Recovering log #3 -2026/08/10-23:01:08.492389 174d33000 Level-0 table #5: started -2026/08/10-23:01:08.492537 174d33000 Level-0 table #5: 3739 bytes OK -2026/08/10-23:01:08.492829 174d33000 Delete type=0 #3 -2026/08/10-23:01:08.492874 174d33000 Delete type=3 #2 +2026/08/10-23:08:46.053301 174acf000 Recovering log #3 +2026/08/10-23:08:46.053322 174acf000 Level-0 table #5: started +2026/08/10-23:08:46.053430 174acf000 Level-0 table #5: 3739 bytes OK +2026/08/10-23:08:46.053664 174acf000 Delete type=0 #3 +2026/08/10-23:08:46.053709 174acf000 Delete type=3 #2 diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old index 82af5a1..6f61111 100644 --- a/packs/tables/LOG.old +++ b/packs/tables/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.246465 17028f000 Delete type=3 #1 +2026/08/10-23:08:37.770616 173127000 Delete type=3 #1 diff --git a/packs/talents/LOG b/packs/talents/LOG index f71b243..940ae92 100644 --- a/packs/talents/LOG +++ b/packs/talents/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.482999 174527000 Recovering log #3 -2026/08/10-23:01:08.483024 174527000 Level-0 table #5: started -2026/08/10-23:01:08.483159 174527000 Level-0 table #5: 5105 bytes OK -2026/08/10-23:01:08.483436 174527000 Delete type=0 #3 -2026/08/10-23:01:08.483488 174527000 Delete type=3 #2 +2026/08/10-23:08:46.043606 1752db000 Recovering log #3 +2026/08/10-23:08:46.043635 1752db000 Level-0 table #5: started +2026/08/10-23:08:46.043789 1752db000 Level-0 table #5: 5105 bytes OK +2026/08/10-23:08:46.044129 1752db000 Delete type=0 #3 +2026/08/10-23:08:46.044200 1752db000 Delete type=3 #2 diff --git a/packs/talents/LOG.old b/packs/talents/LOG.old index 67dbd44..468014f 100644 --- a/packs/talents/LOG.old +++ b/packs/talents/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.228585 17028f000 Delete type=3 #1 +2026/08/10-23:08:37.750858 173933000 Delete type=3 #1 diff --git a/packs/vehicles/LOG b/packs/vehicles/LOG index 8f207a3..ce9385c 100644 --- a/packs/vehicles/LOG +++ b/packs/vehicles/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.489065 174d33000 Recovering log #3 -2026/08/10-23:01:08.489088 174d33000 Level-0 table #5: started -2026/08/10-23:01:08.489205 174d33000 Level-0 table #5: 5012 bytes OK -2026/08/10-23:01:08.489400 174d33000 Delete type=0 #3 -2026/08/10-23:01:08.489423 174d33000 Delete type=3 #2 +2026/08/10-23:08:46.049567 174acf000 Recovering log #3 +2026/08/10-23:08:46.049596 174acf000 Level-0 table #5: started +2026/08/10-23:08:46.049730 174acf000 Level-0 table #5: 5012 bytes OK +2026/08/10-23:08:46.049946 174acf000 Delete type=0 #3 +2026/08/10-23:08:46.049973 174acf000 Delete type=3 #2 diff --git a/packs/vehicles/LOG.old b/packs/vehicles/LOG.old index 84849a4..1cf2e56 100644 --- a/packs/vehicles/LOG.old +++ b/packs/vehicles/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.235861 171ab3000 Delete type=3 #1 +2026/08/10-23:08:37.759342 17210f000 Delete type=3 #1 diff --git a/packs/weapons/LOG b/packs/weapons/LOG index 5af3add..113bd05 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1,5 +1,5 @@ -2026/08/10-23:01:08.485281 174527000 Recovering log #3 -2026/08/10-23:01:08.485346 174527000 Level-0 table #5: started -2026/08/10-23:01:08.485576 174527000 Level-0 table #5: 14767 bytes OK -2026/08/10-23:01:08.485871 174527000 Delete type=0 #3 -2026/08/10-23:01:08.485924 174527000 Delete type=3 #2 +2026/08/10-23:08:46.045683 173ab7000 Recovering log #3 +2026/08/10-23:08:46.045761 173ab7000 Level-0 table #5: started +2026/08/10-23:08:46.046185 173ab7000 Level-0 table #5: 14767 bytes OK +2026/08/10-23:08:46.046452 173ab7000 Delete type=0 #3 +2026/08/10-23:08:46.046500 173ab7000 Delete type=3 #2 diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old index 1b028ec..b7cd2e5 100644 --- a/packs/weapons/LOG.old +++ b/packs/weapons/LOG.old @@ -1 +1 @@ -2026/08/10-23:01:00.230385 171ab3000 Delete type=3 #1 +2026/08/10-23:08:37.752873 173933000 Delete type=3 #1 diff --git a/ringbrp.mjs b/ringbrp.mjs index 5e72221..5f3f487 100644 --- a/ringbrp.mjs +++ b/ringbrp.mjs @@ -5185,8 +5185,15 @@ async function resolveLegDialog(expedition) { const r = requireTrained ? trained(a, fam) : a.skillRating(fam); return (r !== null && r > (acc?.rating ?? -1)) ? { actor: a, rating: r, skill: fam } : acc; }, null); - const best = bestIn("tradecraft") ?? bestIn("navigate") - ?? bestIn("tradecraft", false) ?? bestIn("navigate", false); + // R-226. "Tradecraft first" was too literal. A Containment Officer whose Tradecraft + // had caught a stray bonus point sat at 12% against a base of 5 — technically + // trained — and led every phase ahead of a Rigging Officer on 53% Navigate. The + // preference is meant to say "whoever reads a developing situation best", not + // "anybody with a point in the right column". Tradecraft still wins ties and wins + // when it is genuinely better; it does not win when it is plainly worse. + const tc = bestIn("tradecraft"), nav = bestIn("navigate"); + const best = (tc && (!nav || tc.rating >= nav.rating)) ? tc + : (nav ?? tc ?? bestIn("tradecraft", false) ?? bestIn("navigate", false)); if (!best) return ui.notifications.warn(game.i18n.localize("RINGBRP.Notify.NoNavigator")); // A leg may state its own difficulty; the generator sets one deliberately and