Zh/Dota 2 Workshop Tools/Scripting/Abilities Data Driven
几乎所有在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, //这个技能能以神符为目标。
技能触发事件和动作
技能可以有各种游戏中的事件,这些事件可以触发动作。
事件
引擎为技能提供了一系列触发事件,这些事件将能够在技能中触发:
触发事件名称 | 描述 |
---|---|
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, EffectColorA, EffectColorB, EffectAlphaScale | 待补充 |
Blink | Target | 待补充 |
CleaveAttack | CleavePercent, CleaveRadius | 待补充 |
CreateThinker | Target, ModifierName | 待补充 |
Damage | Target, Type, MinDamage/MaxDamage, Damage | 待补充 |
DestroyTrees | Target, Radius | 待补充 |
FireEffect | EffectName, EffectAttachType, Target, ControlPoints, TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale, EffectColorA, EffectColorB | 待补充 |
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 | 待补充 |
Random | Chance, PseudoRandom, OnSuccess, OnFailure | 待补充 |
RemoveAbility | Target, AbilityName | 待补充 |
RemoveModifier | Target, ModifierName | 待补充 |
RunScript | Target, ScriptFile, Function | 待补充 |
SpawnUnit | UnitName, UnitCount, UnitLimit, SpawnRadius, Duration, Target, GrantsGold, GrantsXP | 待补充 |
Stun | Target, Duration | 待补充 |
TrackingProjectile | Target, EffectName, Dodgeable, ProvidesVision, VisionRadius, MoveSpeed, SourceAttachment | 待补充 |
范例
An example block showing an event and the accompanying action. In this case, when the spell is cast fire a particular sound event using the caster as the target source of the sound.
"OnSpellStart" // Event
{
"FireSound" // Action
{
"EffectName" "SoundEventName"
"Target" "CASTER"
}
}
动作目标
Within an action the Target
key can be given a value to specify what it is that the target is. This exposes some choices to make as to what you may want to target.
单体目标
Valid target values are as follows for single-target selection:
- CASTER
- TARGET
- POINT
- ATTACKER
- UNIT
In the above example where a sound is being played, notice that Target
is set to CASTER
. It will play the sound on the caster of the spell when it starts.

多个目标
For selecting multiple targets in an area, make the Target
key a block with the following subkeys:
Center
- 搜索范围的中心
CASTER, TARGET, POINT, PROJECTILE, UNIT, ATTACKER
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
Modifiers may have following keys:
- Attributes
- MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE, MODIFIER_ATTRIBUTE_MULTIPLE, MODIFIER_ATTRIBUTE_NONE, MODIFIER_ATTRIBUTE_PERMANENT
- Duration
- FloatValue
- EffectAttachType
- follow_overhead, follow_origin, start_at_customorigin, world_origin
- EffectName
- StringValue
- IsBuff
- BooleanValue
- IsDebuff
- BooleanValue
- IsHidden
- BooleanValue
- IsPurgable
- BooleanValue
- 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
- Passive
- BooleanValue
- ThinkInterval
- FloatValue
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_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 //doesn't work
- 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的特效等 |
技能范例
预载入
When creating data-driven abilities the "precache"
block is not required. This ONLY applies to data-driven abilities that have the BaseClass
defined as ability_datadriven
.
- Notes
- Particle effects require the full path with extension in addition to the file name. For example:
particles/econ/generic/generic_buff_1/generic_buff_1.vpcf
- The_c
is not required.
- Sound effects only require the event name.