Skip to content

Condition Tracking & Display #103

Description

@FirebrickRed

Summary

Track and display D&D conditions on combatants. Provide turn-start reminders and condition lookup. For MVP, conditions are display-only (no mechanical enforcement - DM interprets effects).

Phase: Post-MVP Enhancement
Systems: Combat System, Condition System, Scoreboard

Prerequisites

Goals

  • Generic condition tracking (not hardcoded effects)
  • Conditions loaded from YAML (extensible)
  • Display conditions on scoreboard
  • Turn-start reminders with hover text
  • Condition lookup command
  • No mechanical enforcement for MVP (DM interprets)

Commands

# Add condition to combatant
/combat condition Alice add prone
> Alice is now Prone

# Remove condition
/combat condition Alice remove prone
> Alice is no longer Prone

# View conditions on target
/combat condition Alice
> Alice's conditions: Prone, Poisoned

# Look up condition rules
/condition prone
> **Prone**
> • A prone creature's only movement option is to crawl (half speed)
> • The creature has disadvantage on attack rolls
> • Attack rolls against the creature have advantage if within 5 feet
> • Attack rolls against the creature have disadvantage if more than 5 feet away
> • Standing up costs half your movement

YAML-Based Conditions

# plugins/jkvttplugin/DMContent/Conditions/conditions.yml
conditions:
  prone:
    name: "Prone"
    description: |
      A prone creature's only movement option is to crawl, 
      unless it stands up and thereby ends the condition.
    effects:
      - "Disadvantage on attack rolls"
      - "Melee attacks against have advantage"
      - "Ranged attacks against have disadvantage"
      - "Standing up costs half movement"
      
  poisoned:
    name: "Poisoned"
    description: "A poisoned creature has disadvantage on attack rolls and ability checks."
    effects:
      - "Disadvantage on attack rolls"
      - "Disadvantage on ability checks"
      
  stunned:
    name: "Stunned"
    description: "A stunned creature is incapacitated and can't move."
    effects:
      - "Incapacitated (can't take actions or reactions)"
      - "Can't move"
      - "Can speak only falteringly"
      - "Automatically fail STR and DEX saves"
      - "Attack rolls against have advantage"

Scoreboard Display

━━━ INITIATIVE ━━━
→ 19 Alice [Prone]
  15 Bob [Poisoned][Frightened]
  12 Goblin Chief
━━━━━━━━━━━━━━━━━━

Or with icons:

→ 19 Alice 🔻          ← Prone icon
  15 Bob 💀🏃          ← Poisoned, Frightened icons

Turn-Start Reminder

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
It's Alice's turn!
• 1 Action
• 1 Bonus Action
• 30 ft movement

⚠ Reminder: Alice is Prone
[HOVER: Disadvantage on attacks, stand up costs 15ft movement]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Duration Tracking (Future)

# Add condition with duration
/combat condition Alice add frightened --duration 3
> Alice is Frightened for 3 rounds

# Auto-removes after 3 rounds
> Alice is no longer Frightened (duration expired)

Standard D&D 5e Conditions

  • Blinded
  • Charmed
  • Deafened
  • Exhaustion (levels 1-6)
  • Frightened
  • Grappled
  • Incapacitated
  • Invisible
  • Paralyzed
  • Petrified
  • Poisoned
  • Prone
  • Restrained
  • Stunned
  • Unconscious

Future Mechanical Enforcement

// Future: Conditions affect rolls
if (attacker.hasCondition("prone")) {
    // Force disadvantage on attack
}

if (target.hasCondition("stunned")) {
    // Attacks against have advantage
    // Auto-fail STR/DEX saves
}

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    combatCombat, HP, initiative, damageenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions