Skip to content

fix(quests): isolate repeat reset prerequisites - #172

Merged
zoeyrose merged 1 commit into
mainfrom
test/repeat-quest-reset-prerequisite-main
Aug 12, 2026
Merged

zoeyrose merged 1 commit into
mainfrom
test/repeat-quest-reset-prerequisite-main

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 12, 2026 •

Copy link
Copy Markdown
Member

Summary

  • make the repeat-quest reset regression establish its available-quest-point prerequisite
  • isolate and restore player level plus quest-point state
  • preserve production reset and cooldown behavior
  • paired 1.x companion: fix(quests): isolate repeat reset prerequisites #173

Validation

  • python3 -m compileall -q maps/python
  • python3 tools/validate.py
  • git diff --check

Program context

Classic PR atrinik/classic#180 proved that the v1.8.10 runtime correction reaches the repeat-reset assertion. The remaining failure is a fixture precondition: the test player has only one available quest point, and production correctly retains terminal repeat state until another point is available.

The test now establishes and asserts available quest points, isolates quest-point/player-level state, and restores every mutation with addCleanup. Production quest behavior is unchanged.

This PR does not close atrinik/atrinik#356 or atrinik/classic#169; release and lock gates remain.

@zoeyrose
zoeyrose merged commit 92d49f9 into main Aug 12, 2026
5 checks passed
@zoeyrose
zoeyrose deleted the test/repeat-quest-reset-prerequisite-main branch August 12, 2026 01:47
zoeyrose added a commit that referenced this pull request Aug 12, 2026
## Summary

- make the repeat-quest reset regression establish its
available-quest-point prerequisite
- isolate and restore player level plus quest-point state
- preserve production reset and cooldown behavior
- canonical `main` change: #172

## Validation

- `python3 -m compileall -q maps/python`
- `python3 tools/validate.py`
- `git diff --check`

## Program context

Classic PR atrinik/classic#180 proved that the
v1.8.10 runtime correction reaches the repeat-reset assertion. The
remaining failure is a fixture precondition: the test player has only
one available quest point, and production correctly retains terminal
repeat state until another point is available.

The test now establishes and asserts available quest points, isolates
quest-point/player-level state, and restores every mutation with
`addCleanup`. Production quest behavior is unchanged.

This `fix` maintenance change must publish the next 1.8.x runtime so
Classic consumes the corrected fixture. It does not close
atrinik/atrinik#356 or atrinik/classic#169.
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.9.2 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

#170 and #171 are merged. This branch is rebased directly onto merged
#171 (`66a3f0c53`), so the PR now contains only its gameplay/server
changes. It contains no inherited #171 client/protocol files or
metaserver Worker files; the Worker implementation is owned by its
separate repository.

## Summary

- distribute kill XP across the skills that actually contributed damage,
while preserving party sharing, anti-kill-steal boundaries, XP caps, and
loot eligibility
- make trap finding/disarming probabilistic and anti-reroll, retain a
meaningful trip risk, increase direct trap damage, prevent
double-triggering reusable traps, and calculate trap XP like
level-relative kill XP
- send depletion as applied in its first item update and refresh
flags/tooltips immediately after death/stat drain
- recommend the implemented `remove depletion` spell in authored content
- ignore zero-value/non-progressive disease symptoms during symptom
reduction

Closes #121.
Closes #144.

## Validation

- full warning-as-error Linux client/server build after realignment
- all 25 CTest targets, including QUIC network integration and Python
plugin runtime
- focused attack, living, and rune regression suites
- narrow archetype collection confirming the corrected depletion tooltip
- targeted clang-tidy review, repository formatting, and `git diff
--check`
- audited the complete `master...HEAD` file list to confirm the
separately owned Worker implementation is absent

## Review attention

The branch includes bounded/tag-validated per-victim contribution state
and deterministic per-player/trap probability hashing. Live balance
attention should focus on mixed-skill boss fights, party members
changing maps at death, corpse-heavy level 10-30 areas, high-skill
disarmers, and reusable/multi-payload runes.
zoeyrose added a commit that referenced this pull request Aug 23, 2026
## Summary

- make the repeat-quest reset regression establish its
available-quest-point prerequisite
- isolate and restore player level plus quest-point state
- preserve production reset and cooldown behavior
- paired `1.x` companion: #173

## Validation

- `python3 -m compileall -q maps/python`
- `python3 tools/validate.py`
- `git diff --check`

## Program context

Classic PR atrinik/classic#180 proved that the
v1.8.10 runtime correction reaches the repeat-reset assertion. The
remaining failure is a fixture precondition: the test player has only
one available quest point, and production correctly retains terminal
repeat state until another point is available.

The test now establishes and asserts available quest points, isolates
quest-point/player-level state, and restores every mutation with
`addCleanup`. Production quest behavior is unchanged.

This PR does not close atrinik/atrinik#356 or atrinik/classic#169;
release and lock gates remain.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(release): keep Classic packages current with verified content@1.x releases

1 participant