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:
slaguru666
2026-08-11 09:49:30 +01:00
co-authored by Claude Opus 5
parent 5c640d65cf
commit 4bfa7110d0
114 changed files with 262 additions and 50 deletions
+30
View File
@@ -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.