# wardool/dbm-way-of-elendil architecture

> Architecture diagram of the GitHub repository wardool/dbm-way-of-elendil, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wardool/dbm-way-of-elendil
- Repository: https://github.com/wardool/dbm-way-of-elendil

## Overview

DBM is a World of Warcraft 3.3.5a addon backport for Way Of Elendil. Its principal workflow is to observe game events during a raid or dungeon encounter, use encounter-specific modules to recognize mechanics, and present warnings and timers to players. The repository also includes settings and display modules, a configuration GUI, and a broad catalog of encounter packs. The README documents the backport and in-game configuration; source excerpts were unavailable, so internal call relationships are not verified and the graph shows only the product’s evident runtime roles.

Main entry points: [`DBM-Core/DBM-Core.lua`](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-Core.lua) (DBM core), [`DBM-Core/DBM-TimerTracker.lua`](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-TimerTracker.lua) (Timer display), [`DBM-Core/DBM-BossHealth.lua`](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-BossHealth.lua) (Boss health), [`DBM-Core/DBM-RangeCheck.lua`](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-RangeCheck.lua) (Range check)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Core runtime"]
  node_core_engine["DBM core<br/>[DBM-Core.lua]"]
  node_scheduler["Scheduler<br/>[Scheduler.lua]"]
  node_raid_comm["Raid communication<br/>[AceComm-3.0.lua]"]
end

subgraph group_encounters["Encounter coverage"]
  node_ancient_raids["Classic raid modules"]
  node_bc_raids["Burning Crusade raids"]
  node_wrath_raids["Wrath raids"]
  node_dungeons["Dungeon modules"]
  node_world_encounters["World encounters"]
end

subgraph group_presentation["Player interface"]
  node_timers["Timer display"]
  node_boss_health["Boss health<br/>[DBM-BossHealth.lua]"]
  node_range_check["Range check<br/>[DBM-RangeCheck.lua]"]
  node_arrows["Direction arrows<br/>[DBM-Arrow.lua]"]
end

subgraph group_configuration["Configuration"]
  node_gui["Settings GUI<br/>[DBM-GUI.lua]"]
  node_saved_settings[("Saved settings")]
end

node_player(("Player"))
node_game["WoW client"]

node_game -->|"provides events"| node_core_engine
node_ancient_raids -->|"register encounters"| node_core_engine
node_bc_raids -->|"register encounters"| node_core_engine
node_wrath_raids -->|"register encounters"| node_core_engine
node_dungeons -->|"register encounters"| node_core_engine
node_world_encounters -->|"register encounters"| node_core_engine
node_core_engine -->|"schedules timers"| node_scheduler
node_core_engine -->|"uses communication"| node_raid_comm
node_core_engine -->|"shows timers"| node_timers
node_core_engine -->|"updates display"| node_boss_health
node_core_engine -->|"provides checks"| node_range_check
node_core_engine -->|"controls arrows"| node_arrows
node_player -->|"configures"| node_gui
node_gui -->|"stores settings"| node_saved_settings
node_saved_settings -->|"supplies settings"| node_core_engine
node_timers -->|"displays timers"| node_player
node_boss_health -->|"displays health"| node_player
node_range_check -->|"shows range"| node_player
node_arrows -->|"guides movement"| node_player

click node_core_engine "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-Core.lua"
click node_scheduler "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/modules/Scheduler.lua"
click node_raid_comm "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/Libs/Ace3/AceComm-3.0/AceComm-3.0.lua"
click node_ancient_raids "https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-MC"
click node_bc_raids "https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Karazhan"
click node_wrath_raids "https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Icecrown"
click node_dungeons "https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Party-WotLK"
click node_world_encounters "https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Azeroth"
click node_timers "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-TimerTracker.lua"
click node_boss_health "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-BossHealth.lua"
click node_range_check "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-RangeCheck.lua"
click node_arrows "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-Arrow.lua"
click node_gui "https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-GUI/DBM-GUI.lua"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_core_engine,node_scheduler,node_raid_comm,node_game toneBlue
class node_ancient_raids,node_bc_raids,node_wrath_raids,node_dungeons,node_world_encounters toneAmber
class node_timers,node_boss_health,node_range_check,node_arrows toneMint
class node_gui,node_saved_settings toneRose
class node_player toneIndigo
```

## Components

### Core runtime

- [DBM core](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-Core.lua): `DBM-Core/DBM-Core.lua`
- [Scheduler](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/modules/Scheduler.lua): `DBM-Core/modules/Scheduler.lua`
- [Raid communication](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/Libs/Ace3/AceComm-3.0/AceComm-3.0.lua): `DBM-Core/Libs/Ace3/AceComm-3.0/AceComm-3.0.lua`

### Encounter coverage

- [Classic raid modules](https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-MC): `DBM-MC`
- [Burning Crusade raids](https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Karazhan): `DBM-Karazhan`
- [Wrath raids](https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Icecrown): `DBM-Icecrown`
- [Dungeon modules](https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Party-WotLK): `DBM-Party-WotLK`
- [World encounters](https://github.com/wardool/dbm-way-of-elendil/tree/main/DBM-Azeroth): `DBM-Azeroth`

### Player interface

- [Timer display](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-TimerTracker.lua): `DBM-Core/DBM-TimerTracker.lua`
- [Boss health](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-BossHealth.lua): `DBM-Core/DBM-BossHealth.lua`
- [Range check](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-RangeCheck.lua): `DBM-Core/DBM-RangeCheck.lua`
- [Direction arrows](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-Core/DBM-Arrow.lua): `DBM-Core/DBM-Arrow.lua`

### Configuration

- [Settings GUI](https://github.com/wardool/dbm-way-of-elendil/blob/main/DBM-GUI/DBM-GUI.lua): `DBM-GUI/DBM-GUI.lua`
- **Saved settings**

### Other components

- **Player**
- **WoW client**

## Connections

- WoW client → DBM core: provides events
- Classic raid modules → DBM core: register encounters
- Burning Crusade raids → DBM core: register encounters
- Wrath raids → DBM core: register encounters
- Dungeon modules → DBM core: register encounters
- World encounters → DBM core: register encounters
- DBM core → Scheduler: schedules timers
- DBM core → Raid communication: uses communication
- DBM core → Timer display: shows timers
- DBM core → Boss health: updates display
- DBM core → Range check: provides checks
- DBM core → Direction arrows: controls arrows
- Player → Settings GUI: configures
- Settings GUI → Saved settings: stores settings
- Saved settings → DBM core: supplies settings
- Timer display → Player: displays timers
- Boss health → Player: displays health
- Range check → Player: shows range
- Direction arrows → Player: guides movement
