Zh/Dota 2 Workshop Tools/Scripting/Abilities Data Driven

__TOC__
几乎所有在DOTA2中的技能都是使用C++来编写的，当查看所有这些技能的时候，npc_abilities.txt包含了一些技能元数据的KV(Key-Values)文件，暴露出了一些技能的键值，这里包含了几乎所有的元数据，使用数据驱动类技能系统能够为DOTA2创造一些自定义技能，能够为他们赋予特殊的数值和特定的触发事件。
== 一个简单的例子 ==
这是一个非常简单的技能，他是一个被动技能，给单位添加了一个粒子特效。
"fx_test_ability"
{
 // General
 //-------------------------------------------------------------------------------------------------------------
 "BaseClass" "ability_datadriven"
 "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
 "AbilityTextureName" "axe_battle_hunger"
 // Modifiers
 //-------------------------------------------------------------------------------------------------------------
 "Modifiers"
 {
 "fx_test_modifier"
 {
 "Passive" "1"
 "OnCreated"
 {
 "AttachEffect"
 {
 "Target" "CASTER"
 "EffectName" "particles/econ/generic/generic_buff_1/generic_buff_1.vpcf"
 "EffectAttachType" "follow_overhead"
 "EffectLifeDurationScale" "1"
 "EffectColorA" "255 255 0"
 }
 }
 }
 }
}
其中，基类("BaseClass"),技能行为("AbilityBehavior")和技能图标名称("AbilityTextureName")在所有技能中都是类似的。
=== 范例分解 ===
*"BaseClass" (基类)
:一般来说，DOTA通过技能的名字（在这里是"fx_test_ability"）来将技能连接到C++中对应的类，如果你想让DOTA强制使用不同的C++类，这个基类（"BaseClass"）键将能完成这项工作 - 我们在这个技能中将基类定义为 ability_datadriven，来将技能连接到数据驱动技能类，将技能连接到其他已经存在的技能，通过修改KV（KeyValues）来重新定义他们的变量是可行的。
*"AbilityBehavior" (技能行为)
:技能行为通过一系列的常量来定义这个技能的属性，你能够使用|来分割不同的常量，比如说 "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" - 这些空格是很重要的！
:在下面 技能行为 可以查看全部类型。
*"ID"
:ID是用来给跟踪技能状态的一个特定数值，在数据驱动类技能中不需要使用这个。
*"AbilityTextureName" (技能图标名称)
:是指在UI中显示的技能图标，你可以放一个其他技能的技能名称在此处来使用它。（或者你也可以引用 reource\flash3\images\spellicons文件夹中的.png文件名来定义自定义的图标 - 译者注）
*"Modifiers"
:是只有data-driven类技能才能使用的，这个区域定义了一系列的Modifiers（一般可以认为是Buff或者DeBuff），每个Modifier通过在其中定义的KV(KeyValues)来定义。
*"Passive" (被动)
:在Modifier中的被动字段，定义这个Modifier在这个技能被学习之后，将能自动施加给目标。
*"OnCreated" (当创建时)
:是一个出发区域，当这个Modifier被第一次施加给这个单位的时候会被触发，在本例中，我们在触发之后给施法者施加了一个粒子特效。
== 技能行为 ==
"AbilityBehavior" (技能行为) 的全部类型，会使技能有不用的释放方式。你能够使用|来分割不同的常量，比如说 "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" - 这些空格是很重要的！
DOTA_ABILITY_BEHAVIOR_HIDDEN = 1 << 0, //这个技能是单位所拥有的技能，但是不会在HUD上显示。
DOTA_ABILITY_BEHAVIOR_PASSIVE = 1 << 1, //这个技能是一个被动技能，不能被使用，但是会在HUD上显示。
DOTA_ABILITY_BEHAVIOR_NO_TARGET = 1 << 2, //不需要指定目标就能释放的技能，当按下技能按钮的时候，这个技能就会被释放。
DOTA_ABILITY_BEHAVIOR_UNIT_TARGET = 1 << 3, //技能需要指定一个目标来释放。
DOTA_ABILITY_BEHAVIOR_POINT = 1 << 4, //技能将会在鼠标指定的位置释放（如果鼠标指向了一个单位，会在单位所在的位置释放）。
DOTA_ABILITY_BEHAVIOR_AOE = 1 << 5, //这个技能将会显示技能释放的范围，有点像DOTA_ABILITY_BEHAVIOR_POINT类的技能，但是会显示一个范围。
DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE = 1 << 6, //这个技能将能被释放，或者拥有对应的释放机制，但是不能被学习。（一般是用在类似炸弹人的引爆炸弹技能）。
DOTA_ABILITY_BEHAVIOR_CHANNELLED = 1 << 7, //持续性施法技能，如果施法者移动或者被沉默，这个技能将会被中断。
DOTA_ABILITY_BEHAVIOR_ITEM = 1 << 8, //这个技能绑定了一个物品。
DOTA_ABILITY_BEHAVIOR_TOGGLE = 1 << 9, //切换类技能。
DOTA_ABILITY_BEHAVIOR_DIRECTIONAL = 1 << 10, //这个技能是一个从英雄出发的方向性技能，比如米拉娜的月之神剑或者屠夫的肉钩。
DOTA_ABILITY_BEHAVIOR_IMMEDIATE = 1 << 11, //这个技能将会被立即释放，不会进入操作序列。
DOTA_ABILITY_BEHAVIOR_AUTOCAST = 1 << 12, //这个技能可以被自动释放。
DOTA_ABILITY_BEHAVIOR_NOASSIST = 1 << 13, //这个技能将不会有辅助网格。
DOTA_ABILITY_BEHAVIOR_AURA = 1 << 14, //这个技能是一个光环技能，Not really used other than to tag the ability as such.
DOTA_ABILITY_BEHAVIOR_ATTACK = 1 << 15, //这个技能是一个法球技能，不能对魔法免疫目标生效，
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT = 1 << 16, //这个技能在释放完成之后不会继续之前的移动操作，只能和无目标或者立即释放类技能配合使用。
DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES = 1 << 17, //这个技能在单位被定身的时候无法使用。
DOTA_ABILITY_BEHAVIOR_UNRESTRICTED = 1 << 18, //这个技能在释放指令被限制的时候也能被使用。
DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE = 1 << 19, //这个技能在被眩晕，施法和被强制攻击的时候也能使用，只能和自动释放类DOTA_ABILITY_BEHAVIOR_AUTOCAST配合使用。
DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL = 1 << 20, //这个技能即使施法被中断也能继续释放。
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Doesn't cause certain modifiers to end, 目前未知，只在信使的速度爆发有见到。
DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET = 1 << 22, //这个技能在指定敌人释放的时候将不会惊醒他们。
DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK = 1 << 23, //这个技能在释放完成之后，将不会恢复对之前目标的自动攻击，只能配合无目标，非立即释放类和指定单位目标类技能使用。
DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN = 1 << 24, //这个技能在被偷取之后，依然使用之前的施法前摇。
DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING = 1 << 25, //这个技能将会无视施法后摇。
DOTA_ABILITY_BEHAVIOR_RUNE_TARGET = 1 << 26, //这个技能能以神符为目标。
== 技能触发事件和操作 ==
技能可以有各种游戏中的事件，这些事件可以触发操作。
一个关于事件和操作的范例。在这个范例中，当你开始释放技能，就会在施法者上播放音效。
"OnSpellStart" // 事件
{
 "FireSound" // 操作
 {
 "EffectName" "SoundEventName"
 "Target" "CASTER"
 }
}
=== 事件 ===
引擎为技能提供了一系列触发事件，这些事件将能够在技能中触发：
触发事件名称 	描述
OnChannelFinish 	当持续性施法完成
OnChannelInterrupted	当持续性施法被中断
OnChannelSucceeded 	当持续性施法成功
OnOwnerDied 	当拥有者死亡
OnOwnerSpawned 	当拥有者出生
OnProjectileFinish 	当弹道粒子特效结束
OnProjectileHitUnit 	当弹道粒子特效命中单位
OnSpellStart 	当技能施法开始
OnToggleOff 	当切换为关闭状态
OnToggleOn 	当切换为开启状态
OnUpgrade 	当升级
=== 操作 ===
以下是你在技能中能够使用操作中的一些Key：
操作名称 	操作可用参数
AddAbility 	Target, AbilityName
添加技能 	目标，技能名称
 	
