How demonhero93/dndbalancer works
This is a D&D 5e combat-simulation package. The principal workflow begins in main.py, which delegates into the package and combat engine; combatants’ actions resolve attacks and apply rules to update combat state. The package also covers character/class features, spells, and monster-data parsing. Edges reflect imports and calls shown in the supplied excerpts or SOURCE INDEX; unsampled subsystems are represented where their paths are supported, but their internal wiring is not inferred.
Main entry points: attack.py Attack resolver · encounter.py Encounter loop · main.py Application entry · __init__.py Public package API
Components 20
Entry and reporting
- Application entry
main.py - Combat statistics
dnd_sim/engine/stats.py
Characters and actions
- Public package API
dnd_sim/__init__.py - Combatant model
dnd_sim/model/combatant.py - Action model
dnd_sim/model/actions.py - Attack definition
dnd_sim/model/attack.py
Combat resolution
- Encounter loop
dnd_sim/engine/combat/encounter.py - Attack resolver
dnd_sim/engine/combat/attack.py - Target selection
dnd_sim/core/targeting.py - Dice and randomness
dnd_sim/core/dice.py
Rules and features
- Condition state
dnd_sim/rules/conditions.py - Damage rules
dnd_sim/rules/damage.py - Saving throws
dnd_sim/rules/saves.py - Roll modifiers
dnd_sim/rules/roll_modifiers.py - Monster traits
dnd_sim/rules/traits/__init__.py - Spell rules
dnd_sim/rules/spells/actions.py - Class features
dnd_sim/rules/classes/barbarian/features.py
Monster data
- D&D API client
dnd_sim/data/api_client.py - Monster parsers
dnd_sim/data/condition_parser.py
Other components
- Simulator user
Connections 27
- Simulator user → Application entry: runs
main.py - Application entry → Public package API: imports API
main.py - Application entry → Combat statistics: uses statistics
main.py - Application entry → Class features: uses features
main.py - Public package API → Combatant model: exports model
dnd_sim/__init__.py - Public package API → Action model: exports actions
dnd_sim/__init__.py - Public package API → Attack definition: exports attacks
dnd_sim/__init__.py - Combatant model → Action model: builds actions
dnd_sim/model/combatant.py - Action model → Attack resolver: dispatches attack
dnd_sim/model/actions.py - Encounter loop → Action model: executes actions
dnd_sim/engine/combat/encounter.py - Encounter loop → Target selection: selects targets
dnd_sim/engine/combat/encounter.py - Attack resolver → Attack definition: resolves attack
dnd_sim/engine/combat/attack.py - Attack resolver → Combatant model: updates combatants
dnd_sim/engine/combat/attack.py - Attack resolver → Condition state: checks conditions
dnd_sim/engine/combat/attack.py - Attack resolver → Damage rules: applies damage
dnd_sim/engine/combat/attack.py - Attack resolver → Roll modifiers: gets modifiers
dnd_sim/engine/combat/attack.py - Attack resolver → Saving throws: resolves saves
dnd_sim/engine/combat/attack.py - Encounter loop → Condition state: advances conditions
dnd_sim/engine/combat/encounter.py - Encounter loop → Damage rules: applies effects
dnd_sim/engine/combat/encounter.py - Encounter loop → Monster traits: dispatches traits
dnd_sim/engine/combat/encounter.py - Encounter loop → Dice and randomness: uses randomness
dnd_sim/engine/combat/encounter.py - Spell rules → Condition state: applies conditions
dnd_sim/rules/spells/actions.py - Spell rules → Damage rules: applies damage
dnd_sim/rules/spells/actions.py - Spell rules → Target selection: selects targets
dnd_sim/rules/spells/actions.py - Monster parsers → Condition state: builds conditions
dnd_sim/data/condition_parser.py - Monster parsers → Saving throws: builds saves
dnd_sim/data/condition_parser.py - D&D API client → Monster parsers