Repository navigation
fix(quests): model repeat point restoration - #174
Merged
Merged
Conversation
This was referenced Aug 12, 2026
Closed
zoeyrose
added a commit
that referenced
this pull request
Aug 12, 2026
## Summary - remove the invalid player-level mutation from the repeat-reset regression - model elapsed quest-point restoration through the production quest-container clock - assert full restoration before verifying repeat-state reset - canonical `main` change: #174 ## Validation - `python3 -m compileall -q maps/python` - `python3 tools/validate.py` - `git diff --check` ## Program context Classic PR atrinik/classic#180 consumed v1.8.12 and proved that the prior fixture attempted to mutate player `level`, which the Classic Python API correctly exposes as read-only. This correction leaves player state untouched. It starts with all naturally available points, consumes the point through production `fail()`, advances the writable quest-container restoration clock by 20 hours, asserts full point restoration, and verifies that repeat-state reset then occurs. All mutated quest-container state is restored with `addCleanup`; production code is unchanged. This maintenance fix must publish a corrected 1.8.x runtime before Classic PR #180 can merge.
|
🎉 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
## Summary - remove the invalid player-level mutation from the repeat-reset regression - model elapsed quest-point restoration through the production quest-container clock - assert full restoration before verifying repeat-state reset - paired `1.x` companion: #175 ## Validation - `python3 -m compileall -q maps/python` - `python3 tools/validate.py` - `git diff --check` ## Program context Classic PR atrinik/classic#180 consumed v1.8.12 and proved that the prior fixture attempted to mutate player `level`, which the Classic Python API correctly exposes as read-only. This correction leaves player state untouched. It starts with all naturally available points, consumes the point through production `fail()`, advances the writable quest-container restoration clock by 20 hours, asserts full point restoration, and verifies that repeat-state reset then occurs. All mutated quest-container state is restored with `addCleanup`; production code is unchanged. This PR does not close atrinik/atrinik#356 or atrinik/classic#169.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
1.xcompanion: fix(quests): model repeat point restoration #175Validation
python3 -m compileall -q maps/pythonpython3 tools/validate.pygit diff --checkProgram context
Classic PR atrinik/classic#180 consumed v1.8.12 and proved that the prior fixture attempted to mutate player
level, which the Classic Python API correctly exposes as read-only.This correction leaves player state untouched. It starts with all naturally available points, consumes the point through production
fail(), advances the writable quest-container restoration clock by 20 hours, asserts full point restoration, and verifies that repeat-state reset then occurs. All mutated quest-container state is restored withaddCleanup; production code is unchanged.This PR does not close atrinik/atrinik#356 or atrinik/classic#169.