diff --git a/README.md b/README.md index cf3be88..953229c 100644 --- a/README.md +++ b/README.md @@ -180,9 +180,9 @@ The build runs all five guards before it writes anything: ``` -check-rules: OK — 92 rules, 20 files scanned, 3 aliases + 45 constant sets checked, 290 formulas verified +check-rules: OK — 92 rules, 20 files scanned, 3 aliases + 45 constant sets checked, 291 formulas verified check-kits: OK — 25 roles, 10 trades, 218 catalogue items, every kit key resolves, every posting can use what it carries, every loadout distinct -check-lang: OK — en.json, 976 keys, no leaf/branch collisions -check-behaviour: OK — 55 behavioural tests +check-lang: OK — en.json, 977 keys, no leaf/branch collisions +check-behaviour: OK — 57 behavioural tests ``` diff --git a/lang/en.json b/lang/en.json index ca76973..fc3a03b 100644 --- a/lang/en.json +++ b/lang/en.json @@ -974,5 +974,6 @@ "RINGBRP.Panic.Breaks": "BREAKS — freeze, flee, or fixate. Choose, take it, come back at 3.", "RINGBRP.Panic.NoChange": "No change.", "RINGBRP.Flavour.Panicking": "panicking ({mod}%)", - "RINGBRP.Chat.ToEverything": "to everything" + "RINGBRP.Chat.ToEverything": "to everything", + "RINGBRP.Panic.Backfired": "Fumbled —" } diff --git a/packs/armour/000003.log b/packs/armour/000003.log deleted file mode 100644 index 9b6d27d..0000000 Binary files a/packs/armour/000003.log and /dev/null differ diff --git a/packs/armour/000005.ldb b/packs/armour/000005.ldb new file mode 100644 index 0000000..c982555 Binary files /dev/null and b/packs/armour/000005.ldb differ diff --git a/packs/armour/000006.log b/packs/armour/000006.log new file mode 100644 index 0000000..1a1bb27 Binary files /dev/null and b/packs/armour/000006.log differ diff --git a/packs/armour/CURRENT b/packs/armour/CURRENT index 1a84852..cacca75 100644 --- a/packs/armour/CURRENT +++ b/packs/armour/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/armour/LOG b/packs/armour/LOG index 84f6769..b55505d 100644 --- a/packs/armour/LOG +++ b/packs/armour/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.401379 16e463000 Delete type=3 #1 +2026/08/17-23:24:47.247472 17253f000 Recovering log #3 +2026/08/17-23:24:47.247505 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.247700 17253f000 Level-0 table #5: 4591 bytes OK +2026/08/17-23:24:47.248094 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.248137 17253f000 Delete type=3 #2 diff --git a/packs/armour/LOG.old b/packs/armour/LOG.old new file mode 100644 index 0000000..75866cd --- /dev/null +++ b/packs/armour/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.473921 16e827000 Delete type=3 #1 diff --git a/packs/armour/MANIFEST-000002 b/packs/armour/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/armour/MANIFEST-000002 and /dev/null differ diff --git a/packs/armour/MANIFEST-000004 b/packs/armour/MANIFEST-000004 new file mode 100644 index 0000000..9c05997 Binary files /dev/null and b/packs/armour/MANIFEST-000004 differ diff --git a/packs/expedition/000003.log b/packs/expedition/000003.log deleted file mode 100644 index 263295b..0000000 Binary files a/packs/expedition/000003.log and /dev/null differ diff --git a/packs/expedition/000005.ldb b/packs/expedition/000005.ldb new file mode 100644 index 0000000..4ff460d Binary files /dev/null and b/packs/expedition/000005.ldb differ diff --git a/packs/expedition/000006.log b/packs/expedition/000006.log new file mode 100644 index 0000000..268b187 Binary files /dev/null and b/packs/expedition/000006.log differ diff --git a/packs/expedition/CURRENT b/packs/expedition/CURRENT index 1a84852..cacca75 100644 --- a/packs/expedition/CURRENT +++ b/packs/expedition/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/expedition/LOG b/packs/expedition/LOG index e26ef51..8962bc6 100644 --- a/packs/expedition/LOG +++ b/packs/expedition/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.473673 16fc87000 Delete type=3 #1 +2026/08/17-23:24:47.267497 173d63000 Recovering log #3 +2026/08/17-23:24:47.267518 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.267658 173d63000 Level-0 table #5: 4129 bytes OK +2026/08/17-23:24:47.267918 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.267949 173d63000 Delete type=3 #2 diff --git a/packs/expedition/LOG.old b/packs/expedition/LOG.old new file mode 100644 index 0000000..6f4aa1c --- /dev/null +++ b/packs/expedition/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.544854 16e827000 Delete type=3 #1 diff --git a/packs/expedition/MANIFEST-000002 b/packs/expedition/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/expedition/MANIFEST-000002 and /dev/null differ diff --git a/packs/expedition/MANIFEST-000004 b/packs/expedition/MANIFEST-000004 new file mode 100644 index 0000000..47fbcd4 Binary files /dev/null and b/packs/expedition/MANIFEST-000004 differ diff --git a/packs/gear/000003.log b/packs/gear/000003.log deleted file mode 100644 index 629ba6d..0000000 Binary files a/packs/gear/000003.log and /dev/null differ diff --git a/packs/gear/000005.ldb b/packs/gear/000005.ldb new file mode 100644 index 0000000..d9bac03 Binary files /dev/null and b/packs/gear/000005.ldb differ diff --git a/packs/gear/000006.log b/packs/gear/000006.log new file mode 100644 index 0000000..d1deb9b Binary files /dev/null and b/packs/gear/000006.log differ diff --git a/packs/gear/CURRENT b/packs/gear/CURRENT index 1a84852..cacca75 100644 --- a/packs/gear/CURRENT +++ b/packs/gear/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/gear/LOG b/packs/gear/LOG index cdc62b4..4c6a87a 100644 --- a/packs/gear/LOG +++ b/packs/gear/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.403187 16e463000 Delete type=3 #1 +2026/08/17-23:24:47.248920 173d63000 Recovering log #3 +2026/08/17-23:24:47.249014 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.249313 173d63000 Level-0 table #5: 31614 bytes OK +2026/08/17-23:24:47.249730 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.249796 173d63000 Delete type=3 #2 diff --git a/packs/gear/LOG.old b/packs/gear/LOG.old new file mode 100644 index 0000000..9931677 --- /dev/null +++ b/packs/gear/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.475804 17004b000 Delete type=3 #1 diff --git a/packs/gear/MANIFEST-000002 b/packs/gear/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/gear/MANIFEST-000002 and /dev/null differ diff --git a/packs/gear/MANIFEST-000004 b/packs/gear/MANIFEST-000004 new file mode 100644 index 0000000..f7cd73c Binary files /dev/null and b/packs/gear/MANIFEST-000004 differ diff --git a/packs/lastadmission/000003.log b/packs/lastadmission/000003.log deleted file mode 100644 index bfabd98..0000000 Binary files a/packs/lastadmission/000003.log and /dev/null differ diff --git a/packs/lastadmission/000005.ldb b/packs/lastadmission/000005.ldb new file mode 100644 index 0000000..9c4e166 Binary files /dev/null and b/packs/lastadmission/000005.ldb differ diff --git a/packs/lastadmission/000006.log b/packs/lastadmission/000006.log new file mode 100644 index 0000000..40f2dad Binary files /dev/null and b/packs/lastadmission/000006.log differ diff --git a/packs/lastadmission/CURRENT b/packs/lastadmission/CURRENT index 1a84852..cacca75 100644 --- a/packs/lastadmission/CURRENT +++ b/packs/lastadmission/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/lastadmission/LOG b/packs/lastadmission/LOG index 8ac2cd8..ab3f5b3 100644 --- a/packs/lastadmission/LOG +++ b/packs/lastadmission/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.456562 16ec6f000 Delete type=3 #1 +2026/08/17-23:24:47.261246 17253f000 Recovering log #3 +2026/08/17-23:24:47.261511 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.261915 17253f000 Level-0 table #5: 46857 bytes OK +2026/08/17-23:24:47.262265 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.262307 17253f000 Delete type=3 #2 diff --git a/packs/lastadmission/LOG.old b/packs/lastadmission/LOG.old new file mode 100644 index 0000000..20ed9fe --- /dev/null +++ b/packs/lastadmission/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.528809 16f033000 Delete type=3 #1 diff --git a/packs/lastadmission/MANIFEST-000002 b/packs/lastadmission/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/lastadmission/MANIFEST-000002 and /dev/null differ diff --git a/packs/lastadmission/MANIFEST-000004 b/packs/lastadmission/MANIFEST-000004 new file mode 100644 index 0000000..061c146 Binary files /dev/null and b/packs/lastadmission/MANIFEST-000004 differ diff --git a/packs/npcs/000003.log b/packs/npcs/000003.log deleted file mode 100644 index 535c9fd..0000000 Binary files a/packs/npcs/000003.log and /dev/null differ diff --git a/packs/npcs/000005.ldb b/packs/npcs/000005.ldb new file mode 100644 index 0000000..c1a43df Binary files /dev/null and b/packs/npcs/000005.ldb differ diff --git a/packs/npcs/000006.log b/packs/npcs/000006.log new file mode 100644 index 0000000..76e0001 Binary files /dev/null and b/packs/npcs/000006.log differ diff --git a/packs/npcs/CURRENT b/packs/npcs/CURRENT index 1a84852..cacca75 100644 --- a/packs/npcs/CURRENT +++ b/packs/npcs/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/npcs/LOG b/packs/npcs/LOG index 42a8068..2a4c813 100644 --- a/packs/npcs/LOG +++ b/packs/npcs/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.438818 16ec6f000 Delete type=3 #1 +2026/08/17-23:24:47.235329 173d63000 Recovering log #3 +2026/08/17-23:24:47.236302 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.238305 173d63000 Level-0 table #5: 234672 bytes OK +2026/08/17-23:24:47.238754 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.238827 173d63000 Delete type=3 #2 diff --git a/packs/npcs/LOG.old b/packs/npcs/LOG.old new file mode 100644 index 0000000..3307a59 --- /dev/null +++ b/packs/npcs/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.510747 16f83f000 Delete type=3 #1 diff --git a/packs/npcs/MANIFEST-000002 b/packs/npcs/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/npcs/MANIFEST-000002 and /dev/null differ diff --git a/packs/npcs/MANIFEST-000004 b/packs/npcs/MANIFEST-000004 new file mode 100644 index 0000000..93be6b6 Binary files /dev/null and b/packs/npcs/MANIFEST-000004 differ diff --git a/packs/powers/000003.log b/packs/powers/000003.log deleted file mode 100644 index d723043..0000000 Binary files a/packs/powers/000003.log and /dev/null differ diff --git a/packs/powers/000005.ldb b/packs/powers/000005.ldb new file mode 100644 index 0000000..7f540c6 Binary files /dev/null and b/packs/powers/000005.ldb differ diff --git a/packs/powers/000006.log b/packs/powers/000006.log new file mode 100644 index 0000000..43e306f Binary files /dev/null and b/packs/powers/000006.log differ diff --git a/packs/powers/CURRENT b/packs/powers/CURRENT index 1a84852..cacca75 100644 --- a/packs/powers/CURRENT +++ b/packs/powers/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/powers/LOG b/packs/powers/LOG index 2b08522..3cfbc9c 100644 --- a/packs/powers/LOG +++ b/packs/powers/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.468218 16f47b000 Delete type=3 #1 +2026/08/17-23:24:47.244550 17253f000 Recovering log #3 +2026/08/17-23:24:47.244581 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.244685 17253f000 Level-0 table #5: 3295 bytes OK +2026/08/17-23:24:47.244965 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.245003 17253f000 Delete type=3 #2 diff --git a/packs/powers/LOG.old b/packs/powers/LOG.old new file mode 100644 index 0000000..fcfb3ae --- /dev/null +++ b/packs/powers/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.539431 17004b000 Delete type=3 #1 diff --git a/packs/powers/MANIFEST-000002 b/packs/powers/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/powers/MANIFEST-000002 and /dev/null differ diff --git a/packs/powers/MANIFEST-000004 b/packs/powers/MANIFEST-000004 new file mode 100644 index 0000000..20de082 Binary files /dev/null and b/packs/powers/MANIFEST-000004 differ diff --git a/packs/pregens/000003.log b/packs/pregens/000003.log deleted file mode 100644 index 5245fc9..0000000 Binary files a/packs/pregens/000003.log and /dev/null differ diff --git a/packs/pregens/000005.ldb b/packs/pregens/000005.ldb new file mode 100644 index 0000000..d96a789 Binary files /dev/null and b/packs/pregens/000005.ldb differ diff --git a/packs/pregens/000006.log b/packs/pregens/000006.log new file mode 100644 index 0000000..a99ddbb Binary files /dev/null and b/packs/pregens/000006.log differ diff --git a/packs/pregens/CURRENT b/packs/pregens/CURRENT index 1a84852..cacca75 100644 --- a/packs/pregens/CURRENT +++ b/packs/pregens/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/pregens/LOG b/packs/pregens/LOG index 6f72d24..20eee13 100644 --- a/packs/pregens/LOG +++ b/packs/pregens/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.424479 16f47b000 Delete type=3 #1 +2026/08/17-23:24:47.222820 172d4b000 Recovering log #3 +2026/08/17-23:24:47.225060 172d4b000 Level-0 table #5: started +2026/08/17-23:24:47.229466 172d4b000 Level-0 table #5: 561098 bytes OK +2026/08/17-23:24:47.229981 172d4b000 Delete type=0 #3 +2026/08/17-23:24:47.230132 172d4b000 Delete type=3 #2 diff --git a/packs/pregens/LOG.old b/packs/pregens/LOG.old new file mode 100644 index 0000000..1d62603 --- /dev/null +++ b/packs/pregens/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.496406 16e827000 Delete type=3 #1 diff --git a/packs/pregens/MANIFEST-000002 b/packs/pregens/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/pregens/MANIFEST-000002 and /dev/null differ diff --git a/packs/pregens/MANIFEST-000004 b/packs/pregens/MANIFEST-000004 new file mode 100644 index 0000000..acf466d Binary files /dev/null and b/packs/pregens/MANIFEST-000004 differ diff --git a/packs/primer/000003.log b/packs/primer/000003.log deleted file mode 100644 index fff1285..0000000 Binary files a/packs/primer/000003.log and /dev/null differ diff --git a/packs/primer/000005.ldb b/packs/primer/000005.ldb new file mode 100644 index 0000000..669e7b1 Binary files /dev/null and b/packs/primer/000005.ldb differ diff --git a/packs/primer/000006.log b/packs/primer/000006.log new file mode 100644 index 0000000..daa37bb Binary files /dev/null and b/packs/primer/000006.log differ diff --git a/packs/primer/CURRENT b/packs/primer/CURRENT index 1a84852..cacca75 100644 --- a/packs/primer/CURRENT +++ b/packs/primer/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/primer/LOG b/packs/primer/LOG index 24d9917..9e7bc63 100644 --- a/packs/primer/LOG +++ b/packs/primer/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.464811 16f47b000 Delete type=3 #1 +2026/08/17-23:24:47.251999 173d63000 Recovering log #3 +2026/08/17-23:24:47.252036 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.252324 173d63000 Level-0 table #5: 21613 bytes OK +2026/08/17-23:24:47.252692 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.252736 173d63000 Delete type=3 #2 diff --git a/packs/primer/LOG.old b/packs/primer/LOG.old new file mode 100644 index 0000000..edb1f8f --- /dev/null +++ b/packs/primer/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.536318 17004b000 Delete type=3 #1 diff --git a/packs/primer/MANIFEST-000002 b/packs/primer/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/primer/MANIFEST-000002 and /dev/null differ diff --git a/packs/primer/MANIFEST-000004 b/packs/primer/MANIFEST-000004 new file mode 100644 index 0000000..2ce4ec2 Binary files /dev/null and b/packs/primer/MANIFEST-000004 differ diff --git a/packs/prologue/000003.log b/packs/prologue/000003.log deleted file mode 100644 index 122ec89..0000000 Binary files a/packs/prologue/000003.log and /dev/null differ diff --git a/packs/prologue/000005.ldb b/packs/prologue/000005.ldb new file mode 100644 index 0000000..f989b58 Binary files /dev/null and b/packs/prologue/000005.ldb differ diff --git a/packs/prologue/000006.log b/packs/prologue/000006.log new file mode 100644 index 0000000..57e3987 Binary files /dev/null and b/packs/prologue/000006.log differ diff --git a/packs/prologue/CURRENT b/packs/prologue/CURRENT index 1a84852..cacca75 100644 --- a/packs/prologue/CURRENT +++ b/packs/prologue/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/prologue/LOG b/packs/prologue/LOG index df99820..df4d866 100644 --- a/packs/prologue/LOG +++ b/packs/prologue/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.461075 16f47b000 Delete type=3 #1 +2026/08/17-23:24:47.263027 17253f000 Recovering log #3 +2026/08/17-23:24:47.263228 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.263611 17253f000 Level-0 table #5: 44887 bytes OK +2026/08/17-23:24:47.263871 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.263914 17253f000 Delete type=3 #2 diff --git a/packs/prologue/LOG.old b/packs/prologue/LOG.old new file mode 100644 index 0000000..df1b51a --- /dev/null +++ b/packs/prologue/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.533004 16e827000 Delete type=3 #1 diff --git a/packs/prologue/MANIFEST-000002 b/packs/prologue/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/prologue/MANIFEST-000002 and /dev/null differ diff --git a/packs/prologue/MANIFEST-000004 b/packs/prologue/MANIFEST-000004 new file mode 100644 index 0000000..c033d8f Binary files /dev/null and b/packs/prologue/MANIFEST-000004 differ diff --git a/packs/rules/000003.log b/packs/rules/000003.log deleted file mode 100644 index 5cbd4bd..0000000 Binary files a/packs/rules/000003.log and /dev/null differ diff --git a/packs/rules/000005.ldb b/packs/rules/000005.ldb new file mode 100644 index 0000000..06d5bef Binary files /dev/null and b/packs/rules/000005.ldb differ diff --git a/packs/rules/000006.log b/packs/rules/000006.log new file mode 100644 index 0000000..7c18849 Binary files /dev/null and b/packs/rules/000006.log differ diff --git a/packs/rules/CURRENT b/packs/rules/CURRENT index 1a84852..cacca75 100644 --- a/packs/rules/CURRENT +++ b/packs/rules/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/rules/LOG b/packs/rules/LOG index b46e1fb..e160d6b 100644 --- a/packs/rules/LOG +++ b/packs/rules/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.471824 16e463000 Delete type=3 #1 +2026/08/17-23:24:47.253858 172d4b000 Recovering log #3 +2026/08/17-23:24:47.253959 172d4b000 Level-0 table #5: started +2026/08/17-23:24:47.254345 172d4b000 Level-0 table #5: 36526 bytes OK +2026/08/17-23:24:47.254740 172d4b000 Delete type=0 #3 +2026/08/17-23:24:47.254786 172d4b000 Delete type=3 #2 diff --git a/packs/rules/LOG.old b/packs/rules/LOG.old new file mode 100644 index 0000000..43ef169 --- /dev/null +++ b/packs/rules/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.542959 16f83f000 Delete type=3 #1 diff --git a/packs/rules/MANIFEST-000002 b/packs/rules/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/rules/MANIFEST-000002 and /dev/null differ diff --git a/packs/rules/MANIFEST-000004 b/packs/rules/MANIFEST-000004 new file mode 100644 index 0000000..783aa45 Binary files /dev/null and b/packs/rules/MANIFEST-000004 differ diff --git a/packs/skills/000003.log b/packs/skills/000003.log deleted file mode 100644 index d985ef5..0000000 Binary files a/packs/skills/000003.log and /dev/null differ diff --git a/packs/skills/000005.ldb b/packs/skills/000005.ldb new file mode 100644 index 0000000..2ac258b Binary files /dev/null and b/packs/skills/000005.ldb differ diff --git a/packs/skills/000006.log b/packs/skills/000006.log new file mode 100644 index 0000000..3318040 Binary files /dev/null and b/packs/skills/000006.log differ diff --git a/packs/skills/CURRENT b/packs/skills/CURRENT index 1a84852..cacca75 100644 --- a/packs/skills/CURRENT +++ b/packs/skills/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/skills/LOG b/packs/skills/LOG index 57e6167..31b4f6d 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.395237 16e463000 Delete type=3 #1 +2026/08/17-23:24:47.241716 17253f000 Recovering log #3 +2026/08/17-23:24:47.241766 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.241955 17253f000 Level-0 table #5: 7806 bytes OK +2026/08/17-23:24:47.242285 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.242328 17253f000 Delete type=3 #2 diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old new file mode 100644 index 0000000..0d4f8d2 --- /dev/null +++ b/packs/skills/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.467729 16f033000 Delete type=3 #1 diff --git a/packs/skills/MANIFEST-000002 b/packs/skills/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/skills/MANIFEST-000002 and /dev/null differ diff --git a/packs/skills/MANIFEST-000004 b/packs/skills/MANIFEST-000004 new file mode 100644 index 0000000..39883ac Binary files /dev/null and b/packs/skills/MANIFEST-000004 differ diff --git a/packs/slice/000003.log b/packs/slice/000003.log deleted file mode 100644 index 39926e8..0000000 Binary files a/packs/slice/000003.log and /dev/null differ diff --git a/packs/slice/000005.ldb b/packs/slice/000005.ldb new file mode 100644 index 0000000..ac4df01 Binary files /dev/null and b/packs/slice/000005.ldb differ diff --git a/packs/slice/000006.log b/packs/slice/000006.log new file mode 100644 index 0000000..c25ac75 Binary files /dev/null and b/packs/slice/000006.log differ diff --git a/packs/slice/CURRENT b/packs/slice/CURRENT index 1a84852..cacca75 100644 --- a/packs/slice/CURRENT +++ b/packs/slice/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/slice/LOG b/packs/slice/LOG index d0fd184..95fc357 100644 --- a/packs/slice/LOG +++ b/packs/slice/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.466508 16ec6f000 Delete type=3 #1 +2026/08/17-23:24:47.264565 17253f000 Recovering log #3 +2026/08/17-23:24:47.264605 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.264863 17253f000 Level-0 table #5: 16902 bytes OK +2026/08/17-23:24:47.265193 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.265233 17253f000 Delete type=3 #2 diff --git a/packs/slice/LOG.old b/packs/slice/LOG.old new file mode 100644 index 0000000..8891cfe --- /dev/null +++ b/packs/slice/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.538092 16f033000 Delete type=3 #1 diff --git a/packs/slice/MANIFEST-000002 b/packs/slice/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/slice/MANIFEST-000002 and /dev/null differ diff --git a/packs/slice/MANIFEST-000004 b/packs/slice/MANIFEST-000004 new file mode 100644 index 0000000..0966a50 Binary files /dev/null and b/packs/slice/MANIFEST-000004 differ diff --git a/packs/starter/000003.log b/packs/starter/000003.log deleted file mode 100644 index 5fb9735..0000000 Binary files a/packs/starter/000003.log and /dev/null differ diff --git a/packs/starter/000005.ldb b/packs/starter/000005.ldb new file mode 100644 index 0000000..eeae20d Binary files /dev/null and b/packs/starter/000005.ldb differ diff --git a/packs/starter/000006.log b/packs/starter/000006.log new file mode 100644 index 0000000..eb88e18 Binary files /dev/null and b/packs/starter/000006.log differ diff --git a/packs/starter/CURRENT b/packs/starter/CURRENT index 1a84852..cacca75 100644 --- a/packs/starter/CURRENT +++ b/packs/starter/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/starter/LOG b/packs/starter/LOG index d65286d..9e81916 100644 --- a/packs/starter/LOG +++ b/packs/starter/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.449085 16ec6f000 Delete type=3 #1 +2026/08/17-23:24:47.257336 17253f000 Recovering log #3 +2026/08/17-23:24:47.257721 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.258429 17253f000 Level-0 table #5: 84027 bytes OK +2026/08/17-23:24:47.258808 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.258862 17253f000 Delete type=3 #2 diff --git a/packs/starter/LOG.old b/packs/starter/LOG.old new file mode 100644 index 0000000..29bba85 --- /dev/null +++ b/packs/starter/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.521202 16e827000 Delete type=3 #1 diff --git a/packs/starter/MANIFEST-000002 b/packs/starter/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/starter/MANIFEST-000002 and /dev/null differ diff --git a/packs/starter/MANIFEST-000004 b/packs/starter/MANIFEST-000004 new file mode 100644 index 0000000..57d9baa Binary files /dev/null and b/packs/starter/MANIFEST-000004 differ diff --git a/packs/tables/000003.log b/packs/tables/000003.log deleted file mode 100644 index f125b7d..0000000 Binary files a/packs/tables/000003.log and /dev/null differ diff --git a/packs/tables/000005.ldb b/packs/tables/000005.ldb new file mode 100644 index 0000000..64baa1c Binary files /dev/null and b/packs/tables/000005.ldb differ diff --git a/packs/tables/000006.log b/packs/tables/000006.log new file mode 100644 index 0000000..d5e06f3 Binary files /dev/null and b/packs/tables/000006.log differ diff --git a/packs/tables/CURRENT b/packs/tables/CURRENT index 1a84852..cacca75 100644 --- a/packs/tables/CURRENT +++ b/packs/tables/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/tables/LOG b/packs/tables/LOG index 48041c3..e596947 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.443432 16ec6f000 Delete type=3 #1 +2026/08/17-23:24:47.266184 173557000 Recovering log #3 +2026/08/17-23:24:47.266205 173557000 Level-0 table #5: started +2026/08/17-23:24:47.266343 173557000 Level-0 table #5: 3739 bytes OK +2026/08/17-23:24:47.266641 173557000 Delete type=0 #3 +2026/08/17-23:24:47.266687 173557000 Delete type=3 #2 diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old new file mode 100644 index 0000000..59bcbe8 --- /dev/null +++ b/packs/tables/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.515307 16f033000 Delete type=3 #1 diff --git a/packs/tables/MANIFEST-000002 b/packs/tables/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/tables/MANIFEST-000002 and /dev/null differ diff --git a/packs/tables/MANIFEST-000004 b/packs/tables/MANIFEST-000004 new file mode 100644 index 0000000..004ff30 Binary files /dev/null and b/packs/tables/MANIFEST-000004 differ diff --git a/packs/talents/000003.log b/packs/talents/000003.log deleted file mode 100644 index 443b7ea..0000000 Binary files a/packs/talents/000003.log and /dev/null differ diff --git a/packs/talents/000005.ldb b/packs/talents/000005.ldb new file mode 100644 index 0000000..fb653de Binary files /dev/null and b/packs/talents/000005.ldb differ diff --git a/packs/talents/000006.log b/packs/talents/000006.log new file mode 100644 index 0000000..29003f7 Binary files /dev/null and b/packs/talents/000006.log differ diff --git a/packs/talents/CURRENT b/packs/talents/CURRENT index 1a84852..cacca75 100644 --- a/packs/talents/CURRENT +++ b/packs/talents/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/talents/LOG b/packs/talents/LOG index 380c100..5b36005 100644 --- a/packs/talents/LOG +++ b/packs/talents/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.397941 16fc87000 Delete type=3 #1 +2026/08/17-23:24:47.243316 173d63000 Recovering log #3 +2026/08/17-23:24:47.243351 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.243531 173d63000 Level-0 table #5: 5770 bytes OK +2026/08/17-23:24:47.243775 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.243817 173d63000 Delete type=3 #2 diff --git a/packs/talents/LOG.old b/packs/talents/LOG.old new file mode 100644 index 0000000..37b3eb0 --- /dev/null +++ b/packs/talents/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.470482 17004b000 Delete type=3 #1 diff --git a/packs/talents/MANIFEST-000002 b/packs/talents/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/talents/MANIFEST-000002 and /dev/null differ diff --git a/packs/talents/MANIFEST-000004 b/packs/talents/MANIFEST-000004 new file mode 100644 index 0000000..f8c6b47 Binary files /dev/null and b/packs/talents/MANIFEST-000004 differ diff --git a/packs/vehicles/000003.log b/packs/vehicles/000003.log deleted file mode 100644 index 9950ce5..0000000 Binary files a/packs/vehicles/000003.log and /dev/null differ diff --git a/packs/vehicles/000005.ldb b/packs/vehicles/000005.ldb new file mode 100644 index 0000000..f6b2cd4 Binary files /dev/null and b/packs/vehicles/000005.ldb differ diff --git a/packs/vehicles/000006.log b/packs/vehicles/000006.log new file mode 100644 index 0000000..47800e2 Binary files /dev/null and b/packs/vehicles/000006.log differ diff --git a/packs/vehicles/CURRENT b/packs/vehicles/CURRENT index 1a84852..cacca75 100644 --- a/packs/vehicles/CURRENT +++ b/packs/vehicles/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/vehicles/LOG b/packs/vehicles/LOG index dc52691..db9f92a 100644 --- a/packs/vehicles/LOG +++ b/packs/vehicles/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.405177 16fc87000 Delete type=3 #1 +2026/08/17-23:24:47.250637 17253f000 Recovering log #3 +2026/08/17-23:24:47.250671 17253f000 Level-0 table #5: started +2026/08/17-23:24:47.250835 17253f000 Level-0 table #5: 6939 bytes OK +2026/08/17-23:24:47.251080 17253f000 Delete type=0 #3 +2026/08/17-23:24:47.251125 17253f000 Delete type=3 #2 diff --git a/packs/vehicles/LOG.old b/packs/vehicles/LOG.old new file mode 100644 index 0000000..d66dc75 --- /dev/null +++ b/packs/vehicles/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.477647 16e827000 Delete type=3 #1 diff --git a/packs/vehicles/MANIFEST-000002 b/packs/vehicles/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/vehicles/MANIFEST-000002 and /dev/null differ diff --git a/packs/vehicles/MANIFEST-000004 b/packs/vehicles/MANIFEST-000004 new file mode 100644 index 0000000..d4d73b7 Binary files /dev/null and b/packs/vehicles/MANIFEST-000004 differ diff --git a/packs/weapons/000003.log b/packs/weapons/000003.log deleted file mode 100644 index e1488ed..0000000 Binary files a/packs/weapons/000003.log and /dev/null differ diff --git a/packs/weapons/000005.ldb b/packs/weapons/000005.ldb new file mode 100644 index 0000000..742beba Binary files /dev/null and b/packs/weapons/000005.ldb differ diff --git a/packs/weapons/000006.log b/packs/weapons/000006.log new file mode 100644 index 0000000..4d427a6 Binary files /dev/null and b/packs/weapons/000006.log differ diff --git a/packs/weapons/CURRENT b/packs/weapons/CURRENT index 1a84852..cacca75 100644 --- a/packs/weapons/CURRENT +++ b/packs/weapons/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000004 diff --git a/packs/weapons/LOG b/packs/weapons/LOG index e3674e7..5ead1cd 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1 +1,5 @@ -2026/08/17-21:58:29.399814 16fc87000 Delete type=3 #1 +2026/08/17-23:24:47.245857 173d63000 Recovering log #3 +2026/08/17-23:24:47.245924 173d63000 Level-0 table #5: started +2026/08/17-23:24:47.246193 173d63000 Level-0 table #5: 14767 bytes OK +2026/08/17-23:24:47.246515 173d63000 Delete type=0 #3 +2026/08/17-23:24:47.246567 173d63000 Delete type=3 #2 diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old new file mode 100644 index 0000000..b7412eb --- /dev/null +++ b/packs/weapons/LOG.old @@ -0,0 +1 @@ +2026/08/17-23:24:31.472133 16f83f000 Delete type=3 #1 diff --git a/packs/weapons/MANIFEST-000002 b/packs/weapons/MANIFEST-000002 deleted file mode 100644 index bbbc585..0000000 Binary files a/packs/weapons/MANIFEST-000002 and /dev/null differ diff --git a/packs/weapons/MANIFEST-000004 b/packs/weapons/MANIFEST-000004 new file mode 100644 index 0000000..6a582af Binary files /dev/null and b/packs/weapons/MANIFEST-000004 differ diff --git a/ringbrp.mjs b/ringbrp.mjs index db91b1a..9031159 100644 --- a/ringbrp.mjs +++ b/ringbrp.mjs @@ -1580,7 +1580,10 @@ export async function easePanic(actor, reliefKey, level = "success", { note = "" const before = Number(actor.system?.panic?.value ?? 0); const after = panicAfter(before, -back); await actor.update({ "system.panic.value": after }); - await panicCard(actor, before, after, game.i18n.localize(String(spec?.label ?? reliefKey ?? "")), note); + // A fumble comes back as negative relief, so the card has to say so — otherwise it + // reads "Psychology" over a number that just went up, and the table reads it as a bug. + await panicCard(actor, before, after, game.i18n.localize(String(spec?.label ?? reliefKey ?? "")), + note, { backfired: back < 0 }); return panicBandFrom(after); } @@ -1596,13 +1599,13 @@ export async function breakPanic(actor, choice = "freeze") { return panicBandFrom(after); } -async function panicCard(actor, before, after, reason, note) { +async function panicCard(actor, before, after, reason, note, { backfired = false } = {}) { const band = panicBandFrom(after); await ChatMessage.create({ speaker: ChatMessage.getSpeaker({ actor }), content: await rbRenderTemplate("systems/ringbrp/templates/chat-panic.hbs", { actorName: actor.name, before, after, reason, note, - band, breaks: panicBreaksAt(after), penalty: panicPenaltyFor(after), + band, breaks: panicBreaksAt(after), penalty: panicPenaltyFor(after), backfired, choices: PANIC_BREAK, pips: Array.from({ length: PANIC_MAX }, (_, i) => i < after) }) diff --git a/rules.mjs b/rules.mjs index d4a97d4..19df0c8 100644 --- a/rules.mjs +++ b/rules.mjs @@ -358,10 +358,18 @@ export function panicAfter(value, delta) { return Math.max(0, Math.min(PANIC_MAX, (Number(value) || 0) + (Number(delta) || 0))); } -/** A success takes one point, a special or better takes two. */ +/** + * A success takes one point, a special or better takes two — and a FUMBLE puts one on. + * + * Returned as a negative relief so the whole thing stays one number and one direction: + * easePanic subtracts what this gives it, so -1 subtracts a negative and the track goes + * up. Trying to talk somebody down and making it worse is the most familiar thing in + * this list, and until now it was the only outcome that cost nothing. + */ export function panicReliefFor(level) { if (level === "critical" || level === "special") return 2; if (level === "success") return 1; + if (level === "fumble") return -1; return 0; } diff --git a/styles/ringbrp.css b/styles/ringbrp.css index 6e816da..caef5ee 100644 --- a/styles/ringbrp.css +++ b/styles/ringbrp.css @@ -1831,3 +1831,12 @@ color: var(--rb-void); background: var(--rb-danger); padding: 5px 8px; margin: 6px 0 0; } + +/* A fumbled relief puts a point ON. The card must say which way it went, or it reads + as "Psychology" printed over a number that just rose, and the table reads that as a + bug rather than as the rule. */ +.rb-panic-worse { + font-family: var(--rb-body); font-size: 11px; font-weight: 700; letter-spacing: .08em; + text-transform: uppercase; color: var(--rb-void); background: var(--rb-danger); + padding: 2px 6px; margin-right: 6px; +} diff --git a/system.json b/system.json index d3829ed..a643a09 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "ringbrp", "title": "The Custodians", "description": "A Basic Roleplaying game of agents who cross the crossing to contain what should not be there — and who come back a little less from here each time.", - "version": "1.1.1", + "version": "1.1.2", "compatibility": { "minimum": 13, "verified": "14.364" diff --git a/templates/chat-panic.hbs b/templates/chat-panic.hbs index 70a21cd..00a4406 100644 --- a/templates/chat-panic.hbs +++ b/templates/chat-panic.hbs @@ -13,7 +13,7 @@ {{localize band.label}} -
{{reason}}{{#if note}} — {{note}}{{/if}}
+{{#if backfired}}{{localize "RINGBRP.Panic.Backfired"}} {{/if}}{{reason}}{{#if note}} — {{note}}{{/if}}
{{localize band.note}}
{{#if penalty}}{{penalty}}% {{localize "RINGBRP.Chat.ToEverything"}}
{{/if}} diff --git a/tools/check-behaviour.mjs b/tools/check-behaviour.mjs index 2f1346d..47625c5 100644 --- a/tools/check-behaviour.mjs +++ b/tools/check-behaviour.mjs @@ -482,13 +482,25 @@ test("breaking does not reset you to calm", () => { assert.ok(RULES.PANIC_AFTER_BREAK > 0, "breaking wipes the track clean"); assert.ok(RULES.PANIC_AFTER_BREAK < RULES.PANIC_MAX, "breaking leaves you still broken"); }); -test("a special takes two points, a failure takes none", () => { +test("a special takes two points, a failure takes none, a fumble ADDS one", () => { assert.equal(RULES.panicReliefFor("special"), 2); assert.equal(RULES.panicReliefFor("critical"), 2); assert.equal(RULES.panicReliefFor("success"), 1); assert.equal(RULES.panicReliefFor("failure"), 0); - assert.equal(RULES.panicReliefFor("fumble"), 0); + // Negative relief. Trying to steady somebody and making it worse is the most familiar + // thing on the list and it used to be the only outcome that cost nothing. + assert.equal(RULES.panicReliefFor("fumble"), -1); }); +// The sign has to survive the arithmetic easePanic does, or a fumble quietly heals. +test("a fumbled relief puts a point ON, through the same subtraction", () => { + const before = 2; + const after = RULES.panicAfter(before, -RULES.panicReliefFor("fumble")); + assert.equal(after, 3, "a fumbled relief did not raise panic"); + assert.equal(RULES.panicAfter(before, -RULES.panicReliefFor("success")), 1); +}); +// And it must still not be able to push past the top. +test("a fumbled relief at 5 stays at 5", () => + assert.equal(RULES.panicAfter(5, -RULES.panicReliefFor("fumble")), RULES.PANIC_MAX)); // Every band and every trigger and relief must be sayable, or the chat card prints a key. test("every panic band, trigger and relief has a label", async () => { const { readFile } = await import("node:fs/promises"); diff --git a/tools/check-rules.mjs b/tools/check-rules.mjs index 9a1e0b0..af9762a 100644 --- a/tools/check-rules.mjs +++ b/tools/check-rules.mjs @@ -196,6 +196,7 @@ const checks = [ ["panicReliefFor('success')", RULES.panicReliefFor("success"), 1], ["panicReliefFor('special')", RULES.panicReliefFor("special"), 2], ["panicReliefFor('failure')", RULES.panicReliefFor("failure"), 0], + ["panicReliefFor('fumble')", RULES.panicReliefFor("fumble"), -1], // a lost location must cost something, for every kind the species tables use ["locationEffectsFor([]) is inert", RULES.locationEffectsFor([]).all, 0], ["leg disabled → physical", RULES.locationEffectsFor([{kind:"leg",disabled:true}]).physical, -30], diff --git a/tools/rules-text.mjs b/tools/rules-text.mjs index 9c83699..2f46397 100644 --- a/tools/rules-text.mjs +++ b/tools/rules-text.mjs @@ -546,7 +546,9 @@ ${table(["This happens", "Panic"], panicTrigRows)}Roll it. A success takes one point off; a special or better takes two. -A failure takes nothing and costs nothing but the moment you spent on it.
+A failure costs nothing but the moment you spent on it — and a fumble puts a +point ON. Trying to steady somebody and making it worse is the most familiar +thing on this list. ${table(["How", "Reaches", "How often"], panicReliefRows)}Occult is the odd one. Naming a thing correctly, out loud, helps