ActOnTargets 	Target, Action
使目标模型做出某个动作 	目标，动作名称
 	
ApplyModifier 	Target, ModifierName
应用Modifier 	目标，Modifier名称
 	
AttachEffect 	EffectName, EffectAttachType, Target, ControlPoints, EffectColorA, EffectColorB, EffectAlphaScale
附着点特效 	特效名称，特效附着点类型，目标，控制点，特效颜色A，特效颜色B，特效不透明度比例
 	
Blink 	Target
闪烁 	目标
 	
CleaveAttack 	CleavePercent, CleaveRadius
范围攻击 	分裂伤害，分裂范围
 	
CreateThinker 	Target, ModifierName
创建Thinker(定时器) 	目标，Modifier名称
 	
Damage 	Target, Type, MinDamage/MaxDamage, Damage, CurrentHealthPercentBasedDamage, MaxHealthPercentBasedDamage
伤害 	目标，伤害类型，最小/最大伤害值，伤害值，基于当前生命百分比伤害，基于最大生命百分比伤害
 	
DelayedAction 	Delay, Action
延迟操作 	延迟时间，操作
 	
DestroyTrees 	Target, Radius
摧毁树木 	目标，范围
 	
FireEffect 	EffectName, EffectAttachType, Target, ControlPoints, TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale, EffectColorA, EffectColorB
播放特效 	特效名称，特效附着点类型，目标，控制点，目标点，特效范围，特效播放时间比例，特效存活时间比例，特效颜色A，特效颜色B
 	
