Overview
Implement conditions (Blinded, Charmed, Deafened, Frightened, Grappled, Incapacitated, Invisible, Paralyzed, Petrified, Poisoned, Prone, Restrained, Stunned, Unconscious) with both manual DM application and automatic spell/ability triggers.
Two Implementation Paths
Path 1: Manual DM Commands (Easier - Phase 1)
Commands for DMs to manually apply/remove conditions:
/condition apply <player> <condition> [duration]
/condition remove <player> <condition>
/condition list <player> - Show active conditions
/condition clear <player> - Remove all conditions
Examples:
/condition apply Alice frightened 3 - Apply frightened for 3 rounds
/condition apply Bob paralyzed - Apply paralyzed indefinitely
/condition remove Alice frightened
Path 2: Automatic Application (Harder - Phase 2)
Spells and abilities automatically apply conditions:
- Spell casting triggers condition application
- Racial abilities check for conditional advantages
- Combat system enforces condition effects
Examples:
- Casting Hold Person automatically applies paralyzed condition
- Racial trait "advantage vs frightened" checks if character has frightened condition
- Attacking paralyzed creature grants advantage automatically
Condition Effects to Track
Each condition has mechanical effects:
- Blinded: Disadvantage on attacks, attacks against have advantage
- Charmed: Can't attack charmer, charmer has advantage on social checks
- Frightened: Disadvantage on checks/attacks while source visible, can't move closer
- Paralyzed: Incapacitated, can't move/speak, fails STR/DEX saves, attacks have advantage, crits within 5ft
- Poisoned: Disadvantage on attacks and ability checks
- Etc.
Integration Points
- Racial traits use conditions (e.g., Brave: advantage vs frightened)
- Spell effects apply conditions (e.g., Hold Person: paralyzed)
- Combat system enforces condition effects (advantage/disadvantage)
- Character sheet displays active conditions
Data Model
public class Condition {
String type; // frightened, paralyzed, etc.
int duration; // -1 for indefinite, or number of rounds
String source; // spell name, ability name, or "DM"
UUID appliedBy; // UUID of caster/DM
}
// In CharacterSheet
private List<Condition> activeConditions = new ArrayList<>();
Related Issues
Acceptance Criteria
Phase 1 (Manual):
Phase 2 (Automatic):
Overview
Implement conditions (Blinded, Charmed, Deafened, Frightened, Grappled, Incapacitated, Invisible, Paralyzed, Petrified, Poisoned, Prone, Restrained, Stunned, Unconscious) with both manual DM application and automatic spell/ability triggers.
Two Implementation Paths
Path 1: Manual DM Commands (Easier - Phase 1)
Commands for DMs to manually apply/remove conditions:
/condition apply <player> <condition> [duration]/condition remove <player> <condition>/condition list <player>- Show active conditions/condition clear <player>- Remove all conditionsExamples:
/condition apply Alice frightened 3- Apply frightened for 3 rounds/condition apply Bob paralyzed- Apply paralyzed indefinitely/condition remove Alice frightenedPath 2: Automatic Application (Harder - Phase 2)
Spells and abilities automatically apply conditions:
Examples:
Condition Effects to Track
Each condition has mechanical effects:
Integration Points
Data Model
Related Issues
Acceptance Criteria
Phase 1 (Manual):
Phase 2 (Automatic):