Skip to content

fix(lighting): consolidate glower illumination - #114

Merged
zoeyrose merged 3 commits into
1.xfrom
feat/103-glower-lighting-1x
Aug 11, 2026
Merged

zoeyrose merged 3 commits into
1.xfrom
feat/103-glower-lighting-1x

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 11, 2026 •

Copy link
Copy Markdown
Member

Summary

  • give glower.101 the reviewed warm ffd080 color without a global radius
  • move 21 exact same-tile radius-4/5/7/9 helper footprints onto the visible fixtures and remove only those helpers
  • record the five previously unpaired Asteria Docks and Brynknot fixtures explicitly as radius-zero, non-emitting placements
  • refresh the checked light-review records and exact Classic smooth/discrete evidence for all eight affected contexts

Part of #103.

The canonical main companion will carry the sole closing keyword after prerequisite #66 supplies the matching main-line field and audit contract. This maintenance PR intentionally does not close the issue.

Coordinates

  • Base: 1.x at 9d5aa3c88becabd33247418af76b2866376ce92b
  • Head: feat/103-glower-lighting-1x at 870f293c875a19c503284f7e402279d1ffafa03f
  • Worktree: /workspaces/atrinik/workspace/worktrees/content-1x/issue-103-glower-1x
  • Commits:
    • e91bd19c8 feat(lighting): move glower illumination onto fixtures
    • 677b891aa test(lighting): refresh glower runtime evidence
    • 870f293c8 docs(lighting): correct evidence runtime coordinates

Validation

Passed at exact head 870f293c875a19c503284f7e402279d1ffafa03f:

tools/atrinik-content --root . validate <each touched archetype/map> --json
python3 -m tools.content_catalog validate --root .
python3 -m json.tool maps/light-source-review.json
python3 tools/world_content_audit.py lights --check
python3 tools/validate.py
git diff --check 9d5aa3c88becabd33247418af76b2866376ce92b...HEAD
  • all nine touched archetype/map files pass lossless validation
  • catalog: 8,098 definitions and 68,560 references
  • light audit: 97 archetypes, 4 artifacts, 11,393 instances across 625 maps, zero unreviewed
  • aggregate: all 130 tests plus schema, catalog, contracts, syntax round-trips, resources, and both release archives pass
  • focused fixture inventory: five radius-0, one radius-4, seven radius-5, one radius-7, and twelve radius-9 placements
  • all four latest-head GitHub checks pass

The optional broader wrapper ./atrinik build all --profile issue-103-glower-1x --test completed 82/84 CTest entries. Its two failures are unrelated existing Classic-stack assertions in server-unit-server.object and the Python 3.14 server-plugin-python QuestManager test; the exact-profile build without --test passes, and the repository-owned validation above is fully green.

Runtime verification

  • Profile/build: issue-103-glower-1x / issue-103-glower-1x-d73658195bc0
  • Source checkpoint: content e91bd19c8aa41a2015f76969dbcbd7cf4d2ea377
  • Runtime dependencies: Classic client/server 62625f30ff27707c66304915d49ec4132023342d; resources 266ac693e5567e1c253384bff1d490f1e37fedca
  • Scenario/state/topology: issue-103-glower-lighting / scenario-issue-103-glower-lighting / issue-103-glower-lighting
  • Evidence: 1,220 smooth captures, 24 discrete captures, 1,244 manifest-bound views, and 50 checked contact sheets

Greyton Jail, Old Outpost, both Rockforge maps, Asteria interior and docks, the mountain inn, and Brynknot were reviewed in smooth and discrete lighting. Warm emitting fixtures preserve their intended footprints without wall bleed, washout, or navigation loss; the five zero-radius fixtures remain dark. Continuous source captures pass matched-control pixel gates. The topology services and isolated X display are stopped; the reproducible profile, build, scenario/state, topology record, and ignored build/issue103-runtime-review tree (1,113 smooth-map, 107 smooth-source, and 24 discrete PNGs) remain preserved while this PR is open.

Review

  • Round 1 found the deliberately stale evidence checkpoint; fixed by 677b891aa
  • Round 2 found only stale runtime-coordinate documentation and this provisional PR body; the guide is fixed by 870f293c8 and this body records the final head
  • Round 3 found the patch-only release-title issue; the title is now fix(lighting): consolidate glower illumination, and the final complete review has zero remaining actionable findings