FireSound 	EffectName, Target
播放声音 	音效名称，目标
 	
Heal 	HealAmount, Target
治愈 	治疗量，目标
 	
Knockback 	Target, Center, Duration, Distance, Height, IsFixedDistance, ShouldStun
击退 	目标，中心，持续时间，距离，高度，固定距离，是否眩晕
 	
LevelUpAbility 	Target, AbilityName
升级技能 	目标，技能名称
 	
Lifesteal 	Target, LifestealPercent
吸血 	目标，吸血百分比
 	
LinearProjectile 	Target, EffectName, MoveSpeed, StartRadius, EndRadius, FixedDistance, StartPosition, TargetTeams, TargetTypes, TargetFlags, HasFrontalCone, ProvidesVision, VisionRadius
线性投射物 	目标，特效名称，移动速度，开始范围，结束范围，固定距离，开始位置，目标队伍，目标类型，目标状态，HasFrontalCone，提供视野，视野范围
 	
Random 	Chance, PseudoRandom, OnSuccess, OnFailure
几率 	概率，伪随机，成功时，失败时
 	
RemoveAbility 	Target, AbilityName
移除技能 	目标，技能名称
 	
RemoveModifier 	Target, ModifierName
移除Modifier 	目标，Modifier名称
 	
RunScript 	Target, ScriptFile, Function
运行脚本 	目标，脚本文件，运行函数
 	
SpawnUnit 	UnitName, UnitCount, UnitLimit, SpawnRadius, Duration, Target, GrantsGold, GrantsXP
生产单位 	单位名称，单位数量，单位上限，生产范围，持续时间，目标，死亡金钱量，死亡经验量
 	
Stun 	Target, Duration
击晕 	目标，持续时间
 	
