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.
|
||||
|
||||
Reference in New Issue
Block a user