@zoeyrose zoeyrose moved this to Review in Atrinik work Aug 11, 2026
@zoeyrose zoeyrose changed the title feat(lighting): consolidate glower illumination fix(lighting): consolidate glower illumination Aug 11, 2026
@zoeyrose
zoeyrose marked this pull request as ready for review August 11, 2026 11:46
@zoeyrose
zoeyrose merged commit 969b53c into 1.x Aug 11, 2026
8 checks passed
@zoeyrose
zoeyrose deleted the feat/103-glower-lighting-1x branch August 11, 2026 14:46
@github-project-automation github-project-automation Bot moved this from Review to Done in Atrinik work Aug 11, 2026
zoeyrose added a commit that referenced this pull request Aug 11, 2026
## Summary

- port #114's reviewed glower ownership result to the current `main` tip
- give `glower.101` the warm `ffd080` color without a global radius
- transfer 21 exact helper footprints to visible fixtures and preserve
the five explicitly non-emitting placements
- refresh only the main-native semantic light ledger; no Classic capture
or replacement-renderer claim is introduced

Closes #103.

## Release-line relationship

The independently validated Classic `1.x` delivery merged first in #114
as `969b53c2b953772970d0cc6c76e702a262b1d09d`. This canonical `main`
companion ports the nine compatible authored paths against the current
main-native ledger.

## Coordinates

- base: `main@908fd37`
- head: `b4b26b161981127bb9b75a71e71f72024e453e40`
- branch: `fix/103-glower-lighting-main`
- changed paths: ten (nine authored source/map paths plus
`maps/light-source-review.json`)

## Invariants

- 26 glower placements: five radius 0, one radius 4, seven radius 5, one
radius 7, and twelve radius 9
- all nine authored source/map files are byte-identical to the merged
`1.x` result
- the eight affected map review records and `glower.101` color-source
record match the line-paired semantic result
- no `maps/light-source-evidence/**`, manifest, proof scene, capture
tooling/test, `views`, or `evidence_focus` field is added
- replacement runtime verification remains explicitly unavailable on
`main`

## Validation

Passed against exact head content:

- focused lossless validation for all nine authored paths
- `python3 -m tools.content_catalog validate --root .` — 8,105
definitions and 68,594 references
- `python3 tools/world_content_audit.py lights --check` — zero
unreviewed emitters
- `python3 tools/validate.py` — 128 tests passed; 3,561 canonical
archetypes complete
- `git diff --check`
- `git ls-files 'maps/light-source-evidence/*'` — empty
- exact remote comparison — one commit and ten remote blobs identical to
the locally validated files

## Review

- round 1 found repeated ledger rationale text had associated several
new rationales with neighboring records; corrected the exact keyed
records
- round 2 rechecked the complete diff, cross-line bytes, ledger objects,
radii distribution, focused validators, aggregate validator, and remote
blob identities with no remaining actionable findings
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.8.6 🎉

The release is available on:

Your semantic-release bot 📦🚀

zoeyrose added a commit that referenced this pull request Aug 23, 2026
## Summary

This PR improves trap handling and progression, expands combat and
status-effect feedback, fixes two client crashes, and removes the
deprecated Windows self-updater.

## Changes

### Trap handling and progression

- Automatically searches for and attempts to disarm traps before opening
a previously closed container.
- Requires the player to know both Find Traps and Remove Traps.
- Processes every detected trap in the selected container.
- Keeps searches deterministic, so repeating an attempt with the same
rating cannot reroll a failure or provide additional XP.
- Uses character level as the zone-scaling baseline while allowing skill
investment and attributes to provide meaningful specialization:
- Find rating: `character level + Find Traps level / 2 + (Intelligence -
10) / 4`
- Disarm rating: `character level + Remove Traps level / 2 + (Dexterity
- 10) / 4`
- Generates trap levels using difficulty bands:
  - 60% at 80–100% of area difficulty
  - 25% at 101–110%
  - 10% at 111–120%
  - 5% at 121–140%
- Preserves the generating monster's base experience on its traps.
- Awards successful discovery and disarming XP using `monster base XP ×
trap level`, subject to the normal single-award XP cap.
- Prevents repeated discovery XP from the same trap.
- Starts both trap skills at level 1 so they can progress.
- Makes XP from both trap skills contribute toward character-level
progression at a rate of 20% towards the character level.
- Retains normal trap consequences when detection or disarming fails.

### Combat feedback

- Reports the modifiers applied to attack rolls, including their signed
values and net adjustment.
- Covers modifiers such as:
  - backstab
  - sidestab
  - visibility and blindness
  - fear, confusion, and unaggressive targets
  - altitude differences
  - the `target moved -6` penalty
