Skip to content

Interrupted Rest System #43

Description

@FirebrickRed

Priority: MEDIUM
Status: TODO
Depends on: #41 (Rest Commands), #42 (Party Targeting)

Description

Allow DMs to control when rest benefits are granted, supporting interrupted/resumed rests at DM discretion.

Use Case

  1. DM: "You settle in for a long rest" → /startrest knights_of_mortimer long
  2. Players RP, use abilities (no rest benefits yet)
  3. DM: "3 hours in, goblins attack!" → Combat happens
  4. DM: "You defeat them and resume resting" → /completerest knights_of_mortimer
  5. Players receive long rest benefits

Commands

  • /startrest <player/party...> <short|long> - Mark as resting (no benefits)
  • /completerest <player/party...> - Grant rest benefits based on stored state
  • /cancelrest <player/party...> - Cancel rest without benefits

Command Examples

/startrest knights_of_mortimer long
/startrest charlie astra short
/completerest knights_of_mortimer
/cancelrest charlie

Acceptance Criteria

  • /startrest marks players/parties as resting
  • /completerest grants benefits based on stored rest type
  • /cancelrest clears state without granting benefits
  • Display messages to affected players
  • Players can still use abilities while in "resting" state
  • Support both individual players and parties
  • Show who is currently resting: /rest status

State Tracking

  • Add restingState field to CharacterSheet: null | "short" | "long"
  • /startrest sets the state
  • /completerest calls shortRest() or longRest() based on state, then clears it
  • /cancelrest clears state without calling rest methods
  • Players can freely use abilities/resources while in "resting" state

Feedback Messages

/startrest knights_of_mortimer long
→ "Knights of Mortimer begin a long rest..."

/completerest knights_of_mortimer
→ To players: "Long rest completed! [Resources restored...]"

/cancelrest knights_of_mortimer  
→ To players: "Rest interrupted! No benefits gained."

Benefits

  • DM controls timing at their discretion (no timers needed!)
  • Handles ambushes, interruptions, narrative events
  • Simple implementation - just state tracking
  • No complex timer/scheduling system required

Optional Features (Future)

  • /rest status - Show who is currently resting
  • Track rest start time for flavor text ("Rested for 3 hours before interruption")
  • Integration with Issue Time Progression Commands #44 time progression

Technical Notes

  • Add RestingState enum: NONE, SHORT_REST, LONG_REST
  • Add field to CharacterSheet: private RestingState restingState = RestingState.NONE;
  • /startrest only sets state, doesn't grant benefits
  • /completerest executes rest logic from Implement class resource system #25

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    rest-systemRest mechanics (short/long rest)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions