DOTAAbilities schema. Legends of Dota Redux uses two files to extend and override the base game’s ability data:
Both files live at
scripts/npc/ inside the addon directory.
npc_abilities_custom.txt
This file does not contain ability blocks directly. Instead, it is entirely composed of#base directives that include individual ability files:
#base-included file contains one or more ability definitions under the root DOTAAbilities block. This structure keeps individual abilities self-contained and easy to locate.
npc_abilities_override.txt
Similarly,npc_abilities_override.txt uses #base directives to include per-hero override files:
KV Ability Block Format
Every ability block lives inside aDOTAAbilities root key:
Common Fields
AbilityBehavior Flags
Multiple flags are combined with a space-separated list:
Real Example: ranged_punch
The following is the full definition forranged_punch, a custom Lua ability:
How the Lua file links
TheScriptFile path points to a Lua file at scripts/vscripts/abilities/ranged_punch.lua. That file defines a class that extends BaseAbility (or a Redux base class) and implements the ability logic:
AbilityValues sub-block is what GetSpecialValueFor("punch_damage") reads. Scepter/Shard upgrades, talent bonuses, and AoE increase flags are all handled through this values block.
Adding a New Custom Ability
- Create a new
.txtfile underscripts/npc/abilities/custom/my_ability.txtwith theDOTAAbilitiesblock. - Add a
#baseline tonpc_abilities_custom.txt: - Create the corresponding Lua script at
scripts/vscripts/abilities/my_ability.lua. - Add the ability name to
abilities.kvin the appropriate bracket. - Restart the server to pick up the new files.