TrackingProjectile 	Target, EffectName, Dodgeable, ProvidesVision, VisionRadius, MoveSpeed, SourceAttachment
跟踪投射物 	目标，特效名称，是否可闪避，提供视野，视野范围，移动速度，起源附着点
== 操作目标 ==
在操作之前，首先应该选中目标(Target)。以下有几种选择方式。
=== 单体目标 ===
小范例：
"Target" "CASTER"
单体目标有以下这些值：
名称 	描述
CASTER 	施法者
TARGET 	目标
POINT 	点
ATTACKER	攻击者
UNIT 	单位
在页面最上例子中，就是用"Target(目标)" "CASTER(施法者)"，在施法者身上制造些特效。
=== 多个目标 ===
小范例：
"Target"
{
 "Center" "POINT"
 "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY"
 "Radius" "300"
}
想要在某个区域里选中多个目标，就需要在 Target代码块 中填入下面的参数：
* Center - 以目标为搜索范围的中心
中心目标 	描述
CASTER 	施法者
TARGET 	目标
POINT 	点
ATTACKER 	攻击者
UNIT 	单位
PROJECTILE	抛射物
* Radius - 搜索目标的范围
: [整数值]
* Teams - 根据队伍筛选目标（一样可以用 | 来指定多种类型）
目标队伍 	描述
DOTA_UNIT_TARGET_TEAM_BOTH 	双方队伍
DOTA_UNIT_TARGET_TEAM_CUSTOM 	普通队伍
DOTA_UNIT_TARGET_TEAM_ENEMY 	敌方队伍
DOTA_UNIT_TARGET_TEAM_FRIENDLY	友方队伍
DOTA_UNIT_TARGET_TEAM_NONE 	无
* Types - 指定的类型，ExcludeTypes - 排除对应的类型 （一样可以用 | 来指定多种类型）
类型 	描述
DOTA_UNIT_TARGET_ALL 	所有
DOTA_UNIT_TARGET_BASIC 	基本
DOTA_UNIT_TARGET_BUILDING 	建筑
DOTA_UNIT_TARGET_COURIER 	信使
DOTA_UNIT_TARGET_CREEP 	野怪
DOTA_UNIT_TARGET_CUSTOM 	普通
DOTA_UNIT_TARGET_HERO 	英雄
DOTA_UNIT_TARGET_MECHANICAL	机械
DOTA_UNIT_TARGET_NONE 	无
DOTA_UNIT_TARGET_OTHER 	其他
DOTA_UNIT_TARGET_TREE 	树木
* Flags - 指定目标的状态，ExcludeFlags - 排除对应状态的目标 （一样可以用 | 来指定多种类型）
名称 	描述
DOTA_UNIT_TARGET_FLAG_CHECK_DISABLE_HELP 	检测玩家"禁用帮助"选项
DOTA_UNIT_TARGET_FLAG_DEAD 	已死亡
DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE 	*暂无说明*
DOTA_UNIT_TARGET_FLAG_INVULNERABLE 	无敌
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES 	魔法免疫的敌人
DOTA_UNIT_TARGET_FLAG_MANA_ONLY 	*暂无说明*
DOTA_UNIT_TARGET_FLAG_MELEE_ONLY 	*暂无说明*
DOTA_UNIT_TARGET_FLAG_NO_INVIS 	不是隐形的
DOTA_UNIT_TARGET_FLAG_NONE 	无
DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS 	不是远古
DOTA_UNIT_TARGET_FLAG_NOT_ATTACK_IMMUNE 	不是攻击免疫
DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO 	不是野怪
DOTA_UNIT_TARGET_FLAG_NOT_DOMINATED 	不可控制的
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS 	不是幻象
DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES	不是魔法免疫的盟友
DOTA_UNIT_TARGET_FLAG_NOT_NIGHTMARED 	非被催眠的
DOTA_UNIT_TARGET_FLAG_NOT_SUMMONED 	非召唤的
DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD 	被放逐出世界的
DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED 	玩家控制的
DOTA_UNIT_TARGET_FLAG_RANGED_ONLY 	范围唯一的
* MaxTargets - 最多目标数量
: [整数值]
* Random - 在指定了最多目标数量之后，是否额外随机多选择一个单位。
: [布尔值]
* ScriptSelectPoints - *暂无说明*
: ScriptFile, Function, Radius, Count
== Modifiers ==
是只有data-driven类技能才能使用的，这个区域定义了一系列的Modifiers（一般可以认为是Buff或者DeBuff），每个Modifier通过在其中定义的KV(KeyValues)来定义。
参数有以下：
名称 	可用参数
Attributes 	MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE, MODIFIER_ATTRIBUTE_MULTIPLE, MODIFIER_ATTRIBUTE_NONE, MODIFIER_ATTRIBUTE_PERMANENT
属性 	忽视无敌，可叠加，无，正常
 	
Duration 	FloatValue
持续时间 	浮点值
 	
EffectAttachType 	follow_origin, follow_overhead, follow_chest, follow_head, start_at_customorigin, world_origin
特效附着点类型 	原点，头顶，胸膛，头部，自定义原点，世界原点
 	
EffectName 	StringValue
特效名称 	字符串(路径+特效名)
 	
IsBuff 	BooleanValue
是否增益魔法 	布尔值（1为增益魔法）
 	
IsDebuff 	BooleanValue
是否减益魔法 	布尔值（1为减益魔法）
 	
IsHidden 	BooleanValue
是否隐藏 	布尔值（1为隐藏）
 	
IsPurgable 	BooleanValue
能否被驱散 	布尔值（1为可被驱散）
 	
OverrideAnimation	ACT_DOTA_ATTACK, ACT_DOTA_CAST_ABILITY_1 (2, 3, 4, 5, 6), ACT_DOTA_DISABLED, ACT_DOTA_SPAWN, ACT_DOTA_TELEPORT, ACT_DOTA_VICTORY
覆盖模型动作 	攻击动作，技能释放动作(1~6)，受伤动作，出生动作，回程动作，胜利动作
 	
