In a milestone campaign the GM marks a level as waiting, and the player levels up (#1007) #1019
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/l13-milestone-level-waiting"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #1007. The owner's answer to Q127 (L13), over the recommendation; recorded as D255.
This branch contains #1015's commits (
fix/l19-other-class-feats, #1008): both change Level up, so it was built on top. #1015's own run lost its backend job when the runner dropped it mid-run; the same code is tested here in full. Merging this brings #1008 in too.What changes
As built in lane 11, only a GM could level a character in a milestone campaign. Now:
How
character_sheets:level_waiting_to(the level handed over),level_waiting_at,level_waiting_by. The level is stored, so a mark only counts while it names the current level + 1: a level changed another way leaves it inert.c1007a1b2c3donb680d1e2f3a4; it also widens the notification kind check withlevel_waiting. Single head; up, down and up again tested.sheet_levelup.waiting()is true for XP at the threshold or a live mark in a milestone campaign, andwhy_not,can_level,level_why, the preview and apply all read it.PUT/DELETE /api/campaigns/{cid}/sheets/{sid}/level-waiting, GM only, idempotent, no sheet version.access.can_offer_leveltells the page when to draw the control (a GM who plays the character themselves has nobody to hand it to).Checked
coverage/lane*.pypasses; changelog and version checks pass.For whoever edits
webapp/CLAUDE.mdThe migration head is now
c1007a1b2c3d.🤖 Generated with Claude Code