Closure result
14campaign unit files
2inherited core base units
31resolved transitive macros
0unresolved symbols
45expanded audio filenames
25pinned source files
This is a bounded, reproducible source closure for the campaign-defined unit layer. It starts from every file in The_Rise_Of_Wesnoth/units, follows [base_unit] into the core Elvish Champion and Royal Warrior, then recursively follows every referenced macro until no unresolved symbols remain.
What “closure” means here. Every source-level macro used by these unit definitions is assigned to a concrete campaign or core file. It does not attempt to model engine C++ internals or every ordinary core unit recruited by scenarios.
Unit-by-unit closure
| Campaign type | Base unit | Root symbols | Transitive symbols | Audio files | Source files |
|---|---|---|---|---|---|
Autumn Shyde | — | 1 | 2 | 0 | campaign/units/Autumn_Shyde.cfg |
Elvish Champion Kalian | Elvish Champion | 7 | 8 | 12 | campaign/units/Kalian.cfg, core/units/elves/Champion.cfg |
Familiar | — | 3 | 4 | 6 | campaign/units/Familiar.cfg |
Jevyan | — | 10 | 14 | 8 | campaign/units/Jevyan.cfg |
Jevyan Cloaked | — | 1 | 2 | 0 | campaign/units/Jevyan_Cloaked.cfg |
Noble Commander | — | 8 | 9 | 14 | campaign/units/Noble_Commander.cfg |
Noble Fighter | — | 6 | 6 | 12 | campaign/units/Noble_Fighter.cfg |
Noble Lord | — | 9 | 11 | 14 | campaign/units/Noble_Lord.cfg |
Noble Youth | — | 6 | 6 | 12 | campaign/units/Noble_Youth.cfg |
Vampire Lady | — | 7 | 9 | 12 | campaign/units/Vampire_Lady.cfg |
Warrior King | Royal Warrior | 9 | 11 | 17 | campaign/units/Warrior_King.cfg, core/units/humans/Royal_Warrior.cfg |
Wesfolk Lady | — | 7 | 8 | 10 | campaign/units/Wesfolk_Lady.cfg |
Wesfolk Leader | — | 8 | 10 | 10 | campaign/units/Wesfolk_Leader.cfg |
Wesfolk Outcast | — | 7 | 8 | 10 | campaign/units/Wesfolk_Outcast.cfg |
Resolved macro files
| Definition source | Symbols reached | Definitions |
|---|---|---|
campaign/utils/trow-abilities.cfg | 1 | ABILITY_DISTRACT |
core/macros/abilities.cfg | 2 | ABILITY_LEADERSHIP, ABILITY_SUBMERGE |
core/macros/amla.cfg | 2 | AMLA_DEFAULT, AMLA_EFFECTS_HEAL_AND_RAISE_XP |
core/macros/animation-utils.cfg | 8 | DEFENSE_ANIM, DEFENSE_ANIM_FILTERED, DEFENSE_ANIM_RANGE, LEADING_ANIM, MISSILE_FRAME_CHILL_TEMPEST, MISSILE_FRAME_SHADOW_WAVE, MISSILE_FRAME_STONE_HIT, MISSILE_FRAME_STONE_MISS |
core/macros/movetypes.cfg | 1 | LESS_NIMBLE_ELF |
core/macros/sound-utils.cfg | 11 | SOUND:HIT_AND_MISS, SOUND_LIST:ELF_HIT, SOUND_LIST:HUMAN_DIE, SOUND_LIST:HUMAN_FEMALE_DIE, SOUND_LIST:HUMAN_FEMALE_HIT, SOUND_LIST:HUMAN_HIT, SOUND_LIST:HUMAN_OLD_DIE, SOUND_LIST:HUMAN_OLD_HIT, SOUND_LIST:LICH_HIT, SOUND_LIST:MISS, SOUND_LIST:SWORD_SWISH |
core/macros/special-notes.cfg | 4 | INTERNAL:SPECIAL_NOTES_DRAIN, INTERNAL:SPECIAL_NOTES_LEADERSHIP, INTERNAL:SPECIAL_NOTES_MAGICAL, INTERNAL:SPECIAL_NOTES_SUBMERGE |
core/macros/weapon_specials.cfg | 2 | WEAPON_SPECIAL_DRAIN, WEAPON_SPECIAL_MAGICAL |
Wrapper dependency chains
Elvish Champion Kalian
└── [base_unit] Elvish Champion
├── LESS_NIMBLE_ELF
├── AMLA_DEFAULT → AMLA_EFFECTS_HEAL_AND_RAISE_XP
├── DEFENSE_ANIM_RANGE
├── SOUND:HIT_AND_MISS
└── ELF_HIT / SWORD_SWISH / MISS sound lists
Warrior King
└── [base_unit] Royal Warrior
├── DEFENSE_ANIM
├── LEADING_ANIM
├── AMLA_DEFAULT
├── SOUND:HIT_AND_MISS
└── HUMAN_HIT / HUMAN_DIE sound lists
+ campaign additions
├── ABILITY_LEADERSHIP
├── HUMAN_OLD_HIT
└── HUMAN_OLD_DIE
Reproducibility
The machine-readable result is bundled at assets/unit-core-closure.json. The archive also includes tools/trow_unit_dependency_audit.py, which regenerates the closure from any local Wesnoth checkout.
python3 tools/trow_unit_dependency_audit.py --wesnoth-root /path/to/wesnoth --output /tmp/trow-unit-closure.json --strict
Campaign unit directory · Elvish Champion · Royal Warrior · Core sound macros