数据驱动类技能
From Valve Developer Community
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"

Random
和 MaxTargets
共同使用,将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的特效等