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

From Valve Developer Community
Jump to navigation Jump to search

Template:Otherlang2

几乎所有在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 待补充

Template:注意

范例

一个关于事件和动作的范例。在这个范例中,当你开始释放技能,就会在施法者上播放音效。

"OnSpellStart"      // 事件
{
    "FireSound"     // 动作
    {
        "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.

Note.png注意:These names mean different things in different events. It may require some experimentation to discover exactly what in each case.

多个目标

For selecting multiple targets in an area, make the Target key a block with the following subkeys:

  • 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

Template:注意

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_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 失效,不工作
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.