数据驱动类技能

From Valve Developer Community

Jump to: navigation, search

Contents

[hide]

几乎所有在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" "generic_buff_1"
     "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)来重新定义他们的变量是可行的。

"ID" - ID是用来给跟踪技能状态的一个特定数值,在数据驱动类技能中不需要使用这个。

技能类型("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, //这个技能是一个光环技能,
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, //This ability 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, //这个技能能以神符为目标。


技能图标名称"AbilityTextureName" 是指在UI中显示的技能图标,你可以放一个其他技能的技能名称在此处来使用它,(或者你也可以引用 reource\flash3\images\spellicons文件夹中的.png文件名来定义自定义的图标 - 译者注)

"Modifiers" 是只有data-driven类技能才能使用的,这个区域定义了一系列的Modifiers(一般可以认为是Buff或者DeBuff),每个Modifier通过在其中定义的KV(KeyValues)来定义。

被动("Passive") 在Modifier中的被动字段,定义这个Modifier在这个技能被学习之后,将能自动施加给目标。

当创建时("OnCreated")是一个出发区域,当这个Modifier被第一次施加给这个单位的时候会被触发,在本例中,我们在触发之后给施法者施加了一个粒子特效。

技能触发事件和动作

引擎为技能提供了一系列触发事件,这些事件将能够在技能中触发:

"OnChannelFinish"      //当持续性施法完成
"OnChannelInterrupted" //当持续性施法被中断
"OnChannelSucceeded"   //当持续性施法成功
"OnOwnerDied"          //当拥有者死亡
"OnOwnerSpawned"       //当拥有者出生
"OnProjectileFinish"   //当弹道粒子特效结束
"OnProjectileHitUnit"  //当弹道粒子特效命中单位
"OnSpellStart"         //当技能施法开始
"OnToggleOff"          //当切换为关闭状态
"OnToggleOn"           //当切换为开启状态
"OnUpgrade"            //当升级


以下是你在技能中能够在动作中使用的一些Key:

"AddAbility" 
   "Target", "AbilityName"
"ActOnTargets"
   "Target", "Action"
"ApplyModifier"
   "Target", "ModifierName"
"AttachEffect"
   "EffectName", "EffectAttachType", "Target", "ControlPoints"
"Blink"
   "Target" (position to blink to)
"CreateThinker"
   "Target", "ModifierName"
"Damage"
   "Target", "Type", "MinDamage"/"MaxDamage" or "Damage"
"DestroyTrees"
   "Target", "Radius"
"FireEffect"
   "EffectName", "EffectAttachType", "Target", "ControlPoints"
"FireSound"
   "EffectName", "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"
"Random"
   "Chance", "PseudoRandom", "OnSuccess", "OnFailure"
"RemoveAbility"
   "Target", "AbilityName"
"RemoveModifier"
   "Target", "ModifierName"
"SpawnUnit"
   "UnitName", "UnitCount", "UnitLimit", "SpawnRadius", "Duration", "Target", "GrantsGold", "GrantsXP"
"Stun"
   "Target", "Duration"
"TrackingProjectile"
   "EffectName", "Dodgeable", "ProvidesVision", "VisionRadius", "MoveSpeed", "SourceAttachment"
注意:AddAbility (增加技能)将会给单位添加一个0级的技能。 RemoveAbility (移除技能)将会移除对应技能(哪怕它已经升级了),更复杂的技能管理,应当通过程序来制作。

动作目标

目标选择将会给动作提供一系列目标,一个目标("Target")键将能够使用 "CASTER"(施法者), "TARGET"(目标), "POINT"(点), "ATTACKER"(攻击者)或者 "UNIT" (单位)来提供一个单体目标的的选择,在不同的动作中,这些字段提供的是不同的目标,你需要自己实际使用一下才能明白。

为了选择多个目标,应该为"Target"键提供以下子键:

"Center" - "CASTER", "TARGET", "POINT", "PROJECTILE", "UNIT", "ATTACKER"
"Radius" - 搜索目标的范围
"Teams" - 目标的队伍(一样可以用 | 来指定多种类型)

DOTA_UNIT_TARGET_TEAM_BOTH    //这个类型在使用法球上会有问题,手动释放的法球会无法正确执行OnOrbImpact
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"
注意:RandomMaxTargets 共同使用,将Random 设置为0将会使动作只影响目标区域内MaxTargets或者更少的单位。

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_PERCENTAGE" "-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_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_CHANGE_ABILITY_VALUE
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
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_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_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_MIN_HEALTH
MODIFIER_PROPERTY_MISS_PERCENTAGE
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_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_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 事件

以下是可以使用的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

Modifiers也可以定义一些触发事件,以下的这些事件能够在modifier中定义 - 动作在本页面其他位置已经提及了时

OnAttacked		- 当拥有modifier的单位被攻击时
OnAttackLanded		- 当拥有modifier的单位攻击到某个目标时
OnAttackStart		- 当拥有modifier的单位开始攻击某个目标
OnCreated		- 当modifier被创建时
OnDealDamage		- 当拥有modifier的单位施加伤害的时候
OnDeath			- 当拥有modifier的单位死亡的时候
OnDestroy		- 当这个modifier被移除的时候
OnOrbFire		- 当法球modifier的法球被释放的时候
OnOrbImpact		- 当法球modifier的法球命中目标之后
OnTakeDamage		- 当拥有modifier的单位受到伤害的时候
Orb			- 定义一个法球modifeir的特效等

技能范例