A lamp lights the people standing in it
The goods yard fight made the case: three agents inside the same pool of light shot at -50% while the fourth, four metres away, shot at -10%. A lamp now has a reach, per item rather than global, because a weapon lamp and a vehicle searchlight are not the same offer — 4 m for cold light strips, 6 m for a weapon lamp, 10 m for the issue field lamp, 30 m for a roof searchlight. Anyone inside it is in the light and the card names whose lamp it is, so both halves of the rule travel together: the pool is one position and the whole group is standing in it. Measured from the tokens. The shot that started this — no lamp of her own, four metres from somebody else's, in pitch dark — goes from 20% to 60%, while an agent twenty-five metres out still eats the full -50%. An UNKNOWN distance is explicitly not lit: Number(null) is 0, so an unmeasured distance would otherwise have read as standing on top of the lamp and lit any scene with no tokens placed. The dialog carries a tick instead, pre-set when the canvas could measure it and the GM's answer when it could not. Note: template.json is read when Foundry loads the system, so a deployed server needs a restart and not just a pull before the migration can stamp the new field. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
5c640d65cf
commit
4bfa7110d0
@@ -4361,3 +4361,33 @@ result instead of trusting it, which is the only reason this log is accurate.
|
||||
**A content wart:** the barghest bites with something called "Vesh grasp limb" — the
|
||||
generic `grasp` weapon still carrying a Ringworld-era display name. Every creature in
|
||||
the bestiary that uses `grasp` inherits it.
|
||||
|
||||
## R-240. A lamp lights the people standing in it
|
||||
|
||||
The goods yard fight made the case: three agents inside the same pool of light shot at
|
||||
−50% while the fourth, four metres away, shot at −10%. Nobody would run that at a
|
||||
table, and the rule was wrong rather than merely coarse.
|
||||
|
||||
A lamp now has a **reach**, and it is per item rather than global, because a weapon
|
||||
lamp and a vehicle searchlight are not the same offer — 6 m, 10 m for the issue field
|
||||
lamp, 4 m for cold light strips, 30 m for a roof searchlight. Anyone inside the reach
|
||||
is in the light, and the card names whose lamp it is: *"MODE: Tomas's, 4 m away — you
|
||||
are in it."* Both halves of the rule travel together, so the pool is one position and
|
||||
the whole group is standing in it.
|
||||
|
||||
Measured from the tokens, because the canvas already knows who is standing where. The
|
||||
same shot that started this — Rakhi, no lamp of her own, four metres from Tomas's, in
|
||||
pitch dark — went from **20% to 60%**, and Ceyla twenty-five metres out still ate the
|
||||
full −50%.
|
||||
|
||||
**The interesting part was the unknown.** `Number(null)` is 0, so an unmeasured
|
||||
distance read as *standing on top of the lamp* and would have lit any scene with no
|
||||
tokens placed. My own spot-check caught it before it ever ran: an unknown distance is
|
||||
now explicitly not lit, and the dialog carries a tick that arrives pre-set when the
|
||||
canvas could measure it and is the GM's answer when there is nothing to measure. That
|
||||
keeps it automatic where it can be and honest where it cannot, rather than quietly
|
||||
lighting the world.
|
||||
|
||||
Note for deployment: `template.json` is read when Foundry loads the system, so the new
|
||||
`lightReachM` field did not exist on items until the server was restarted — the
|
||||
migration then stamped it. A remote server needs the restart, not just a pull.
|
||||
|
||||
+6
-2
@@ -861,7 +861,6 @@
|
||||
"RINGBRP.Sight.reflex": "Reflex sight",
|
||||
"RINGBRP.Sight.telescopic": "Telescopic sight",
|
||||
"RINGBRP.Sight.thermal": "Thermal sight",
|
||||
"RINGBRP.Sight.LampEffect": "lit, and visible",
|
||||
"RINGBRP.Sight.Revealed": "{name} shows them exactly where you are",
|
||||
"RINGBRP.Lighting.lit": "Lit",
|
||||
"RINGBRP.Lighting.dim": "Dim",
|
||||
@@ -876,5 +875,10 @@
|
||||
"RINGBRP.Chat.Damage": "damage",
|
||||
"RINGBRP.Chat.Sustained": "sustained",
|
||||
"RINGBRP.Chat.DamageMod": "damage mod",
|
||||
"RINGBRP.Notify.GearFitted": "Fitted {n} item(s) that were carried before sights and lamps did anything."
|
||||
"RINGBRP.Notify.GearFitted": "Fitted {n} item(s) that were carried before sights and lamps did anything.",
|
||||
"RINGBRP.Sight.LampOwn": "yours, {reach} m of it",
|
||||
"RINGBRP.Sight.LampNear": "{holder}'s, {m} m away — you are in it",
|
||||
"RINGBRP.Sight.SomeLamp": "The light you are standing in",
|
||||
"RINGBRP.Dialog.InLight": "I am in the light",
|
||||
"RINGBRP.Dialog.InLightHint": "Ticked already if a lit lamp is within reach of your token. Tick it yourself when there are no tokens to measure."
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.947107 16e763000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.196312 1737fb000 Recovering log #3
|
||||
2026/08/11-09:44:12.196429 1737fb000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.196537 1737fb000 Level-0 table #5: 3269 bytes OK
|
||||
2026/08/11-09:44:12.196738 1737fb000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.196764 1737fb000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.979643 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.980151 16f77b000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.205237 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.205611 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.205721 172fef000 Level-0 table #5: 4129 bytes OK
|
||||
2026/08/11-09:44:12.205945 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.205992 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:10.009129 17327f000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.949621 16f77b000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.197435 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.198040 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.198321 172fef000 Level-0 table #5: 31614 bytes OK
|
||||
2026/08/11-09:44:12.198514 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.198552 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.981180 17327f000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.966944 16ef6f000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.184168 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.185997 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.187435 172fef000 Level-0 table #5: 223489 bytes OK
|
||||
2026/08/11-09:44:12.187693 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.187728 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.996017 172a73000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.974409 16e763000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.193256 1737fb000 Recovering log #3
|
||||
2026/08/11-09:44:12.193611 1737fb000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.193707 1737fb000 Level-0 table #5: 3295 bytes OK
|
||||
2026/08/11-09:44:12.193908 1737fb000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.193951 1737fb000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:10.003815 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.956900 16ff87000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.181257 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.182096 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.182622 172fef000 Level-0 table #5: 58065 bytes OK
|
||||
2026/08/11-09:44:12.182900 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.182935 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.987323 173a8b000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.978547 16ff87000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.200848 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.201122 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.201397 172fef000 Level-0 table #5: 30975 bytes OK
|
||||
2026/08/11-09:44:12.201635 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.201675 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:10.007699 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.938794 16e763000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.190287 1737fb000 Recovering log #3
|
||||
2026/08/11-09:44:12.190653 1737fb000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.190822 1737fb000 Level-0 table #5: 7486 bytes OK
|
||||
2026/08/11-09:44:12.191038 1737fb000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.191067 1737fb000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.973842 172a73000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.972924 16ef6f000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.202502 171fd7000 Recovering log #3
|
||||
2026/08/11-09:44:12.202661 171fd7000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.202854 171fd7000 Level-0 table #5: 16892 bytes OK
|
||||
2026/08/11-09:44:12.203092 171fd7000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.203146 171fd7000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:10.002176 173a8b000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.971218 16e763000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.203885 1737fb000 Recovering log #3
|
||||
2026/08/11-09:44:12.204195 1737fb000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.204288 1737fb000 Level-0 table #5: 3739 bytes OK
|
||||
2026/08/11-09:44:12.204494 1737fb000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.204520 1737fb000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:10.000153 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.942298 16ff87000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.191930 172fef000 Recovering log #3
|
||||
2026/08/11-09:44:12.192079 172fef000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.192222 172fef000 Level-0 table #5: 5770 bytes OK
|
||||
2026/08/11-09:44:12.192448 172fef000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.192478 172fef000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.976561 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000002
|
||||
MANIFEST-000004
|
||||
|
||||
+5
-1
@@ -1 +1,5 @@
|
||||
2026/08/11-08:56:03.951942 16e763000 Delete type=3 #1
|
||||
2026/08/11-09:44:12.199441 1737fb000 Recovering log #3
|
||||
2026/08/11-09:44:12.199690 1737fb000 Level-0 table #5: started
|
||||
2026/08/11-09:44:12.199821 1737fb000 Level-0 table #5: 6939 bytes OK
|
||||
2026/08/11-09:44:12.200021 1737fb000 Delete type=0 #3
|
||||
2026/08/11-09:44:12.200051 1737fb000 Delete type=3 #2
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2026/08/11-09:43:09.983507 172267000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user