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

Народ, правте, если умеете переводить. А то как DDSUPER получится, который просто заменил слова по словарику убив смысл.
__TOC__
=== Что такое артефакт? ===
Если выстроить цепочку родословной то получится Артефакт-Абилка-Модификатор.
Артефакт является папой всего.
Артефакт это та же абилка, только артефакт можно передавать между героями,
продавать через магазин.
Абилки же, не могут переходить от одного объекта к другому.
Сценарии поведения для артефактов, состоят из тех же самых, что и в абилках,но дополнительно добавляют такие настройки как цена, можно ли передавать и т.п.
У артефактов есть все те же события , какие и у абилок.
Еще разница в том, что описание ДДЛ для абилок и артефактов разнесено в разные файлы: npc_items_custom.txt (артефакты), npc_abilities_custom.txt(абилки).
=== Что такое абилка? ===
Абилка это как русская матрешка, в которую можно упаковать модификаторы.
Абилка это всегда одна матрешка, а вот внутри ее может быть много модификаторов матрешек.
Модификатор это описание, что и как изменить в игровом мире.У него могут быть разные цели в игровом мире и достаточно большой перечень действий, которыми модификатор изменяет игровой мир и объекты в нем.
Далее у абилки определяется сценарий ее поведения(пассивка, вкл/выкл, каст и т.п.)- "AbilityBehavior".
Также можно сказать, что абилка это расширенный модификатор, которому позволено держать в себе простые модификаторы.
Абилка прикрепляется к объекту в игре в явном виде или скрытом. Модификаторы подобны гонцам, которые рассылает абилка другим объектам или самому себе, и когда гонцы доходят до объекта назначения, они на некоторое время становятся абилками этих объектов, внося присланные изменения объекту.
Многие встроенные абилки созданы в коде игры. У них есть только незначительные метаданные, которые можно изменить и находятся они в файле npc_abilities.txt. Формат файл представляет из себя Дерево Данных с Листьями(ДДЛ) в форме "Название" - "Значение". 
Пример фрагмента из файла ДДЛ:
//Где-то раньше есть корень дерева. Этот пример лишь вырезка из дерева.
...
"fx_test_ability" //Точка ветвления
{
 // Основное
 //-------------------------------------------------------------------------------------------------------------
 "BaseClass" "ability_datadriven" //Листья в формате "Название" - "Значение"
 "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" //Листья в формате "Название" - "Значение"
 "AbilityTextureName" "axe_battle_hunger" //Листья в формате "Название" - "Значение"
 // Модификаторы
 //-------------------------------------------------------------------------------------------------------------
 "Modifiers" //Точка ветвления
Чтобы создавать новые абилки, можно использовать ДДЛ файлы.
Перейдем сразу к простому примеру, создания абилки с помощью ДДЛ формата.
== Пример абилки с ипользованием Деревьев Данных с Листьями (ДДЛ) ==
Это пример пассивной абилки, которая создает визуальный эффект над головой юнита.
"fx_test_ability"
{
 // Основное
 //-------------------------------------------------------------------------------------------------------------
 "BaseClass" "ability_datadriven"
 "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
 "AbilityTextureName" "axe_battle_hunger"
 // Модификаторы
 //-------------------------------------------------------------------------------------------------------------
 "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
Нужен, чтобы игра, понимала какой код соединить с абилкой.
В этом примере мы используем имя ability_datadriven. Также можно использовать другие имена.
;AbilityBehavior
Установка сценария поведения абилки.
К примеру "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" Пробелы обязательны!
;ID
:Не используется для вновь создаваемых абилок.
;AbilityTextureName
:Имя текстуры, которое будет отображаться в HUD.
;Modifiers
Ветвь с модификаторами. Вложенные матрешки абилки.
;Passive
Сценарий поведения модификатора. В данном случае пассивный, то есть работающий сразу без каких либо действий.
;OnCreated
Событие, OnCreated, возникает, когда абилка запускает модификатор. У данного модификатора в качестве цели в игровом мире указан кастующий эта абилку.
== Сценарии поведений ==
"AbilityBehavior" заполняется одним из представленных имен.
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, //Механизм применения похож на 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, //Ability has no reticle assist. Без перевода.
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_IGNORE_CHANNEL = 1 << 20, //Может использоваться без прерывания прерываемых абилок.
DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT = 1 << 21, //Не дает некоторым модификаторам закончить своё действие. Используеться на курьере у модификатора ускорение.
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
New:
*OnAbilityEndChannel
*OnAbilityStart
*OnAttack
*OnAttackAllied
*OnAttackFailed
*OnCreated
*OnEquip
*OnHealReceived
*OnHealthGained
*OnHeroKilled
*OnManaGained
*OnOrder
*OnProjectileDodge
*OnRespawn
*OnSpentMana
*OnStateChanged
*OnTeleported
*OnTeleporting
*OnUnitMoved
=== Действия ===
Каждое действие содержит один или несколько параметров.
Помните, чтобы абилки это как расширенные модификаторы, и поэтому они тоже могут делать действия в игровом мире. Далее дан список действий и их параметров.
*AddAbility
:Target, AbilityName
*ActOnTargets
:Target, Action
*ApplyModifier
:Target, ModifierName
*AttachEffect
:EffectName, EffectAttachType, Target, ControlPoints, 
:TargetPoint, EffectRadius, EffectDurationScale, EffectLifeDurationScale ,EffectColorA, EffectColorB, EffectAlphaScale
*Blink
:Target
*CleaveAttack
:CleavePercent, CleaveRadius
*CreateThinker
:Target, ModifierName
*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, EffectAlphaScale
*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
=== Пример ===
Тут показано, что при работе абилки возникло событие OnSpellStart, тут Spell слово, хотя логичнее слово Ability. Далее определено действие FireSound, которое восроизводит звук в игровом мире. У этого действия есть свои параметры,
параметр Target "Цель в игровом мире" и название звука.
"OnSpellStart" // Событие
{
 "FireSound" // Действие
 {
 "EffectName" "SoundEventName"
 "Target" "CASTER"
 }
}
=== Значение точечных целей для Target ===
* CASTER
* TARGET
* POINT
* ATTACKER
* UNIT
=== Многоцелевые значения для Target ===
Чтобы указать сразу несколько целей в игровом мире для действия, используем следующие значения в Target.
Далее перечислены значения, которые описывают область в которой нужно искать цели и каким образом фильтровать цели. 
* Center - Где будет находится центр области(Круга).То есть на кастующем, на цели, на клике, на ракете, на юните, на атакующем.
: CASTER, TARGET, POINT, PROJECTILE, UNIT, ATTACKER
* Radius - длина радиуса в юнитах(ед.изм Hammer редактора)
: IntegerValue
* 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 -Максимум найденных целей в области.
: IntegerValue
* Random - Добавить ли еще один рандомный объект из игрового мира сверх максимума.
: BooleanValue
* ScriptSelectPoints - Поиск в области делается через LUA скрипт.
: ScriptFile, Function, Radius, Count
== Модификаторы ==
Перечень "Название"-"Значение" для модификаторов:
* Attributes
:MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE
:MODIFIER_ATTRIBUTE_MULTIPLE
:MODIFIER_ATTRIBUTE_NONE
:MODIFIER_ATTRIBUTE_PERMANENT
* Duration
:FloatValue
* EffectAttachType
:follow_origin, follow_overhead, 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_RUN
:ACT_DOTA_SPAWN
:ACT_DOTA_TELEPORT
:ACT_DOTA_VICTORY
Дан не полный список действий, которые может выполнять модификатор. Остальные смотрим тут .
Ниже уже дополнительные метаданные из "Название"-"Значение":
* Passive
:BooleanValue
* TextureName
:StringValue
* ThinkInterval
:FloatValue
=== Свойства игровых объектов мира доступных модификаторам ===
Свойства игровых объектов мира это почти, все что можно изменить у игрового объекта(в основном это влияет на баланс игры). Использованный здесь пример замедляет скорость атаки и передвижения(этот фрагмент является частью блока "Modifiers" в дереве абилки) .
Чтобы задать числовые значения , вы можете написать число или использовать формат %name чтобы использовать значения из блока "AbilitySpecial" вашей абилки. Преимущество использования %name в том, что значения могут меняться при повышении уровня абилки, а также эти данные можно использовать при создании описания абилки.
В данном примере, длительность замедления зависит от значения в блоке "AbilitySpecial" , а сила замедления просто цифры.
"creature_slithereen_crush_slow"
{
 "Duration" "%slow_duration"
 "Properties"
 {
 "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-20"
 "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "-20"
 }
}
==== Доступные Свойства игровых объектов мира для модификаторов ====
* 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_STATE_VALUE_NO_ACTION", "MODIFIER_STATE_VALUE_ENABLED" или "MODIFIER_STATE_VALUE_DISABLED".
Данный пример модификатора добавляет эффект оглушения, изменяет анимацию юнита и изменяет свойство юнита "Под станом" в состояние "Включено":
"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_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
=== События которые вызывает сам модификатор ===
Модификатор может создавать события в зависимости от того, в каком состоянии он
находится или в каком состоянии находится цель к которой он применен.
Мы можем в ответ на это событие сделать еще что либо, то есть по сути модификатор в модификаторе.
*OnAbilityExecuted
*OnAttacked - Юнит, имеющий модификатор, был атакован.
*OnAttackLanded - Юнит, имеющий модификатор, ударил цель.
*OnAttackStart - Юнит, имеющий модификатор, начал атаковать цель (момент начала анимации атаки).
*OnCreated - Модификатор был создан.
*OnDealDamage - Юнит, имеющий модификатор, нанёс урон.
*OnDeath
*OnDestroy - Модификатор был уничтожен.
*OnIntervalThink
*OnKill - Юнит, имеющий модификатор, убил кого-то.
*OnHeroKilled - Юнит, имеющий модификатор, убил героя.
*OnOrbFire
*OnOrbImpact
*OnTakeDamage - Юнит, имеющий модификатор, получил урон (любой урон).
*Orb
Полный список событий модификатора . Не все события доступны для ДДЛ формата или для LUA скриптов.
== Дополнительные примеры ==
* 
== Precaching ==
При создании data-driven абилок блок "precache" не обязателен. Это используется только для тех data-driven абилок, у которых BaseClass установлено значение ability_datadriven .
;Примечания
* Визуальные эффекты требуют полный путь с именем файла включая расширение файла. Например:
:particles/econ/generic/generic_buff_1/generic_buff_1.vpcf - "_c" не требуется.
* Звуковые эффекты требуют только название звукового события.
Category:Dota 2 Workshop Tools
Подготовлено:Russia nekto (talk) 10:09, 24 July 2015 (UTC)