Passive 	BooleanValue
被动 	布尔值（1为被动技能，会自动添加该Modifiers）
 	
TextureName 	StringValue
图标名称 	字符串
 	
ThinkInterval 	FloatValue
Think间隔 	浮点值
 	
== Modifier 属性 ==
Modifier属性能够改变对应Modifier影响的单位的游戏相关数值，以下示例定义的是一个降低目标攻击和移动速度的modifier（写在技能的Modifiers区域内），对于数值，你可以直接在区域直接写入数值，也可以使用 %name 来引用 AbilitySpecial区域内定义的数值，使用%name的好处是你能够针对不同的技能等级定义不同的数值，也可以在技能的说明中直接引用这个数值，在本示例中，Modifier的持续时间（"Duration"）引用了AbilitySpecial中的数值，减速的数值是直接写的数字。
"creature_slithereen_crush_slow"
{
 "Duration" "%slow_duration"
 "Properties"
 {
 "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-20"
 "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "-20"
 }
}
=== Modifier 属性列表 ===
名称 	描述
MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL 	所有魔法攻击无效
MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL 	所有物理攻击无效
MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE 	所有神圣伤害无效
MODIFIER_PROPERTY_ABSORB_SPELL 	偷取法术？
MODIFIER_PROPERTY_ATTACK_RANGE_BONUS 	修改攻击范围
MODIFIER_PROPERTY_ATTACK_RANGE_BONUS_UNIQUE 	攻击距离增益（不叠加）
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT 	修改攻击速度
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_POWER_TREADS 	*暂无说明*
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_SECONDARY 	*暂无说明*
MODIFIER_PROPERTY_AVOID_CONSTANT 	虚空假面的闪避？
MODIFIER_PROPERTY_AVOID_SPELL 	虚空假面的法术闪避？
MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE 	修改基础攻击力
MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT 	设定基础攻击间隔
MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE 	修改基础攻击伤害
MODIFIER_PROPERTY_BASE_MANA_REGEN 	修改基础魔法回复数值，对百分比回魔有影响
MODIFIER_PROPERTY_BONUS_DAY_VISION 	修改白天的视野距离
MODIFIER_PROPERTY_BONUS_NIGHT_VISION 	修改夜间的视野距离
MODIFIER_PROPERTY_BONUS_VISION_PERCENTAGE 	按百分比修改视野距离
MODIFIER_PROPERTY_CAST_RANGE_BONUS 	施法距离增益
MODIFIER_PROPERTY_CHANGE_ABILITY_VALUE 	改变技能数值
MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE_STACKING 	冷却时间百分比堆叠
MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT 	减少冷却时间
MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE 	按百分比修改攻击力，负数降低攻击，正数提高攻击
MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION 	降低幻象攻击力比例
MODIFIER_PROPERTY_DEATHGOLDCOST 	修改死亡损失的金钱
MODIFIER_PROPERTY_DISABLE_AUTOATTACK 	禁止自动攻击
MODIFIER_PROPERTY_DISABLE_HEALING 	禁止生命回复(1为禁止)
MODIFIER_PROPERTY_DISABLE_TURNING 	禁止转身
MODIFIER_PROPERTY_EVASION_CONSTANT 	闪避
MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS 	*无效*额外生命值加成
MODIFIER_PROPERTY_EXTRA_MANA_BONUS 	*无效*额外魔法值加成
MODIFIER_PROPERTY_EXTRA_STRENGTH_BONUS 	*无效*额外力量加成
MODIFIER_PROPERTY_FORCE_DRAW_MINIMAP 	*暂无说明*
MODIFIER_PROPERTY_HEALTH_BONUS 	修改目前血量
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT 	固定的生命回复数值
MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE 	根据装备带来的最大血量所产生的血量回复数值
MODIFIER_PROPERTY_IGNORE_CAST_ANGLE 	忽略施法角度
MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE 	按百分比修改受到的所有伤害，负数降低伤害，正数加深伤害
MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_CONSTANT 	所受物理伤害数值（数值物理伤害减免/增加）
MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_PERCENTAGE 	按百分比修改受到的物理伤害，负数降低伤害，正数加深伤害
MODIFIER_PROPERTY_INCOMING_SPELL_DAMAGE_CONSTANT 	按百分比修改受到的技能伤害，负数降低伤害，正数加深伤害
MODIFIER_PROPERTY_INVISIBILITY_LEVEL 	隐身等级？
MODIFIER_PROPERTY_IS_ILLUSION 	是否为某个单位的幻象
MODIFIER_PROPERTY_IS_SCEPTER 	是否携带蓝杖？
MODIFIER_PROPERTY_LIFETIME_FRACTION 	*暂无说明*
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS 	魔法抗性，对神圣伤害无效，可以累加
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE 	骨法的衰老，影响魔法抗性，不可累加
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_ITEM_UNIQUE 	魔法抗性，对神圣伤害无效，不可以累加
MODIFIER_PROPERTY_MAGICDAMAGEOUTGOING_PERCENTAGE 	魔法输出百分比（百分比法伤增益/减益）
MODIFIER_PROPERTY_MANA_BONUS 	修改目前魔法量
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT 	修改基础魔法回复数值，对百分比回魔没有影响
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT_UNIQUE 	修改基础魔法回复数值，对百分比回魔没有影响，且 不可累积
MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE 	修改基础魔法回复数值
MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE 	修改所有魔法回复数值
MODIFIER_PROPERTY_MAX_ATTACK_RANGE 	最大攻击距离增益
MODIFIER_PROPERTY_MIN_HEALTH 	血量在设定值以下是不能杀死（斧王的斩杀依然有效）
MODIFIER_PROPERTY_MISS_PERCENTAGE 	增加miss的几率
MODIFIER_PROPERTY_MODEL_CHANGE 	设定模型
MODIFIER_PROPERTY_MODEL_SCALE 	设定模型大小
MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE 	设置移动速度
MODIFIER_PROPERTY_MOVESPEED_BASE_OVERRIDE 	设定基础移动速度
MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT 	增加移动速度数值
MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE 	百分比增加移动速度，自身不叠加
MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE 	独立百分比增加移动速度，不叠加
MODIFIER_PROPERTY_MOVESPEED_BONUS_UNIQUE 	增加移动速度数值，不叠加，物品版本
MODIFIER_PROPERTY_MOVESPEED_LIMIT 	限制移动速度
MODIFIER_PROPERTY_MOVESPEED_MAX 	设置最大移动速度
MODIFIER_PROPERTY_NEGATIVE_EVASION_CONSTANT 	降低闪避概率
MODIFIER_PROPERTY_OVERRIDE_ANIMATION 	强制播放模型动作
MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE 	设置播放模型动作快慢
MODIFIER_PROPERTY_OVERRIDE_ANIMATION_WEIGHT 	强制播放模型动作_重？
MODIFIER_PROPERTY_OVERRIDE_ATTACK_MAGICAL 	魔法攻击
MODIFIER_PROPERTY_PERSISTENT_INVISIBILITY 	永久性隐身
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS 	增加护甲
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_ILLUSIONS 	增加幻象的护甲
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE 	增加护甲，不可叠加
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE_ACTIVE 	改变圆盾减伤的效果？
MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK 	数值减免伤害？
MODIFIER_PROPERTY_POST_ATTACK 	增加攻击力？
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE 	修改附加攻击力
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE_POST_CRIT 	以增加伤害的方式修改伤害值，不计入暴击计算
MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE 	致命一击
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_COMPOSITE 	修改在普通攻击后计算的神圣伤害
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL 	修改在普通攻击后计算的魔法伤害
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PHYSICAL 	修改在普通攻击后计算的物理伤害
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PURE 	修改在普通攻击后计算的神圣伤害
MODIFIER_PROPERTY_PROCATTACK_FEEDBACK 	法力燃烧？
MODIFIER_PROPERTY_PROVIDES_FOW_POSITION 	*暂无说明*
MODIFIER_PROPERTY_REINCARNATION 	不朽之守护或者是骷髅王的大招？
MODIFIER_PROPERTY_RESPAWNTIME 	修改重生时间
MODIFIER_PROPERTY_RESPAWNTIME_PERCENTAGE 	百分比修改重生时间
MODIFIER_PROPERTY_RESPAWNTIME_STACKING 	累积重生时间
MODIFIER_PROPERTY_STATS_AGILITY_BONUS 	修改敏捷
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS 	修改智力
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS 	修改力量
MODIFIER_PROPERTY_SUPER_ILLUSION_WITH_ULTIMATE 	VS A杖大招的那个幻象
MODIFIER_PROPERTY_TOOLTIP 	可被用于任何提示， 比如臂章的血量移除
MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK 	减免所有来源的伤害
MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK_UNAVOIDABLE_PRE_ARMOR	对于自动攻击的伤害减免
MODIFIER_PROPERTY_TOTALDAMAGEOUTGOING_PERCENTAGE 	失效，不工作
MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS 	动作修改？
MODIFIER_PROPERTY_TRANSLATE_ATTACK_SOUND 	攻击音效修改？
MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE 	百分比修改转向速度
== Modifier 状态 ==
Modifier状态和Modifier属性十分类似，只不过他们是只有三个数值："MODIFIER_STATE_VALUE_NO_ACTION"(不作为), "MODIFIER_STATE_VALUE_ENABLED"(启用) 或者 "MODIFIER_STATE_VALUE_DISABLED"(禁用)。以下的modifier示例给单位添加了一个简单的眩晕粒子特效，覆盖了单位的模型操作，让单位进入了眩晕状态。
"creature_bash_ministun"
{
 "Duration" "%duration"
 "EffectName" "generic_stunned"
 "EffectAttachType" "follow_overhead"
 "Duration" "%stun_duration"
 "OverrideAnimation" "ACT_DOTA_DISABLED"
 "States"
 {
 "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED"
 } 
}
=== Modifier状态列表 ===
名称 	描述
MODIFIER_STATE_ATTACK_IMMUNE 	攻击免疫状态
MODIFIER_STATE_BLIND 	致盲状态？无法物理攻击？
MODIFIER_STATE_BLOCK_DISABLED 	禁用伤害减免？
MODIFIER_STATE_CANNOT_MISS 	不能闪避？
MODIFIER_STATE_COMMAND_RESTRICTED 	禁魔状态
MODIFIER_STATE_DISARMED 	缴械状态
MODIFIER_STATE_DOMINATED 	支配状态？
MODIFIER_STATE_EVADE_DISABLED 	禁用躲避？
MODIFIER_STATE_FLYING 	飞行状态
MODIFIER_STATE_FROZEN 	冷冻状态
MODIFIER_STATE_HEXED 	妖术状态
MODIFIER_STATE_INVISIBLE 	隐身状态
MODIFIER_STATE_INVULNERABLE 	无敌状态
MODIFIER_STATE_LOW_ATTACK_PRIORITY 	低的攻击优先级
MODIFIER_STATE_MAGIC_IMMUNE 	魔法免疫状态
MODIFIER_STATE_MUTED 	禁用物品状态
MODIFIER_STATE_NIGHTMARED 	催眠状态
MODIFIER_STATE_NO_HEALTH_BAR 	没有生命条
MODIFIER_STATE_NO_TEAM_MOVE_TO 	没有移动到队伍状态
MODIFIER_STATE_NO_TEAM_SELECT 	没有选择队伍状态
MODIFIER_STATE_NOT_ON_MINIMAP 	不在小地图状态
MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES	敌人不在小地图状态
MODIFIER_STATE_NO_UNIT_COLLISION 	没有单位碰撞状态
MODIFIER_STATE_OUT_OF_GAME 	离开游戏状态
MODIFIER_STATE_PASSIVES_DISABLED 	禁用被动技能状态
MODIFIER_STATE_PROVIDES_VISION 	提供视野状态
MODIFIER_STATE_ROOTED 	被缠绕状态
MODIFIER_STATE_SILENCED 	沉默状态
MODIFIER_STATE_SOFT_DISARMED 	软解除武装状态
MODIFIER_STATE_SPECIALLY_DENIABLE 	*暂无说明*
MODIFIER_STATE_STUNNED 	眩晕状态
MODIFIER_STATE_UNSELECTABLE 	无法选取状态
== Modifier 事件 ==
Modifiers也可以定义一些触发事件，以下的这些事件能够在modifier中定义 - 操作在本页面其他位置已经提及了
触发事件名称 	描述
OnAttacked 	当拥有modifier的单位被攻击时
OnAttackLanded 	当拥有modifier的单位攻击到某个目标时
OnAttackStart 	当拥有modifier的单位开始攻击某个目标
OnCreated 	当modifier被创建时
OnDealDamage 	当拥有modifier的单位施加伤害的时候
OnDeath 	当拥有modifier的单位死亡的时候
OnDestroy 	当这个modifier被移除的时候
OnOrbFire 	当法球modifier的法球被释放的时候
OnOrbImpact 	当法球modifier的法球命中目标之后
OnTakeDamage 	当拥有modifier的单位受到伤害的时候
Orb 	定义一个法球modifeir的特效等
OnIntervalThink 	循环执行定时器操作。在CreateThinker(创建定时器)下使用，配合Duration(持续时间)，ThinkInterval(间隔)。
新事件(14/08/26更新) 	描述
OnAttack 	
OnAttackFailed 	当拥有modifier的单位攻击失败时
OnAttackAllied 	当拥有modifier的单位攻击盟友时
OnProjectileDodge 	当拥有modifier的单位闪避弹道粒子特效时
OnEquip 	当拥有modifier的单位装备物品
OnOrder 	当拥有modifier的单位执行指令
OnUnitMoved 	当拥有modifier的单位移动的时候
OnAbilityStart 	当拥有modifier的单位开始使用技能
OnAbilityEndChannel 	当拥有modifier的单位结束持续施法
OnStateChanged 	当拥有modifier的单位状态改变时
OnRespawn 	当拥有modifier的单位重生
OnSpentMana 	当拥有modifier的单位花费魔法时
OnTeleporting 	当拥有modifier的单位正在传送时
OnTeleported 	当拥有modifier的单位传送结束时
OnHealthGained 	当拥有modifier的单位获得生命值
OnManaGained 	当拥有modifier的单位获得魔法值
OnHeroKilled 	当拥有modifier的单位被英雄杀了
OnHealReceived 	当拥有modifier的单位受到治疗
=== Modifier事件列表 ===
这些事件并不可以应用在所有的数据驱动类技能中，仅作为参考。
名称 	描述
MODIFIER_EVENT_ON_ABILITY_END_CHANNEL 	当持续性施法完成
MODIFIER_EVENT_ON_ABILITY_EXECUTED 	当施法执行完
MODIFIER_EVENT_ON_ABILITY_START 	当施法开始时
MODIFIER_EVENT_ON_ATTACK 	当攻击时
MODIFIER_EVENT_ON_ATTACK_ALLIED 	当攻击盟军时
MODIFIER_EVENT_ON_ATTACKED 	当攻击结束时
MODIFIER_EVENT_ON_ATTACK_FAIL 	当攻击失败
MODIFIER_EVENT_ON_ATTACK_LANDED 	当攻击击中时
MODIFIER_EVENT_ON_ATTACK_START 	当攻击开始时
MODIFIER_EVENT_ON_BREAK_INVISIBILITY 	当打破隐身状态
MODIFIER_EVENT_ON_DEATH 	当死亡时
MODIFIER_EVENT_ON_HEAL_RECEIVED 	当收到治疗
MODIFIER_EVENT_ON_HEALTH_GAINED 	当获得生命值
MODIFIER_EVENT_ON_HERO_KILLED 	当英雄死亡
MODIFIER_EVENT_ON_MANA_GAINED 	当获得魔法值
MODIFIER_EVENT_ON_ORB_EFFECT 	当在法球效果
MODIFIER_EVENT_ON_ORDER 	当命令结束时
MODIFIER_EVENT_ON_PROCESS_UPGRADE 	当在升级过程中
MODIFIER_EVENT_ON_PROJECTILE_DODGE 	当闪避弹道时
MODIFIER_EVENT_ON_REFRESH 	当刷新时
MODIFIER_EVENT_ON_RESPAWN 	当重生时
MODIFIER_EVENT_ON_SPENT_MANA 	当花费魔法值时
MODIFIER_EVENT_ON_STATE_CHANGED 	当状态改变时
MODIFIER_EVENT_ON_TAKEDAMAGE 	当带来伤害时
MODIFIER_EVENT_ON_TAKEDAMAGE_REAPERSCYTHE	当在死神镰刀下带来伤害时
MODIFIER_EVENT_ON_TELEPORTED 	当在传送结束时
MODIFIER_EVENT_ON_TELEPORTING 	当正在传送时
MODIFIER_EVENT_ON_UNIT_MOVED 	当单位移动时
== 技能范例 ==
* 
== 预载入 ==
创建数据驱动类技能，"precache"(预载入)代码块 并不是必须的。也只有当 BaseClass(基类) 定义成ability_datadriven的技能才适用预载入。
;注意
* 粒子特效 预载入并不需要完整的路径，举个例子：
:particles/econ/generic/generic_buff_1/generic_buff_1.vpcf
* 音效只需要事件名称即可。
Category:Dota 2 创意工坊工具集
Category:AMHC 汉化