- Sends modifier information only when a player is involved, avoiding
unnecessary formatting for NPC-versus-NPC combat.
- Resolves projectile owners before selecting recipients.

### Depletion tooltip

- Lists every currently depleted statistic and its depletion amount.
- Builds the description from the authoritative server-side depletion
effect.
- Refreshes the active-effect tooltip when additional depletion is
applied.

### Client crash fixes

- Avoids freeing a null asset-source cache path or HTTP URL.
- Avoids freeing a null animation-face array when receiving animation
data.

### Deprecated Windows updater removal

- Removes the legacy updater executable, elevated wrapper, batch script,
popup, headers, and build targets.
- Removes updater-only archive utilities and installer entries.
- Updates Windows shortcuts to launch `atrinik.exe` directly.
- Removes stale updater references from documentation and source-list
tooling.
- Leaves the normal game-data update protocol and settings migration
system intact.

## Testing

- Built the Linux client.
- Built the Linux server.
- Ran the complete server C test suite successfully.
- Ran all 420 Python plugin tests successfully.
- Added focused regression coverage for:
  - automatic container trap handling
  - effective Find Traps and Remove Traps ratings
  - the 60/25/10/5 trap-level distribution
  - monster base-XP inheritance
  - one-time discovery XP
  - disarming XP
  - contribution of both skills to character XP
  - deterministic detection and disarming boundaries
  - combat positional modifiers
  - the moved-target penalty
  - depletion descriptions
- Passed the repository-wide clang-format check.
- Passed `git diff --check`.
- Ran targeted clang-tidy analysis; only an unrelated pre-existing
treasure-parser warning was reported.

## Review notes

The branch was reviewed against `master` for correctness, duplication,
ownership, iteration safety, performance, packaging, and security.

Notable considerations:

- Automatic trap handling is linear in the direct contents of the opened
container and only runs during the closed-to-open transition.
- Nested containers are checked when individually opened rather than
recursively scanning an entire inventory tree.
- Trap searches cannot be profitably spammed because detection is
deterministic and discovery XP is awarded once.
- The combat-description allocation is skipped when neither participant
is a player.
- Removing the updater eliminates an obsolete elevated
download-and-extraction path.
- The Windows package changes were inspected statically, but the final
MXE package path should also run in Windows release CI.
zoeyrose added a commit that referenced this pull request Aug 23, 2026
## Summary

- port #114's reviewed glower ownership result to the current `main` tip
- give `glower.101` the warm `ffd080` color without a global radius
- transfer 21 exact helper footprints to visible fixtures and preserve
the five explicitly non-emitting placements
- refresh only the main-native semantic light ledger; no Classic capture
or replacement-renderer claim is introduced

Closes #103.

## Release-line relationship

The independently validated Classic `1.x` delivery merged first in #114
as `6aef7c4d8df4f8007dc715b5d8d8111d48dfe8cc`. This canonical `main`
companion ports the nine compatible authored paths against the current
main-native ledger.

## Coordinates

- base: `main@6c7792c`
- head: `e1ba65e2e862119749ee53a853d957aae52c3fed`
- branch: `fix/103-glower-lighting-main`
- changed paths: ten (nine authored source/map paths plus
`maps/light-source-review.json`)

## Invariants

- 26 glower placements: five radius 0, one radius 4, seven radius 5, one
radius 7, and twelve radius 9
- all nine authored source/map files are byte-identical to the merged
`1.x` result
- the eight affected map review records and `glower.101` color-source
record match the line-paired semantic result
- no `maps/light-source-evidence/**`, manifest, proof scene, capture
tooling/test, `views`, or `evidence_focus` field is added
- replacement runtime verification remains explicitly unavailable on
`main`

## Validation

Passed against exact head content:

- focused lossless validation for all nine authored paths
- `python3 -m tools.content_catalog validate --root .` — 8,105
definitions and 68,594 references
- `python3 tools/world_content_audit.py lights --check` — zero
unreviewed emitters
- `python3 tools/validate.py` — 128 tests passed; 3,561 canonical
archetypes complete
- `git diff --check`
- `git ls-files 'maps/light-source-evidence/*'` — empty
- exact remote comparison — one commit and ten remote blobs identical to
the locally validated files

## Review

- round 1 found repeated ledger rationale text had associated several
new rationales with neighboring records; corrected the exact keyed
records
- round 2 rechecked the complete diff, cross-line bytes, ledger objects,
radii distribution, focused validators, aggregate validator, and remote
blob identities with no remaining actionable findings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant