Uh oh!
There was an error while loading. Please reload this page.
Run level-completion check when challenges are completed by admins - #408
Merged
Conversation
Normal completion via TryToComplete validated level completion after marking a challenge complete, but the admin command and admin GUI called setChallengeComplete directly, so a level whose last challenge was admin-completed never registered as complete. Fixes#385 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NKxodNE4h3TsSHMqDEeC8v
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 freeto 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.



Fixes#385
Problem
Normal completion (
TryToComplete) validates level completion after marking a challenge complete. The admin command (CompleteCommand) and the admin GUI (ListUsersPanel) calledsetChallengeCompletedirectly and skipped that check — so a level whose last challenge was admin-completed never registered as complete.Fix
Level-completion logic is extracted into
ChallengesManager:tryCompleteLevel(user, world, challenge)— validates (skips free/already-complete levels), marks complete, fires the normalLevelCompletedEvent; returns the level soTryToCompletecan keep handling rewards/messages/titles exactly as before.tryCompleteLevelAdmin(...)— same validation/marking but firesLevelCompletedEventwithadmin=true, mirroringsetLevelComplete's pattern.Both admin paths now call
tryCompleteLevelAdminafter marking the challenge complete.Design note: admin-driven level completion records state and fires the admin event but deliberately gives no level rewards or titles — consistent with admin challenge completion, which also gives no rewards, and safe for offline targets.
Tests
TryToCompleteTestupdated for the refactored path (57 tests). Full suite: 458 passed, 0 failures.In-game verification
/[admin] challenges complete <player> <challenge>./challengesas the player — the level should now show as completed (previously it stayed incomplete).🤖 Generated with Claude Code
https://claude.ai/code/session_01NKxodNE4h3TsSHMqDEeC8v