Abilities Data Driven Examples
Jump to navigation
Jump to search
Included here are some examples using the data driven ability system.
AOE Damage Over Time
Here is an ability that waits for the owner to die. On death, a thinker is created with an acid pool visual effect and an aura modifier which reduces armor and applies a damage over time effect.
//=================================================================================================================
// Creature: Acid Spray
//=================================================================================================================
"creature_acid_spray"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE"
"AbilityUnitDamageType" "DAMAGE_TYPE_COMPOSITE"
"AbilityTextureName" "alchemist_acid_spray"
// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastPoint" "0.2"
"AbilityCastRange" "900"
"OnOwnerDied"
{
"CreateThinker"
{
"ModifierName" "creature_acid_spray_thinker"
"Target" "CASTER"
}
}
"Modifiers"
{
"creature_acid_spray_thinker"
{
"Aura" "create_acid_spray_armor_reduction_aura"
"Aura_Radius" "%radius"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL"
"Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
"Duration" "%duration"
"OnCreated"
{
"AttachEffect"
{
"EffectName" "alchemist_acid_spray"
"EffectAttachType" "follow_origin"
"Target" "TARGET"
"ControlPoints"
{
"00" "0 0 0"
"01" "%radius 1 1"
}
}
}
}
"create_acid_spray_armor_reduction_aura"
{
"IsDebuff" "1"
"IsPurgable" "0"
"EffectName" "alchemist_acid_spray_debuff"
"ThinkInterval" "%tick_rate"
"OnIntervalThink"
{
"Damage"
{
"Type" "DAMAGE_TYPE_COMPOSITE"
"Damage" "%damage"
"Target" "TARGET"
}
}
"Properties"
{
"MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction"
}
}
}
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"radius" "250"
}
"02"
{
"var_type" "FIELD_FLOAT"
"duration" "16.0"
}
"03"
{
"var_type" "FIELD_INTEGER"
"damage" "118 128 138 158"
}
"04"
{
"var_type" "FIELD_INTEGER"
"armor_reduction" "-3 -4 -5 -6"
}
"05"
{
"var_type" "FIELD_FLOAT"
"tick_rate" "1.0"
}
}
}
Orb Example
Causes an area of effect stun and damage.
"testOrb_Example"
{
"ID" "10003"
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST| DOTA_ABILITY_BEHAVIOR_ATTACK"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL"
"MaxLevel" "1"
"AbilityCastPoint" "0.0"
"AbilityCastRange" "900"
"AbilityCooldown" "0"
"AbilityManaCost" "10"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"RangeDamage" "75"
}
}
"Modifiers"
{
"TestOrb_Modifier"
{
"Passive" "1"
"IsHidden" "1"
"Orb"
{
"Priority" "DOTA_ORB_PRIORITY_ABILITY"
"ProjectileName" "particles/units/heroes/hero_sven/sven_spell_storm_bolt.vpcf"
"CastAttack" "1"
}
"OnOrbFire"
{
"SpendMana"
{
"Mana" "%AbilityManaCost"
}
}
"OnOrbImpact"
{
"FireEffect"
{
"EffectName" "particles/units/heroes/hero_sven/sven_spell_warcry.vpcf"
"EffectAttachType" "attach_hitloc"
"Target" "TARGET"
}
"Damage"
{
"Type" "DAMAGE_TYPE_PURE"
"Damage" "%RangeDamage"
"Target"
{
"Center" "TARGET"
"Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Type" "DOTA_UNIT_TARGET_ALL"
"Radius" "275"
}
}
"Stun"
{
"Duration" "2"
"Target"
{
"Center" "TARGET"
"Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Type" "DOTA_UNIT_TARGET_ALL"
"Radius" "275"
}
}
}
}
}
}
System's Aura Example
A Normally Aura Example
"TestSysAura"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL"
"AbilityTextureName" "alchemist_acid_spray"
"MaxLevel" "1"
"AbilityCastPoint" "0.0"
"AbilityCastRange" "500"
"AbilityCooldown" "0"
"AbilityManaCost" "0"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"Range" "500"
}
}
"Modifiers"
{
"TestSysAura_Modifier"
{
"Passive" "1"
"IsHidden" "1"
"Aura" "TestSysAura_FixAttackPercent"
"Aura_Radius" "%Range"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Aura_Types" "DOTA_UNIT_TARGET_ALL"
}
"TestSysAura_FixAttackPercent"
{
"IsDebuff" "1"
"IsPurgable" "0"
"Properties"
{
"MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "-50"
}
}
}
}
一个自定义的光环实例(A CustomAura Example)
Hope to get the translation 这个光环的效果和上面那个光环的效果一样。 但是通过这个我们可以在lua中得到光环的拥有者和作用单位。于是可以在lua里面对这些实体进行各种额外的操作。
//In Lua, we can get this entity
// AuraOwner -> EntIndexToHScript(keys.caster_entindex)
// AuraEffectUnit -> keys.target
"TestCustomAura"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL"
"AbilityTextureName" "alchemist_acid_spray"
"MaxLevel" "1"
"AbilityCastPoint" "0.0"
"AbilityCastRange" "500"
"AbilityCooldown" "0"
"AbilityManaCost" "0"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"Range" "500"
}
}
"Modifiers"
{
"TestCustomAura_Modifier"
{
"Passive" "1"
"IsHidden" "1"
"ThinkInterval" "0.5"
"OnIntervalThink"
{
"ApplyModifier"
{
"ModifierName" "TestCustomAura_FixAttackPercentIcon"
"Target"
{
"Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Types" "DOTA_UNIT_TARGET_ALL"
"Center" "CASTER"
"Radius" "%Range"
}
}
"ApplyModifier"
{
"ModifierName" "TestCustomAura_FixAttackPercentTimer"
"Target"
{
"Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"Types" "DOTA_UNIT_TARGET_ALL"
"Center" "CASTER"
"Radius" "%Range"
}
}
}
}
"TestCustomAura_FixAttackPercentIcon"
{
"IsDebuff" "1"
"IsPurgable" "0"
"TextureName" "alchemist_acid_spray"
"Properties"
{
"MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "-50"
}
}
"TestCustomAura_FixAttackPercentTimer"
{
"IsDebuff" "1"
"IsPurgable" "0"
"IsHidden" "1"
"Duration" "0.6"
"OnDestroy"
{
"RemoveModifier"
{
"ModifierName" "TestCustomAura_FixAttackPercentIcon"
"Target" "TARGET"
}
}
}
}
}