You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(lighting): make colored portal art emit matching light #86
Evidence policy update (2026-08-11):#66 is complete through #124; any wording
below treating it as a future prerequisite is superseded. #126/#127 retire the
committed renderer-review capture surface. The removed files were generated
review artifacts, not authored gameplay art. Any requirement below to commit
rendered screenshots, contact sheets, manifests, proof maps, or capture tooling
is superseded. Keep authored semantic review in maps/light-source-review.json (rationales, current digests, complete coverage,
and zero unreviewed emitters). Optional smooth/discrete diagnostics belong only
under ignored build/ or deployment output; summarize conclusions in the PR,
but never commit or gate merge on those files.
Follow-up to #65 and its implementation in #67, with the compatible main integration tracked by #66.
Outcome
Make colored portal art emit a small, matching light in every active context, covering both the dedicated portal archetypes and map-authored exits that replace their animation with a portal_* animation.
This is deliberately separate from #65: that issue audits and colors effective nonzero emitters, while most of these portal objects have no radius and therefore do not emit today.
Evidence
The dedicated family has 19 direct authored placements across eight maps, all without an effective radius:
Archetype
Direct placements
Established palette direction
portal_azure
1
60d0ff crystal cyan
portal_big
13
4060ff forcefield blue
portal_green
3
40ff60 forcefield green
portal_red
0
ff3030 emissive red
portal_yellow
2
ffe060 forcefield yellow
perm_magic_portal
0 static; spawned by town portal
reviewed cyan or arcane entry
Maps also contain 37 generic exit/exit_green objects across 19 maps that render colored portal animations: ten big, nine red, eight azure, six yellow, and four green. Thirty-six have no radius; one red portal has radius 9 but remains neutral. None has a map-local color override. The 23 based on exit_green would inherit green if a radius were added without respecting their replacement animation, while the 14 based on exit have no color supplier.
Together, direct and custom-animation portals touch 26 unique maps. Twenty of the custom exits are the four colored links on the Wizards' Tower hub and four floors, so this work must coordinate with #80 rather than layering conflicting ambient pools there.
Scope
Add the smallest rendered-effective default radius and matching color to the six dedicated portal archetypes.
Add map-local radius and color overrides to generic exits only where they render a portal_* animation. Do not add a global radius to exit or exit_green as part of this issue.
Review all active, inactive, hidden, creator/duplicator, and script-controlled states. An invisible or disabled portal must not leak light before it appears.
Reconcile co-located neutral light7/light9 sources deliberately; retain them only when they still serve independent ambient or navigation purposes.
Preserve teleport destinations, timing, scripts/events, walk/fly triggers, player-only behavior, sounds, zoom/alignment, and every other gameplay field.
Preserve main-only plural-name fields while delivering the compatible archetype changes across release lines.
Acceptance criteria
Azure, blue, green, red, and yellow portal art emits a small distinguishable matching light when active.
The town-portal spell's persistent portal has a reviewed color and radius and retains its full create/use/expire behavior.
Custom portal-animation exits match the rendered animation rather than their generic base archetype.
Hidden creator/duplicator prototypes and disabled portal states do not leak illumination.
Land only after #65/#67 are integrated on 1.x and #66 supplies the matching field/audit contract on main. Deliver compatible authored changes through separate linked pull requests. The canonical main pull request closes this issue; the 1.x companion links the issue and canonical PR without a closing keyword. Classic 1.x owns runtime rendering evidence; validate the authored mirror independently on main, or document a concrete compatibility exception.
Important
Evidence policy update (2026-08-11): #66 is complete through #124; any wording
below treating it as a future prerequisite is superseded. #126/#127 retire the
committed renderer-review capture surface. The removed files were generated
review artifacts, not authored gameplay art. Any requirement below to commit
rendered screenshots, contact sheets, manifests, proof maps, or capture tooling
is superseded. Keep authored semantic review in
maps/light-source-review.json(rationales, current digests, complete coverage,and zero unreviewed emitters). Optional smooth/discrete diagnostics belong only
under ignored
build/or deployment output; summarize conclusions in the PR,but never commit or gate merge on those files.
Follow-up to #65 and its implementation in #67, with the compatible
mainintegration tracked by #66.Outcome
Make colored portal art emit a small, matching light in every active context, covering both the dedicated portal archetypes and map-authored exits that replace their animation with a
portal_*animation.This is deliberately separate from #65: that issue audits and colors effective nonzero emitters, while most of these portal objects have no radius and therefore do not emit today.
Evidence
The dedicated family has 19 direct authored placements across eight maps, all without an effective radius:
portal_azure60d0ffcrystal cyanportal_big4060ffforcefield blueportal_green40ff60forcefield greenportal_redff3030emissive redportal_yellowffe060forcefield yellowperm_magic_portalMaps also contain 37 generic
exit/exit_greenobjects across 19 maps that render colored portal animations: ten big, nine red, eight azure, six yellow, and four green. Thirty-six have no radius; one red portal has radius 9 but remains neutral. None has a map-local color override. The 23 based onexit_greenwould inherit green if a radius were added without respecting their replacement animation, while the 14 based onexithave no color supplier.Together, direct and custom-animation portals touch 26 unique maps. Twenty of the custom exits are the four colored links on the Wizards' Tower hub and four floors, so this work must coordinate with #80 rather than layering conflicting ambient pools there.
Scope
portal_*animation. Do not add a global radius toexitorexit_greenas part of this issue.light7/light9sources deliberately; retain them only when they still serve independent ambient or navigation purposes.main-only plural-name fields while delivering the compatible archetype changes across release lines.Acceptance criteria
python3 tools/world_content_audit.py lights --check,python3 tools/validate.py, andgit diff --checkpass.Release lines
Land only after #65/#67 are integrated on
1.xand #66 supplies the matching field/audit contract onmain. Deliver compatible authored changes through separate linked pull requests. The canonicalmainpull request closes this issue; the1.xcompanion links the issue and canonical PR without a closing keyword. Classic1.xowns runtime rendering evidence; validate the authored mirror independently onmain, or document a concrete compatibility exception.