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 typeBase unitRoot symbolsTransitive symbolsAudio filesSource files
Autumn Shyde120campaign/units/Autumn_Shyde.cfg
Elvish Champion KalianElvish Champion7812campaign/units/Kalian.cfg, core/units/elves/Champion.cfg
Familiar346campaign/units/Familiar.cfg
Jevyan10148campaign/units/Jevyan.cfg
Jevyan Cloaked120campaign/units/Jevyan_Cloaked.cfg
Noble Commander8914campaign/units/Noble_Commander.cfg
Noble Fighter6612campaign/units/Noble_Fighter.cfg
Noble Lord91114campaign/units/Noble_Lord.cfg
Noble Youth6612campaign/units/Noble_Youth.cfg
Vampire Lady7912campaign/units/Vampire_Lady.cfg
Warrior KingRoyal Warrior91117campaign/units/Warrior_King.cfg, core/units/humans/Royal_Warrior.cfg
Wesfolk Lady7810campaign/units/Wesfolk_Lady.cfg
Wesfolk Leader81010campaign/units/Wesfolk_Leader.cfg
Wesfolk Outcast7810campaign/units/Wesfolk_Outcast.cfg

Resolved macro files

Definition sourceSymbols reachedDefinitions
campaign/utils/trow-abilities.cfg1ABILITY_DISTRACT
core/macros/abilities.cfg2ABILITY_LEADERSHIP, ABILITY_SUBMERGE
core/macros/amla.cfg2AMLA_DEFAULT, AMLA_EFFECTS_HEAL_AND_RAISE_XP
core/macros/animation-utils.cfg8DEFENSE_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.cfg1LESS_NIMBLE_ELF
core/macros/sound-utils.cfg11SOUND: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.cfg4INTERNAL:SPECIAL_NOTES_DRAIN, INTERNAL:SPECIAL_NOTES_LEADERSHIP, INTERNAL:SPECIAL_NOTES_MAGICAL, INTERNAL:SPECIAL_NOTES_SUBMERGE
core/macros/weapon_specials.cfg2WEAPON_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