"DOTAAbilities" { // Alchemist Acid Bomb // Author: Noya // Description: Hurls a flask of acid at a target. The flask breaks upon impact, splashing a powerful acid on nearby hostile units. // Decreases armor; deals slightly less damage over time to nearby targets. "alchemist_acid_bomb" { "BaseClass" "ability_datadriven" "AbilityTextureName" "alchemist_acid_bomb" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_ALCHEMIST_CONCOCTION_THROW" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "12.0" "AbilityManaCost" "75" "AOERadius" "%radius" "precache" { "particle" "particles/units/heroes/hero_witchdoctor/witchdoctor_cask.vpcf" "particle" "particles/units/heroes/hero_witchdoctor/witchdoctor_cask_explosion_flash.vpcf" "particle" "particles/units/heroes/hero_witchdoctor/witchdoctor_maledict_aoe.vpcf" "particle" "particles/status_fx/status_effect_maledict.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_reduction" "-3 -4 -5" } "02" { "var_type" "FIELD_INTEGER" "duration" "15" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "5 10 15" } "04" { "var_type" "FIELD_INTEGER" "radius" "200" } "05" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_witchdoctor/witchdoctor_cask.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_3" } "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Throw" "Target" "TARGET" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireEffect" { "EffectName" "particles/units/heroes/hero_witchdoctor/witchdoctor_maledict_aoe.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_witchdoctor/witchdoctor_cask_explosion_flash.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Stun" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_acid_bomb" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } "Modifiers" { "modifier_acid_bomb" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_maledict.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } "FireEffect" { "EffectName" "particles/msg_fx/msg_poison.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" "ControlPoints" { "01" "9 %damage_per_second 6" "02" "1 3 0" "03" "170 0 250" } } } } } } // Alchemist Chemical Rage // Author: Noya // Description: The Alchemist causes his Ogre to enter a chemically induced rage, increasing movement rate by 50% and increasing attack rate. "alchemist_chemical_rage_warcraft" { "BaseClass" "ability_datadriven" "AbilityTextureName" "alchemist_chemical_rage_warcraft" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_ALCHEMIST_CHEMICAL_RAGE_START" "AbilityCastRange" "700" "AbilityCastPoint" "0.0" "AbilityCooldown" "30.0" "AbilityManaCost" "25" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0" } "02" { "var_type" "FIELD_FLOAT" "transformation_time" "0.35" } "03" { "var_type" "FIELD_FLOAT" "bonus_movespeed_percent" "50" } "04" { "var_type" "FIELD_FLOAT" "bonus_attack_speed" "25 75 125" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" "particle" "particles/status_fx/status_effect_chemical_rage.vpcf" "particle" "particles/units/heroes/hero_alchemist/alchemist_chemical_rage.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Alchemist.ChemicalRage.Cast" "Target" "CASTER" } // Applying the dota modifier controls the new animations sounds and body // The modifier_alchemist_chemical_rage tooltip needs to be adjusted to ignore AbilitySpecials we don't need // base_attack_time bonus_health bonus_health_regen bonus_mana_regen bonus_movespeed // And instead use our bonus_movespeed_percent and bonus_attack_speed "ApplyModifier" { "ModifierName" "modifier_alchemist_chemical_rage_transform" "Target" "CASTER" "Duration" "%transformation_time" } // Extra Modifier with what we need to add for the custom ability "ApplyModifier" { "ModifierName" "modifier_chemical_rage_warcraft" "Target" "CASTER" } } "Modifiers" { "modifier_chemical_rage_warcraft" { "IsBuff" "1" "IsHidden" "1" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed_percent" } } } } // Alchemist Healing Spray // Author: Noya // Description: Sprays waves of healing mist that heals units in a target area. "alchemist_healing_spray" { "BaseClass" "ability_datadriven" "AbilityTextureName" "alchemist_healing_spray" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_ALCHEMIST_CONCOCTION" "TargetsAllowed" "organic" "AbilityCastRange" "800" "AbilityCastPoint" "0.1" "AbilityCooldown" "0.0" "AbilityManaCost" "75" "AOERadius" "%radius" "AbilityChannelTime" "4.0 5.0 6.0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "wave_duration" "4.0 5.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "wave_count" "3 4 5" } "04" { "var_type" "FIELD_INTEGER" "wave_heal" "40 55 70" } } "precache" { "particle" "particles/custom/alchemist_acid_spray_cast.vpcf" "particle" "particles/custom/alchemist_acid_spray.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/alchemist/healing_spray.lua" "Function" "HealingSprayStart" "Target" "POINT" } "ApplyModifier" { "ModifierName" "modifier_healing_spray_channelling" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Throw" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/alchemist/healing_spray.lua" "Function" "HealingSprayEnd" } "RemoveModifier" { "ModifierName" "modifier_healing_spray_channelling" "Target" "CASTER" } } "Modifiers" { "modifier_healing_spray_channelling" { "IsHidden" "0" "ThinkInterval" "1.0" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_channeling" "Target" "CASTER" "Duration" "0.9" } } } "modifier_channeling" { "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_1" } "modifier_healing_spray_thinker" { "ThinkInterval" "1.0" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Throw" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/alchemist/healing_spray.lua" "Function" "HealingSprayWave" } "FireEffect" { "EffectName" "particles/custom/alchemist_acid_spray.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "01" "%radius 1 %radius" "15" "255 255 0" "16" "255 255 0" } } } } } } // Alchemist Transmute // Author: Noya // Description: Kills a target unit instantly, transforming it into gold which is added to your available gold! Transmute cannot be used on Heroes, or creeps above level 5. "alchemist_transmute" { "BaseClass" "ability_datadriven" "AbilityTextureName" "alchemist_transmute" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "MaxCreepLevel" "5" "AbilityCastRange" "650" "AbilityCooldown" "45.0" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "gold_bounty_multiplier" "0.8" } } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.Hand_Of_Midas" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/alchemist/transmute.lua" "Function" "Transmute" } } } // Archmage Blizzard // Author: Noya // Description: Calls down waves of freezing ice shards that damage units in a target area. "archmage_blizzard" { "BaseClass" "ability_datadriven" "AbilityTextureName" "archmage_blizzard" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_5" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "75" "AOERadius" "%radius" "AbilityChannelTime" "6.0 8.0 10.0" "BuildingReduction" "0.5" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "wave_count" "6 8 10" } "03" { "var_type" "FIELD_INTEGER" "wave_damage" "30 40 50" } "04" { "var_type" "FIELD_INTEGER" "max_wave_damage" "150 200 250" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_freezing_field_snow.vpcf" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_freezing_field_explosion.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardStartPoint" "Target" "POINT" } "ApplyModifier" { "ModifierName" "modifier_blizzard_channelling" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardEnd" } } "Modifiers" { "modifier_blizzard_channelling" { "IsHidden" "1" "ThinkInterval" "0.99" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "ApplyAnimation" } } } "modifier_blizzard_wave" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardWave" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardWave" } } } } } // Archmage Brilliance Aura // Author: Noya // Description: Gives additional mana regeneration to nearby friendly units. "archmage_brilliance_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/archmage/brilliance_aura.lua" "AbilityTextureName" "archmage_brilliance_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_regen" "0.75 1.5 2.25" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Archmage Mass Teleport // Author: Noya // Description: Teleports 24 of the player's nearby units, including the Archmage, to a friendly ground unit or structure. "archmage_mass_teleport" { "BaseClass" "ability_datadriven" "AbilityTextureName" "archmage_mass_teleport" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BUILDING" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground" "AbilityCastPoint" "0.3" "AbilityCooldown" "20.0" "AbilityCastRnage" "700" "AbilityManaCost" "100" "AbilityChannelTime" "3.0" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_recall_cast.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_recall.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_units_teleported" "24" } "02" { "var_type" "FIELD_INTEGER" "radius" "700" } "03" { "var_type" "FIELD_FLOAT" "channel_time" "3.0" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/archmage/mass_teleport.lua" "Function" "MassTeleportStart" "Target" "POINT" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_recall_cast.vpcf" "EffectAttachType" "start_at_custom_origin" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" } } "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.Cast" "Target" "CASTER" } } "OnChannelInterrupted" { "RunScript" { "ScriptFile" "heroes/archmage/mass_teleport.lua" "Function" "MassTeleportStop" } "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.Fail" "Target" "CASTER" } } "OnChannelSucceeded" { "RunScript" { "ScriptFile" "heroes/archmage/mass_teleport.lua" "Function" "MassTeleport" } "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.End" "Target" "CASTER" } } "Modifiers" { "modifier_mass_teleport_target" { "IsHidden" "1" "Duration" "3.0" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Archmage Summon Water Elemental // Author: Noya // Description: Summons a Water Elemental to attack the Archmage's enemies. // Level 1: 525 hit points, light damage // Level 2: 675 hit points, moderate damage // Level 3: 900 hit points, heavy damage "archmage_summon_water_elemental" { "BaseClass" "ability_datadriven" "AbilityTextureName" "archmage_summon_water_elemental" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCooldown" "20" "AbilityManaCost" "125" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hit_points" "525 675 900" } "03" { "var_type" "FIELD_INTEGER" "damage" "20 35 45" } } "precache" { "particle" "particles/units/heroes/hero_morphling/morphling_replicate_finish.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_morphling.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/archmage/summon_water_elemental.lua" "Function" "SummonElemental" } } } // Beastmaster Stampede // Author: Noya // Description: Calls down hordes of rampaging thunder lizards to explode upon the Beastmaster's enemies. Each exploding lizard does 60 damage. "beastmaster_stampede" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_stampede" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_CHANNELING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_5" "TargetsAllowed" "ground" "AbilityCastRange" "300" "AbilityCastPoint" "0.3" "AbilityCooldown" "180.0" "AbilityManaCost" "150" "AbilityChannelTime" "30.0" "precache" { "particle" "particles/custom/tinker_machine.vpcf" "particle" "particles/units/heroes/hero_riki/riki_backstab_hit_blood.vpcf" "particle" "particles/units/heroes/hero_beastmaster/beastmaster_primal_roar.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lizard_damage" "60" } "02" { "var_type" "FIELD_FLOAT" "duration" "30" } "03" { "var_type" "FIELD_INTEGER" "speed" "600" } "04" { "var_type" "FIELD_INTEGER" "distance" "2000" } "05" { "var_type" "FIELD_INTEGER" "collision_radius" "100" } "06" { "var_type" "FIELD_INTEGER" "lizards_per_sec" "20" } "07" { "var_type" "FIELD_INTEGER" "spawn_radius" "1000" } "08" { "var_type" "FIELD_FLOAT" "roar_interval" "1.3" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_stampede" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_stampede_channeling" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Beastmaster.Primal_Roar" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/beastmaster/stampede.lua" "Function" "StampedeCast" "Target" "POINT" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_stampede" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_stampede_channeling" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%lizard_damage" } // Custom Building Damage "RunScript" { "ScriptFile" "buildings/damage.lua" "Function" "DoBuildingDamage" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Damage" "%lizard_damage" } "FireSound" { "EffectName" "Hero_Beastmaster.Wild_Axes_Damage" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_riki/riki_backstab_hit_blood.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "Modifiers" { "modifier_stampede" { "ThinkInterval" "%roar_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/beastmaster/stampede.lua" "Function" "Stampede" "Target" "POINT" } } } "modifier_stampede_channeling" { "IsHidden" "1" "ThinkInterval" "%roar_interval" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_channeling" "Target" "CASTER" "Duration" "1.25" } "FireSound" { "EffectName" "Hero_Centaur.Stampede.Movement" "Target" "TARGET" } } } "modifier_channeling" { "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_5" } "modifier_stampede_dummy" { "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Beastmaster Summon Bear // Author: Noya // Description: Summons a powerful bear to attack your enemies. // Level 3: Summons Bear // Level 2: Summons Raging Bear with Bash // Level 3: Summons Spirit Bear with Bash and Blink "beastmaster_summon_bear" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_summon_bear" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "45.0 40.0 40" "AbilityManaCost" "125" "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_spawn.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "particle" "particles/status_fx/status_effect_spirit_bear.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" "model" "models/heroes/lone_druid/spirit_bear.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "70" } "02" { "var_type" "FIELD_INTEGER" "bear_hp" "600 900 1200" } "03" { "var_type" "FIELD_FLOAT" "bear_regen_tooltip" "0.5 1 1.5" } "04" { "var_type" "FIELD_INTEGER" "bear_damage" "20 29 39" } "05" { "var_type" "FIELD_INTEGER" "bear_armor" "0 1 2" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LoneDruid.SpiritBear.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/beastmaster/summon_bear.lua" "Function" "SpawnBear" } } "Modifiers" { "modifier_beastmaster_bear" { "IsHidden" "1" "StatusEffectName" "particles/status_fx/status_effect_spirit_bear.vpcf" "StatusEffectPriority" "1" "OnCreated" { "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_bear_spawn.vpcf" "EffectAttachType" "follow_origin" } } "OnDeath" { "FireEffect" { "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "EffectAttachType" "follow_origin" } } } } } // Extra abilities for neutral_beastmaster_raging_bear and neutral_beastmaster_spirit_bear // Gives a 25% chance that an attack will do 25 bonus damage and stun an opponent for 1 second. "beastmaster_summon_bear_bash" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_bash" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityDamage" "25" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts" "particle" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bash_chance" "25" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0" } } "Modifiers" { "modifier_bash" { "Passive" "1" "IsHidden" "1" "OnSuccess" { "ActOnTargets" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "FireSound" { "EffectName" "Hero_FacelessVoid.TimeLockImpact" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_bash_stun" "Target" "TARGET" "Duration" "%stun_duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } } } "modifier_bash_stun" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "StatusEffectPriority" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Ability for neutral_beastmaster_spirit_bear // Teleports the Bear a short distance, allowing it to move in and out of combat. "beastmaster_summon_bear_blink" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_summon_bear_blink" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityCastAnimation" "ACT_DOTA_SPAWN" "AbilityCastRange" "1000" "AbilityCastPoint" "0.3" "AbilityCooldown" "15" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_blink_end.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_blink_start.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blink_range" "1000" } } "OnSpellStart" { "FireSound" { "EffectName" "LoneDruid_SpiritBear.ReturnStart" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_bear_blink_start.vpcf" "EffectAttachType" "attach_hitloc" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/beastmaster/summon_bear.lua" "Function" "Blink" "Target" "POINT" } "FireSound" { "EffectName" "LoneDruid_SpiritBear.Return" "Target" "CASTER" } } } // Beastmaster Summon Hawk // Author: Noya // Description: Summons a proud hawk to spy on your enemies. // Level 1: Summons Hawk // Level 2: Summons Thunder Hawk with an attack // Level 3: Summons Spirit Hawk with Invisibility "beastmaster_summon_hawk" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_summon_hawk" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "75.0" "AbilityManaCost" "50" "precache" { "particle" "particles/units/heroes/hero_beastmaster/beastmaster_call_bird.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" "model" "models/heroes/beastmaster/beastmaster_bird.vmdl" "particle" "particles/status_fx/status_effect_slark_shadow_dance.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "70" } "02" { "var_type" "FIELD_INTEGER" "bird_hp" "300 450 650" } "03" { "var_type" "FIELD_FLOAT" "bird_regen" "0.5 1 1.5" } "04" { "var_type" "FIELD_INTEGER" "bird_damage" "0 23 52" } "05" { "var_type" "FIELD_INTEGER" "bird_armor" "0 3 5" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Hawk" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/beastmaster/summon_hawk.lua" "Function" "SpawnHawk" } } "Modifiers" { "modifier_beastmaster_bird" { "IsHidden" "1" "OnCreated" { "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_beastmaster/beastmaster_call_bird.vpcf" "EffectAttachType" "follow_origin" } } "OnDeath" { "FireEffect" { "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "EffectName" "Hero_Beastmaster_Bird.Death" } } } } } // Sub Ability "beastmaster_hawk_invis" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_hawk_invisibility" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "motionless_time" "4" } } "Modifiers" { "modifier_hawk_think" { "Passive" "1" "IsHidden" "1" "OnUnitMoved" { "RunScript" { "ScriptFile" "heroes/beastmaster/summon_hawk.lua" "Function" "HawkMoved" } "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } } "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/beastmaster/summon_hawk.lua" "Function" "HawkAttacked" } "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/beastmaster/summon_hawk.lua" "Function" "HawkInvisCheck" } } } } } // Beastmaster Summon Quilbeast // Author: Noya // Description: Summons an angry Quilbeast to attack your enemies. // Level 1 Summons Quilbeast // Level 2 Summons Dire Quilbeast with Frenzy // Level 3 Summons Raging Quilbeast with area effect damage and Frenzy "beastmaster_summon_quilbeast" { "BaseClass" "ability_datadriven" "AbilityTextureName" "beastmaster_summon_quilbeast" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "25.0" "AbilityManaCost" "75" "precache" { "particle" "particles/units/heroes/hero_beastmaster/beastmaster_call_boar.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "particle" "particles/units/heroes/hero_beastmaster/beastmaster_boar_attack.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" "model" "models/heroes/beastmaster/beastmaster_beast.vmdl" // Sub Abilities "particle" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_buff.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "70" } "02" { "var_type" "FIELD_INTEGER" "boar_hp" "425 515 600" } "03" { "var_type" "FIELD_FLOAT" "boar_regen_tooltip" "0.5 1 1.5" } "04" { "var_type" "FIELD_INTEGER" "boar_damage" "14 28 42" } "05" { "var_type" "FIELD_INTEGER" "boar_armor" "0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Boar" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/beastmaster/summon_quilbeast.lua" "Function" "SpawnQuilbeast" } } "Modifiers" { "modifier_beastmaster_boar" { "IsHidden" "1" "OnCreated" { "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_beastmaster/beastmaster_call_boar.vpcf" "EffectAttachType" "follow_origin" } } "OnDeath" { "FireEffect" { "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "EffectName" "Hero_Beastmaster_Boar.Death" } } } } } // Sub Abilities "beastmaster_quilbeast_frenzy" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityTextureName" "orc_bloodlust" "AbilityCooldown" "30" "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "25" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "40" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_frenzy" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_frenzy_autocast" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/beastmaster/summon_quilbeast.lua" "Function" "FrenzyAutocast" } } } "modifier_frenzy" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_buff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/beastmaster/summon_quilbeast.lua" "Function" "FrenzyResize" } } } } } // Blademaster Bladestorm // Author: Noya // Description: Causes a bladestorm of destructive force around the Blademaster, rendering him immune to magic and dealing 110 damage per second to nearby enemy land units. "blademaster_bladestorm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blademaster_bladestorm" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground" "AbilityCastRange" "700" "AbilityCastPoint" "0.0" "AbilityCooldown" "180.0" "AbilityManaCost" "100" "AbilityDamage" "110" "AbilityCastRange" "200" "precache" { "particle" "particles/units/heroes/hero_juggernaut/juggernaut_blade_fury.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_juggernaut.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "bladestorm_damage_tick" "0.2" } "01" { "var_type" "FIELD_INTEGER" "bladestorm_radius" "200" } "02" { "var_type" "FIELD_FLOAT" "duration" "7.0" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_bladestorm" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_bladestorm" { "OverrideAnimation" "ACT_DOTA_OVERRIDE_ABILITY_1" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_juggernaut/juggernaut_blade_fury.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPoints" { "05" "%bladestorm_radius 0 0" } } "FireSound" { "EffectName" "Hero_Juggernaut.BladeFuryStart" "Target" "CASTER" } } "ThinkInterval" "%bladestorm_damage_tick" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/blademaster/bladestorm.lua" "Function" "BladestormDamage" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Juggernaut.BladeFuryStop" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/blademaster/bladestorm.lua" "Function" "BladeFuryStop" } } } } } // Blademaster Critical Strike // Author: Noya // Notes: Gives a 15% chance that the Blademaster will do more damage on his attacks. "blademaster_critical_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blademaster_critical_strike" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "precache" { "particle" "particles/econ/items/juggernaut/jugg_sword_fireborn_odachi/jugg_crit_blur_fb_odachi.vpcf" "particle" "particles/units/heroes/hero_juggernaut/jugg_crit_blur_impact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_skeletonking.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_bonus" "200 300 400" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "15" } } "Modifiers" { "modifier_critical_strike" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "FireSound" { "EffectName" "Hero_SkeletonKing.CriticalStrike" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/econ/items/juggernaut/jugg_sword_fireborn_odachi/jugg_crit_blur_fb_odachi.vpcf" "EffectAttachType" "attach_sword" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } "modifier_critical_strike_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_bonus" } "OnAttackLanded" { "FireEffect" { "EffectName" "particles/units/heroes/hero_juggernaut/jugg_crit_blur_impact.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } // Blademaster Mirror Image // Author: Noya // Description: Confuses the enemy by creating illusions of the Blademaster and dispelling all magic from the Blademaster. "blademaster_mirror_image" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blademaster_mirror_image" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "AbilityCooldown" "3.0" "AbilityCastPoint" "0.3" "AbilityManaCost" "125 125 125" "precache" { "particle" "particles/units/heroes/hero_siren/naga_siren_mirror_image.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "images_count" "1 2 3" } "02" { "var_type" "FIELD_INTEGER" "illusion_outgoing_damage" "-100 -100 -100" } "03" { "var_type" "FIELD_INTEGER" "outgoing_damage_tooltip" "0" } "04" { "var_type" "FIELD_INTEGER" "illusion_incoming_damage" "100" } "05" { "var_type" "FIELD_FLOAT" "illusion_duration" "60.0 60.0 60.0" } "06" { "var_type" "FIELD_FLOAT" "invuln_duration" "0.5" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_mirror_image" "Target" "CASTER" } } "Modifiers" { "modifier_mirror_image" { "Duration" "%invuln_duration" "IsHidden" "1" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_LOW_ATTACK_PRIORITY" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_siren/naga_siren_mirror_image.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "DOTA_Item.Manta.Activate" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/blademaster/mirror_image.lua" "Function" "MirrorImage" } } } } } // Blademaster Wind Walk // Author: Noya // Description: Allows the Blademaster to become invisible, and move faster for a set amount of time. When the Blademaster attacks a unit to break invisibility, he will deal bonus damage. "blademaster_windwalk" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blademaster_windwalk" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityCastPoint" "0" "AbilityCooldown" "5.0" "AbilityManaCost" "75" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_windwalk.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20 35 50" } "02" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "10 40 100" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "40 70 100" } } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_BountyHunter.WindWalk" } "ApplyModifier" { "ModifierName" "modifier_windwalk_fade_time" "Target" "CASTER" "Duration" "0.5" } } "Modifiers" { "modifier_windwalk_fade_time" { "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisibility" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_windwalk" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } } } "modifier_windwalk" { "Duration" "%duration" "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_invisibility" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_windwalk" "Target" "CASTER" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%bonus_damage" } "FireEffect" { "EffectName" "particles/msg_fx/msg_crit.vpcf" "EffectAttachType" "follow_overhead" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ControlPoints" { "01" "9 %bonus_damage 4" //pre number post "02" "1 4 0" //lifetime digits "03" "255 0 0" //color } } } "OnAbilityExecuted" { "RemoveModifier" { "ModifierName" "modifier_windwalk" "Target" "CASTER" } } } } } // Blood Mage Banish // Author: Noya // Description: Turns a unit ethereal and slows its movement speed by 50% for 18 seconds (at level 3). // Ethereal units cannot attack, but they can cast spells and will take 66% more damage from Magic attacks and spells. "blood_mage_banish" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_banish" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_DEAFENING_BLAST" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "0.0" "AbilityManaCost" "75 60 50" "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_spell_damage" "-66" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-50" } "03" { "var_type" "FIELD_FLOAT" "creep_duration" "12 15 18" } "04" { "var_type" "FIELD_FLOAT" "hero_duration" "4 5 6" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Pugna.Decrepify" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_banish" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_banish" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_banish" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_banish" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_ethereal" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/blood_mage/banish.lua" "Function" "Banish" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_ethereal" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/blood_mage/banish.lua" "Function" "BanishEnd" } } } } } // Blood Mage Flame Strike // Author: Noya // Description: Conjures a pillar of fire which damages ground units in a target area over time. "blood_mage_flame_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_flame_strike" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_SUN_STRIKE" "TargetsAllowed" "ground" "AbilityCastRange" "800" "AbilityCastPoint" "0.5" "AbilityCooldown" "10.0" "AbilityManaCost" "135" "AoERadius" "200" "BuildingReduction" "0.75" "precache" { "particle" "particles/units/heroes/hero_lina/lina_spell_light_strike_array.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_ground.vpcf" "particle" "particles/custom/phoenix_fire_spirit_ground.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_requiemofsouls_line_ground.vpcf" "particle" "particles/neutral_fx/black_dragon_fireball_lava_scorch.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lina.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "first_strike_dps" "45 80 110" } "03" { "var_type" "FIELD_FLOAT" "first_strike_duration" "3.0" } "04" { "var_type" "FIELD_INTEGER" "burn_dps" "5 10 15" } "05" { "var_type" "FIELD_INTEGER" "burn_duration" "6" } "06" { "var_type" "FIELD_INTEGER" "delay" "1.6" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeOrbThrow" "Target" "POINT" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeStart" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Invoker.SunStrike.Charge" "Target" "CASTER" } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } } "Modifiers" { "modifier_flame_strike_thinker1" { "IsHidden" "1" "Duration" "2.1" "Aura" "modifier_flame_strike_first_burn" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "OnCreated" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeDamage" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Damage" "%first_strike_dps" } "FireSound" { "EffectName" "Ability.LightStrikeArray" "Target" "TARGET" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_lina/lina_spell_light_strike_array.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_ground.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } } "ThinkInterval" "1" "OnIntervalThink" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_ground.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeSecond" } } } "modifier_flame_strike_thinker2" { "IsHidden" "1" "Duration" "%burn_duration" "Aura" "modifier_flame_strike_second_burn" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "OnCreated" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeDamage" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Damage" "%burn_dps" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/custom/phoenix_fire_spirit_ground.vpcf" "EffectAttachType" "follow_origin" } } "ThinkInterval" "1" "OnIntervalThink" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/custom/phoenix_fire_spirit_ground.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } } } "modifier_flame_strike_first_burn" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeDamage" "Damage" "%first_strike_dps" } } } "modifier_flame_strike_second_burn" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/blood_mage/flame_strike.lua" "Function" "FlameStrikeDamage" "Damage" "%burn_dps" } } } } } // Creates 3 floating orbs just for looks "blood_mage_orbs" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "precache" { "particle" "particles/custom/human/blood_mage/exort_orb.vpcf" } "Modifiers" { "modifier_blood_mage_orbs" { "IsHidden" "1" "Passive" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/blood_mage/orbs.lua" "Function" "AttachOrbs" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/blood_mage/orbs.lua" "Function" "RemoveOrbs" } } } } } // Blood Mage Phoenix // Author: Noya // Description: Summons a powerful Phoenix. The Phoenix burns with such intensity that it damages itself and nearby enemy units. Has Spell Immunity, and Resistant Skin. // When a Phoenix dies, it creates an egg that will hatch into a Phoenix. "blood_mage_phoenix" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_phoenix" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.2" "AbilityCooldown" "180.0" "AbilityManaCost" "175" "precache" { "particle" "particles/units/heroes/hero_phoenix/phoenix_ambient_glow.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_egg.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_base_attack.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_death.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts" "model" "models/heroes/phoenix/phoenix_bird.vmdl" "model" "models/heroes/phoenix/phoenix_egg.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "phoenix_damage_per_second" "25" } "02" { "var_type" "FIELD_INTEGER" "phoenix_egg_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "spawn_distance" "200" } "04" { "var_type" "FIELD_FLOAT" "negative_regen" "-5.0" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "KillPhoenix" } "SpawnUnit" { "UnitName" "human_phoenix" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "SummonLocation" "Target" "CASTER" "Count" "1" "distance" "%spawn_distance" } } "UnitCount" "1" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "RunScript" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } } } } } // Extra abilities "blood_mage_phoenix_reborn" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_phoenix" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "phoenix_damage_per_second" "25" } "02" { "var_type" "FIELD_INTEGER" "phoenix_egg_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "phoenix_immolation_radius" "400" } } "Modifiers" { "modifier_phoenix_reborn" { "Passive" "1" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_ambient_glow.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Phoenix.SuperNova.Begin" "Target" "CASTER" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "PhoenixDegen" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%phoenix_immolation_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%phoenix_damage_per_second" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "PhoenixEgg" } } } } } "blood_mage_phoenix_egg" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_phoenix" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_egg" { "Passive" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_phoenix/phoenix_supernova_egg.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/blood_mage/phoenix.lua" "Function" "PhoenixEggCheckReborn" } } // Prevent getting stuck "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Blood Mage Siphon Mana // Author: Noya, adapted from SpellLibrary lion_mana_drain_datadriven // Description: Transfers mana between the Blood Mage and a target. Drains mana from an enemy, or transfers mana to an ally. // Siphon Mana can push the Blood Mage's mana over its maximum value, though excess mana drains off rapidly if not used. "blood_mage_siphon_mana" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blood_mage_siphon_mana" "MaxLevel" "3" "CastFilterRejectCaster" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "RequiresTargetMana" "1" "AbilityCastRange" "600" "AbilityCastPoint" "0.1" "AbilityCooldown" "6.0" "AbilityChannelTime" "6" "AbilityManaCost" "10" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_mana_drain.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "6.0" } "02" { "var_type" "FIELD_INTEGER" "mana_per_second" "15 30 45" } "03" { "var_type" "FIELD_INTEGER" "break_distance" "800" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/blood_mage/siphon_mana.lua" "Function" "SiphonManaStart" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.ManaDrain" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_siphon_mana_channeling" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_siphon_mana" "Target" "TARGET" "Duration" "%duration" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/blood_mage/siphon_mana.lua" "Function" "SiphonManaEnd" "sound" "Hero_Lion.ManaDrain" } "RemoveModifier" { "ModifierName" "modifier_siphon_mana" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_siphon_mana_channeling" "Target" "CASTER" } } "Modifiers" { "modifier_siphon_mana_channeling" { "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_TELEPORT" } "modifier_siphon_mana" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/blood_mage/siphon_mana.lua" "Function" "SiphonMana" } } } "modifier_siphon_mana_extra" { "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MANA_BONUS" "%mana_per_second" } "Duration" "%duration" } } } // Crypt Lord Carrion Beetles // Author: Noya // Description: The Crypt Lord progenerates 1 Carrion Beetle from a target corpse to attack the Crypt Lord's enemies. Beetles are permanent but only 5 can be controlled at a time. "crypt_lord_carrion_beetles" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_carrion_beetles" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "900" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "30" "RequiresCorpsesAround" "900" "precache" { "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_weaver.vsndevts" "model" "models/heroes/weaver/weaver_bug.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "beetle_limit" "5" } "02" { "var_type" "FIELD_INTEGER" "beetle_damage" "8 16 24" } "03" { "var_type" "FIELD_INTEGER" "beetle_hp" "140 275 410" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/crypt_lord/carrion_beetles.lua" "Function" "CarrionBeetlesPrecast" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/crypt_lord/carrion_beetles.lua" "Function" "CarrionBeetleSpawn" } "FireSound" { "EffectName" "Hero_Weaver.SwarmCast" "Target" "CASTER" } } "Modifiers" { "modifier_carrion_beetle" { "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } "RunScript" { "ScriptFile" "mechanics/corpses.lua" "Function" "SetNoCorpse" } } "States" { "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDeath" { "RunScript" { "ScriptFile" "heroes/crypt_lord/carrion_beetles.lua" "Function" "RemoveDeadBeetle" } } } } } // Burrow Sub Ability "crypt_lord_beetle_burrow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_beetle_burrow" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_UNRESTRICTED" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_regen" "2" } } "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/crypt_lord/carrion_beetles.lua" "Function" "Burrow" "Move" "down" } "ApplyModifier" { "ModifierName" "modifier_burrow" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Weaver.SwarmCast" "Target" "CASTER" } } "OnToggleOff" { "RunScript" { "ScriptFile" "heroes/crypt_lord/carrion_beetles.lua" "Function" "Burrow" "Move" "up" } "RemoveModifier" { "ModifierName" "modifier_burrow" "Target" "CASTER" } } "Modifiers" { "modifier_burrow" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%hp_regen" } "States" { //"MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } } } } } // Crypt Lord Impale // Author: Noya, adapted from SpellLibrary's nyx_assassin_impale by kritth // Description: Slams the ground with the Crypt Lord's massive claws, shooting spiked tendrils out in a straight line, dealing damage and hurling enemy ground units into the air in their wake. "crypt_lord_impale" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_impale" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground,organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "9.0" "AbilityManaCost" "100" "AbilityDamage" "50 80 110" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "width" "125" } "02" { "var_type" "FIELD_FLOAT" "hero_duration" "1 2 3" } "02" { "var_type" "FIELD_FLOAT" "creep_duration" "2 3 4" } "03" { "var_type" "FIELD_INTEGER" "length" "700" } "04" { "var_type" "FIELD_INTEGER" "speed" "1600" } // Extra variables "05" { "var_type" "FIELD_FLOAT" "air_time" "0.52" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nyx_assassin.vsndevts" "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_impale.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_NyxAssassin.Impale" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_impale.vpcf" "StartRadius" "%width" "EndRadius" "%width" "MoveSpeed" "%speed" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "FixedDistance" "%length" "ProvidesVision" "0" "HasFrontalCone" "0" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/crypt_lord/impale.lua" "Function" "Impale" } } "Modifiers" { "modifier_impale" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } // Crypt Lord Locust Swarm // Author: Noya // Description: Creates a swarm of angry locusts that bite and tear at nearby enemy units. // As they chew the enemy flesh, they convert it into a substance that restores hit points to the Crypt Lord when they return. // Once "launched" the Locust Swarm will follow the Crypt Lord where he walks, heading out in an area around the Crypt Lord. // 20 Locusts are released. 0.2 second delay between releasing each Locust. Up to 7 Locusts can target an enemy unit at the same time. // Fraction of damage dealt by Locusts that will be returned and collected by Crypt Lord: 0.75. // The Locust must collect 20 hit points before returning it to the Crypt Lord. "crypt_lord_locust_swarm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_locust_swarm" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" //Locusts have magic attack type, but still physical damage "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "AbilityCastRange" "700" "AbilityCastPoint" "0.5" "AbilityCooldown" "180.0" "AbilityManaCost" "150" "precache" { "particle" "particles/units/heroes/hero_weaver/weaver_base_attack_bug.vpcf" "particle" "particles/units/heroes/hero_weaver/weaver_base_attack_explosion.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_weaver.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "800" } "02" { "var_type" "FIELD_INTEGER" "locusts" "20" } "03" { "var_type" "FIELD_INTEGER" "duration" "30" } "04" { "var_type" "FIELD_INTEGER" "locusts_speed" "400" } "05" { "var_type" "FIELD_INTEGER" "max_distance" "2000" //teleports } "06" { "var_type" "FIELD_INTEGER" "give_up_distance" "900" //Max distance to follow a target acquired } "07" { "var_type" "FIELD_FLOAT" "delay_between_locusts" "0.2" //Means 4 seconds to spawn all 20 locusts } "08" { "var_type" "FIELD_INTEGER" "locust_damage" "13" //Physical damage instance on each collision } "09" { "var_type" "FIELD_INTEGER" "locust_heal_threshold" "20" //The amount of physical damage that needs to be done to return and heal the caster } "10" { "var_type" "FIELD_INTEGER" "max_locusts_on_target" "7" //Max counter of units locked onto one target, find another or idle if this threshold is met } } "OnSpellStart" { "RemoveModifier" { "ModifierName" "modifier_locust_swarm" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_locust_swarm" "Target" "CASTER" "Duration" "%duration" } "FireSound" { "EffectName" "Hero_Weaver.SwarmCast" "Target" "CASTER" } } "Modifiers" { "modifier_locust_swarm" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/crypt_lord/locust_swarm.lua" "Function" "LocustSwarmStart" } } "OnDeath" { "FireSound" { "EffectName" "Hero_NyxAssassin.Death" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/crypt_lord/locust_swarm.lua" "Function" "LocustSwarmDeath" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/crypt_lord/locust_swarm.lua" "Function" "LocustSwarmEnd" } } } "modifier_locust" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/crypt_lord/locust_swarm.lua" "Function" "LocustSwarmPhysics" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_weaver/weaver_base_attack_bug.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" "TARGET" "attach_origin" "TARGET" "attach_origin" } } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING_FOR_PATHING_PURPOSES_ONLY" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Crypt Lord Skiped Carapace // Author: Noya // Description: The Crypt Lord forms barbed layers of chitinous armor that increases its defense and returns damage to enemy melee attackers. "crypt_lord_spiked_carapace" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_spiked_carapace" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "precache" { "particle" "particles/units/heroes/hero_centaur/centaur_return.vpcf" "particle" "particles/custom/creature_spiked_carapace.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "melee_damage_return" "15 25 35" } "02" { "var_type" "FIELD_INTEGER" "armor_bonus" "3 5 7" } } "Modifiers" { "modifier_spiked_carapace" { "Passive" "1" "EffectName" "particles/custom/creature_spiked_carapace.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus" } "OnAttacked" { "RunScript" { "ScriptFile" "heroes/crypt_lord/spiked_carapace.lua" "Function" "SpikedCarapace" "Damage" "%attack_damage" } } } } } // Dark Ranger Black Arrow // Author: Noya // Notes: Adds extra damage to attacks. Units killed while under the effect of Black Arrow will turn into Dark Minions. "dark_ranger_black_arrow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_black_arrow" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityManaCost" "10" "AbilityDamage" "2 10 20" "precache" { "particle" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "80" } "02" { "var_type" "FIELD_INTEGER" "dark_minion_health" "215 290 405" } "03" { "var_type" "FIELD_INTEGER" "dark_minion_damage" "10 16 18" } } "Modifiers" { "modifier_black_arrow_check" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/dark_ranger/black_arrow.lua" "Function" "OrbCheck" } } } "modifier_black_arrow" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } } "OnOrbImpact" { "ApplyModifier" { "ModifierName" "modifier_black_arrow_spawn" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" //No minion spawns from heroes } } "FireSound" { "EffectName" "Hero_Medusa.MysticSnake.Target" "Target" "CASTER" } "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } "modifier_black_arrow_spawn" { "IsHidden" "1" "Duration" "0.1" "OnDeath" { "RunScript" { "ScriptFile" "heroes/dark_ranger/black_arrow.lua" "Function" "SpawnMinion" } } } } } // Dark Ranger Charm // Author: Noya // Description: Takes control of a target enemy unit. Charm cannot be used on Heroes, or creeps above level 5. "dark_ranger_charm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_charm" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "TargetsAllowed" "organic" "MaxCreepLevel" "5" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "150.0" "AbilityManaCost" "70" "precache" { "particle" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/dark_ranger/charm.lua" "Function" "Charm" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "EffectName" "Hero_Chen.HolyPersuasionCast" "Target" "CASTER" } } } // Dark Ranger Life Drain // Author: Noya // Description: Absorbs the life essence of a target enemy unit by taking hit points from it every second and giving them to the Dark Ranger. "dark_ranger_life_drain" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_life_drain" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "50" "AbilityChannelTime" "8" "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_life_drain.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_drain_per_second" "25 40 55" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_life_drain" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Pugna.LifeDrain.Target" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_life_drain" "Target" "TARGET" } } "Modifiers" { "modifier_life_drain" { "IsDebuff" "1" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_pugna/pugna_life_drain.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "ThinkInterval" "1.0" "OnIntervalThink" { // Health Transfer "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%hp_drain_per_second" } "Heal" { "Target" "CASTER" "HealAmount" "%hp_drain_per_second" } // Looping Animation "ApplyModifier" { "ModifierName" "modifier_channelling_animation" "Target" "CASTER" } } } "modifier_channelling_animation" { "IsHidden" "1" "Duration" "0.9" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_2" } } } // Dark Ranger Silence // Author: Noya // Description: Stops all enemies in a target area from casting spells. The area of effect and duration increase with level. "dark_ranger_silence" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_silence" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "900" "AbilityCastPoint" "0.3" "AbilityCooldown" "15.0" "AbilityManaCost" "75" "AOERadius" "%radius" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_silence.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_silence_impact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200 275 350" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "8 10 12" } "03" { "var_type" "FIELD_FLOAT" "creep_duration" "16 20 24" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } "FireEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_silence.vpcf" "EffectAttachType" "world_origin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_silence_impact.vpcf" "EffectAttachType" "follow_overhead" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "ControlPoints" { "00" "1 0 0" } } "FireSound" { "EffectName" "Hero_DeathProphet.Silence" "TargetPoint" "POINT" // This works but its actually fired at the caster } } //modifier_silence is a Built-In modifier, _silenced is custom "Modifiers" { "modifier_silenced" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_silenced.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Death Knight Animate Dead // Author: Noya // Description: Raises 6 dead units in an area to fight for the Death Knight. Animated units are invulnerable. "death_knight_animate_dead" { "BaseClass" "ability_datadriven" "AbilityTextureName" "death_knight_animate_dead" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "900" "AbilityCastPoint" "0.453" "AbilityCooldown" "180" "AbilityManaCost" "175" "RequiresCorpsesAround" "900" "precache" { "particle" "particles/custom/abaddon_death_coil_explosion.vpcf" "particle" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" "particle" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "40" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } "03" { "var_type" "FIELD_INTEGER" "max_units_resurrected" "6" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Abaddon.AphoticShield.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/death_knight/animate_dead.lua" "Function" "AnimateDead" } } "Modifiers" { "modifier_animate_dead" { "OnCreated" { "AttachEffect" { "EffectName" "particles/custom/abaddon_death_coil_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" // Control Point 0 "TARGET" "attach_origin" // Control Point 1 } } } "StatusEffectName" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" "StatusEffectPriority" "15" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Death Knight Death Coil // Author: Noya // Description: A coil of death that can damage an enemy living unit or heal a friendly undead unit. "death_knight_death_coil" { "BaseClass" "ability_lua" "ScriptFile" "heroes/death_knight/death_coil.lua" "AbilityTextureName" "death_knight_death_coil" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "TargetsAllowed" "organic" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastPoint" "0.452" "precache" { "particle" "particles/custom/vengeful_magic_missle.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" } "AbilityCastRange" "800" "AbilityCooldown" "6" "AbilityManaCost" "75" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "projectile_speed" "1100" } "02" { "var_type" "FIELD_FLOAT" "target_damage" "100 200 300" } "03" { "var_type" "FIELD_INTEGER" "heal_amount" "200 400 600" } } } // Death Knight Death Pact // Author: Noya // Description: Kills a target friendly unit, giving a percentage of its hit points to the Death Knight. "death_knight_death_pact" { "BaseClass" "ability_datadriven" "AbilityTextureName" "death_knight_death_pact" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "TargetsAllowed" "organic" "AbilityCastRange" "800" "AbilityCastPoint" "0.452" "AbilityCooldown" "15" "AbilityManaCost" "50" "RequiresHealthDeficit" "self" "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_death_pact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "conversion_rate" "100 200 300" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/death_knight/death_pact.lua" "Function" "DeathPactPrecast" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Clinkz.DeathPact.Cast" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_death_pact.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/death_knight/death_pact.lua" "Function" "DeathPact" } "FireSound" { "EffectName" "Hero_Clinkz.DeathPact" "Target" "TARGET" } } } // Death Knight Unholy Aura // Author: Noya // Description: Increases the movement speed and life regeneration rate of nearby friendly units. "death_knight_unholy_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/death_knight/unholy_aura.lua" "AbilityTextureName" "death_knight_unholy_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "move_speed_bonus" "10 20 30" } "02" { "var_type" "FIELD_FLOAT" "health_regen_bonus" "0.5 1 1.5" } "03" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Demon Hunter Demon Form // Author: Noya // Description: Transforms the Demon Hunter into a powerful demon with a ranged attack (60 range) and 500 bonus hit points. "demon_hunter_demon_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "demon_hunter_demon_form" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityCooldown" "180" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "bonus_health" "500" } "03" { "var_type" "FIELD_INTEGER" "bonus_health_regen" "3" } "04" { "var_type" "FIELD_INTEGER" "bonus_range" "422" } "05" { "var_type" "FIELD_INTEGER" "range_tooltip" "600" } "06" { "var_type" "FIELD_FLOAT" "transformation_time" "0.8" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_terrorblade.vsndevts" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis.vpcf" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_transform.vpcf" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_base_attack.vpcf" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_ambient.vpcf" "model" "models/heroes/terrorblade/demon.vmdl" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Terrorblade.Metamorphosis" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_transform.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_demon_form_transform" "Target" "CASTER" } } "Modifiers" { "modifier_demon_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_2" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_demon_form" "Target" "CASTER" "Duration" "%duration" } } } } } // Demon Hunter Evasion // Author: Noya // Description: Gives the Demon Hunter a chance to avoid attacks. "demon_hunter_evasion" { "BaseClass" "ability_datadriven" "AbilityTextureName" "demon_hunter_evasion" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "evasion" "10 20 30" } } "Modifiers" { "modifier_evasion" { "IsHidden" "1" "Passive" "1" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion" } } } } // Demon Hunter Immolation // Author: Noya // Description: Engulfs the Demon Hunter in flames, causing damage to nearby enemy land units. Drains mana until deactivated. "demon_hunter_immolation" { "BaseClass" "ability_lua" "ScriptFile" "heroes/demon_hunter/immolation.lua" "AbilityTextureName" "demon_hunter_immolation" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground,organic" "AbilityCastRange" "160" "AbilityManaCost" "35" "precache" { "particle" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "10 15 20" } "02" { "var_type" "FIELD_INTEGER" "mana_cost_per_second" "5" } "03" { "var_type" "FIELD_INTEGER" "radius" "160" } } } // Demon Hunter Mana Burn // Author: Noya // Description: Sends a bolt of negative energy that burns a target enemy unit's mana. Burned mana combusts, dealing damage to the target equal to the amount of mana burned. "demon_hunter_mana_burn" { "BaseClass" "ability_datadriven" "AbilityTextureName" "demon_hunter_mana_burn" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "RequiresTargetMana" "1" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "AbilityCastRange" "300" "AbilityCastPoint" "0.3" "AbilityCooldown" "7.0 6.0 5.0" "AbilityManaCost" "50" "precache" { "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_mana_burn.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nyx_assassin.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_burn" "50 100 150" } "02" { "var_type" "FIELD_INTEGER" "damage_per_mana" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_NyxAssassin.ManaBurn.Target" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_mana_burn.vpcf" "EffectAttachType" "follow_origin" } "RunScript" { "ScriptFile" "heroes/demon_hunter/mana_burn.lua" "Function" "ManaBurn" } } } // Dread Lord Carrion Swarm // Author: Noya // Description: Sends a horde of bats to damage enemies. "dread_lord_carrion_swarm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_carrion_swarm" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "10.0" "AbilityManaCost" "110" "AbilityDamage" "75 125 200" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_carrion_swarm.vpcf" //Can't attach the bats "particle" "particles/econ/items/death_prophet/death_prophet_acherontia/death_prophet_acher_swarm.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_damage" "300 600 1000" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/dread_lord/carrion_swarm.lua" "Function" "CarrionSwarmStart" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/econ/items/death_prophet/death_prophet_acherontia/death_prophet_acher_swarm.vpcf" "MoveSpeed" "1100" "StartRadius" "150" "EndRadius" "300" "StartPosition" "attach_attack1" "FixedDistance" "700" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_DeathProphet.CarrionSwarm" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_DeathProphet.CarrionSwarm.Damage" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/dread_lord/carrion_swarm.lua" "Function" "CarrionSwarmDamage" } } } // Dread Lord Inferno // Author: Noya // Description: Calls an Infernal down from the sky, dealing 50 damage and stunning enemy land units for 4 seconds in an area. The Infernal lasts 180 seconds. "dread_lord_inferno" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_inferno" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground,organic" "AbilityCastRange" "900" "AbilityCastPoint" "0.3" "AbilityCooldown" "180" "AbilityManaCost" "175" "AbilityDamage" "50" "AOERadius" "250" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "infernal_duration" "180" } "03" { "var_type" "FIELD_FLOAT" "stun_hero_duration" "2" } "04" { "var_type" "FIELD_FLOAT" "stun_creep_duration" "4" } } "precache" { "particle" "particles/custom/warlock_rain_of_chaos_start.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_warlock.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/dread_lord/inferno.lua" "Function" "SpawnInferno" "Target" "POINT" } } "Modifiers" { "modifier_inferno_stun" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } // Ability for the Infernal Unit "dread_lord_inferno_immolation" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_inferno_immolation" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground,organic" "AbilityCastRange" "220" "precache" { "particle" "particles/items2_fx/radiance.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "220" } "02" { "var_type" "FIELD_INTEGER" "dps" "10" } } "Modifiers" { "modifier_inferno_immolation" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_inferno_immolation_burn" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "EffectName" "particles/items2_fx/radiance.vpcf" "EffectAttachType" "attach_hitloc" } "modifier_inferno_immolation_burn" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%dps" "Target" "TARGET" } } } } } // Dread Lord Sleep // Author: Noya // Description: Puts a target enemy unit to sleep. A sleeping unit can be awoken by attacking it. "dread_lord_sleep" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_sleep" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75 130 200" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hero_duration" "5 10 15" } "02" { "var_type" "FIELD_INTEGER" "creep_duration" "20 40 60" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bane.Nightmare" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_sleep" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_sleep" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_sleep" { "IsPurgable" "1" "IsDebuff" "1" "EffectName" "particles/custom/undead/sleep.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_nightmare.vpcf" "StatusEffectPriority" "10" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NIGHTMARED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_LOW_ATTACK_PRIORITY" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "OnTakeDamage" { "RemoveModifier" { "Target" "UNIT" "ModifierName" "modifier_sleep" } } } } } // Dread Lord Vampiric Aura // Author: Noya // Description: Nearby friendly melee units gain hit points when they hit a unit. "dread_lord_vampiric_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/dread_lord/vampiric_aura.lua" "AbilityTextureName" "dread_lord_vampiric_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lifesteal" "15 30 45" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Far Seer Chain Lightning // Author: Noya // Description: Hurls a bolt of damaging lightning at a target enemy that jumps to nearby enemies. Each jump deals less damage. "far_seer_chain_lightning" { "BaseClass" "ability_datadriven" "AbilityTextureName" "far_seer_chain_lightning" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.2" "AbilityCooldown" "9.0" "AbilityManaCost" "120" "precache" { "particle" "particles/items_fx/chain_lightning.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lightning_damage" "85 125 180" } "02" { "var_type" "FIELD_INTEGER" "lightning_bounces" "4 6 8" } "03" { "var_type" "FIELD_INTEGER" "bounce_range" "500" } "04" { "var_type" "FIELD_INTEGER" "lightning_decay" "20" } "05" { "var_type" "FIELD_FLOAT" "time_between_bounces" "0.2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/far_seer/chain_lightning.lua" "Function" "ChainLightning" } } } // Far Seer Earthquake // Author: Noya // Description: Makes the ground tremble and break, causing 50 damage per second to buildings and slowing units by 75% within area of effect. Lasts 25 seconds. "far_seer_earthquake" { "BaseClass" "ability_datadriven" "AbilityTextureName" "far_seer_earthquake" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_STATIC_STORM" "AnimationPlaybackRate" "0.8" "TargetsAllowed" "ground" "AbilityCastRange" "1000" "AbilityCastPoint" "0.5" "AbilityCooldown" "90.0" "AbilityManaCost" "150" "AbilityChannelTime" "25.0" "AOERadius" "%radius" "precache" { "particle" "particles/units/heroes/hero_leshrac/leshrac_split_earth.vpcf" "particle" "particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_echoslam_start_egset.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_leshrac.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "25" } "02" { "var_type" "FIELD_INTEGER" "building_damage_per_sec" "50" } "03" { "var_type" "FIELD_INTEGER" "radius" "250" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_slow_pct" "-75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/far_seer/earthquake.lua" "Function" "EarthquakeStart" "Target" "POINT" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/far_seer/earthquake.lua" "Function" "EarthquakeEnd" } } } // Far Seer Far Sight // Author: Noya // Description: Reveals the area of the map that is cast upon. Also reveals invisible units. "far_seer_far_sight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "far_seer_far_sight" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.3" "AbilityCooldown" "0.0" "AbilityManaCost" "75 60 50" "precache" { "particle" "particles/items_fx/dust_of_appearance.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_magnataur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "600 1800 4000" } "02" { "var_type" "FIELD_INTEGER" "duration" "8" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/far_seer/far_sight.lua" "Function" "FarSight" "Target" "POINT" } } } // Far Seer Feral Spirit // Author: Noya // Description: Summons Spirit Wolves to fight enemies for a limited time. // Level 1: Summons Two Spirit Wolves // Level 2: Summons Two Dire Wolves // Level 3: Summons Two Shadow Wolves "far_seer_feral_spirit" { "BaseClass" "ability_datadriven" "AbilityTextureName" "far_seer_feral_spirit" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.3" "AbilityCooldown" "30.0 25.0 25.0" "AbilityManaCost" "75" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_spawn.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_claw_blur.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_claw_blur_b.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "wolf_duration" "60" } "02" { "var_type" "FIELD_INTEGER" "wolf_damage" "11 16 21" } "03" { "var_type" "FIELD_INTEGER" "wolf_hp" "200 300 500" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lycan.SummonWolves" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" } } "RunScript" { "ScriptFile" "heroes/far_seer/feral_spirit.lua" "Function" "SpawnWolves" } } } //20% double damage crit (Level 2 and 3 Wolves) "far_seer_wolves_critical_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lycan_summon_wolves_critical_strike" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_bonus" "200" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "20" } } "Modifiers" { "modifier_critical_strike" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "ApplyModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } "modifier_critical_strike_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_bonus" } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } // Fire Lord Incinerate // Author: Noya // Description: Each attack made is enchanced with living flames that cling to the target. // These flames add a small amount of damage on the first attack, twice as much on the second attack, three times as much on the third attack, etc. // If the unit dies while under this effect, it is incinerated, causing significant damage to all nearby hostile units. "firelord_incinerate" { "BaseClass" "ability_datadriven" "AbilityTextureName" "firelord_incinerate" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0.0" "AbilityCooldown" "0.0" "AbilityManaCost" "6" "precache" { "particle" "particles/custom/ogre_magi_fireblast.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_desolation/sf_base_attack_desolation.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "bonus_reset_time" "6" } "02" { "var_type" "FIELD_INTEGER" "damage_per_stack" "1 2 3" } "03" { "var_type" "FIELD_INTEGER" "incineration_damage" "30 45 60" } "04" { "var_type" "FIELD_INTEGER" "incineration_radius" "150" } } "Modifiers" { "modifier_incinerate_orb_check" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/firelord/incinerate.lua" "Function" "OrbCheck" } } } "modifier_incinerate_orb" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/econ/items/shadow_fiend/sf_desolation/sf_base_attack_desolation_fire_arcana.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } } "OnOrbImpact" { "RunScript" { "ScriptFile" "heroes/firelord/incinerate.lua" "Function" "IncinerateAttack" } "FireSound" { "EffectName" "Hero_Nevermore.Raze_Flames" "Target" "TARGET" } } } "modifier_incinerate_stack" { "IsDebuff" "1" "OnDeath" { "RunScript" { "ScriptFile" "heroes/firelord/incinerate.lua" "Function" "IncinerateDeath" } } } } } // Firelord Soul Burn // Author: Noya // Description: Wreaths an enemy unit in magical flames which cause damage over time, prevent the casting of spells, and reduce attack damage by 50%. "firelord_soul_burn" { "BaseClass" "ability_datadriven" "AbilityTextureName" "firelord_soul_burn" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_RAZE_3" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "12.0" "AbilityManaCost" "85" "precache" { "particle" "particles/units/heroes/hero_axe/axe_battle_hunger.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "7 14 21" } "03" { "var_type" "FIELD_INTEGER" "hero_duration" "6 7 8" } "03" { "var_type" "FIELD_INTEGER" "creep_duration" "14 16 18" } "04" { "var_type" "FIELD_INTEGER" "damage_reduction" "-50" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Nevermore.Shadowraze" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_soul_burn" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_soul_burn" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_soul_burn" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_axe/axe_battle_hunger.vpcf" "EffectAttachType" "follow_overhead" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction" } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Firelord Summon Lava Spawn // Author: Noya // Description: Summons a Lava Spawn, a resilient and deadly fire creature. As a Lava Spawn deals damage, it consumes the flesh of its target, eventually splitting into two healthy Lava Spawns. "firelord_summon_lava_spawn" { "BaseClass" "ability_datadriven" "AbilityTextureName" "firelord_summon_lava_spawn" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_RAZE_2" "AbilityCastPoint" "0.5" "AbilityCooldown" "32.0" "AbilityManaCost" "150" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_forged_spirit_projectile.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_shadowraze.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_forge_spirit_death.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "model" "models/items/invoker/forge_spirit/cadenza_spirit/cadenza_spirit.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lava_spawn_duration" "70" } "02" { "var_type" "FIELD_INTEGER" "attacks_to_split" "15" } "03" { "var_type" "FIELD_INTEGER" "lava_spawn_damage" "11 16 21" } "04" { "var_type" "FIELD_INTEGER" "lava_spawn_hp" "425 550 700" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.ForgeSpirit" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/firelord/summon_lava_spawn.lua" "Function" "LavaSpawn" } } "Modifiers" { "modifier_lava_spawn" { "IsHidden" "1" "EffectName" "particles/units/heroes/hero_invoker/invoker_forge_spirit_ambient.vpcf" "EffectAttachType" "follow_origin" "OnDeath" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_forge_spirit_death.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ControlPoints" { "03" "1 0 0" } } } } "modifier_lava_spawn_replicate" { "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/firelord/summon_lava_spawn.lua" "Function" "LavaSpawnAttackCounter" } } } } } // Fire Lord Volcano // Author: Noya // Description: Causes the ground to erupt into a massive Volcano. Every 5 seconds, a wave of molten rocks is hurled from the Volcano at nearby ground units and buildings, // causing 100 damage to each target and stunning it for 2 seconds. Buildings take 2 times more damage from molten rocks than units do. // Stuns all friendly units except for the hero channelling. "firelord_volcano" { "BaseClass" "ability_datadriven" "AbilityTextureName" "firelord_volcano" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground" "AbilityCastRange" "800" "AbilityCastPoint" "1.67" "AbilityCooldown" "180.0" "AbilityManaCost" "200" "AOERadius" "%radius" "AbilityChannelTime" "35.0" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" "particle" "particles/custom/sf_fire_arcana_wings.vpcf" "particle" "particles/custom/warlock_rain_of_chaos_explosion.vpcf" "particle" "particles/custom/sf_fire_arcana_base_attack_impact.vpcf" "particle" "particles/custom/custom_stunned.vpcf" "particle" "models/particle/soil_rupture.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } "02" { "var_type" "FIELD_FLOAT" "wave_interval" "5.0" } "03" { "var_type" "FIELD_INTEGER" "wave_damage" "100" //buildings take *2 } "04" { "var_type" "FIELD_INTEGER" "stun_duration" "2" } } "OnAbilityPhaseStart" { "ApplyModifier" { "ModifierName" "modifier_volcano_channelling" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Nevermore.RequiemOfSoulsCast" "Target" "CASTER" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "VolcanoStart" "Target" "POINT" } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } "FireSound" { "EffectName" "Hero_EmberSpirit.FlameGuard.Loop" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "VolcanoEnd" } "RemoveModifier" { "ModifierName" "modifier_volcano_channelling" "Target" "CASTER" } } "Modifiers" { "modifier_volcano_channelling" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "StartChannelingAnimation" } } "OnOrder" { "RemoveModifier" { "ModifierName" "modifier_volcano_channelling" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "StopChannelingAnimation" } } } "modifier_volcano_thinker" { "States" { //"MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "EffectName" "particles/custom/sf_fire_arcana_wings.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "VolcanoWave" } "FireEffect" { "EffectName" "particles/custom/warlock_rain_of_chaos_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Nevermore.RequiemOfSouls" "Target" "CASTER" } } "ThinkInterval" "%wave_interval" "OnIntervalThink" { "FireEffect" { "EffectName" "particles/custom/warlock_rain_of_chaos_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Nevermore.RequiemOfSouls" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/firelord/volcano.lua" "Function" "VolcanoWave" } } } "modifier_volcano_stun" { "IsDebuff" "1" "EffectName" "particles/custom/sf_fire_arcana_base_attack_impact.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Nevermore.RequiemOfSouls.Damage" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" } } } // Keeper Entangling Roots // Author: Noya // Description: Causes roots to burst from the ground, immobilizing and damaging a target enemy. "keeper_entangling_roots" { "BaseClass" "ability_datadriven" "AbilityTextureName" "keeper_entangling_roots" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "8.0" "AbilityManaCost" "75" "precache" { "particle" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_body_cauldron.vpcf" "particle" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_cauldron.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_entangle_body.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_treant.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "15 15 25" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "3 4 5" } "03" { "var_type" "FIELD_INTEGER" "creep_duration" "9 24 36" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Treant.Overgrowth.Cast" "Target" "TARGET" } "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "ApplyModifier" { "ModifierName" "modifier_entangling_roots" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_entangling_roots" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_entangling_roots" { "IsPurgable" "1" "IsDebuff" "1" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_bear_entangle_body.vpcf" "EffectAttachType" "attach_hitloc" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_body_cauldron.vpcf" "EffectAttachType" "attach_hitloc" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_cauldron.vpcf" "EffectAttachType" "attach_hitloc" } "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } } } } // Keeper Force of Nature // Author: Noya // Description: Converts an area of trees into Treants. Treants can attack land units. "keeper_force_of_nature" { "BaseClass" "ability_datadriven" "AbilityTextureName" "keeper_force_of_nature" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "20.0" "AbilityManaCost" "125" "AOERadius" "%radius" "precache" { "particle" "particles/units/heroes/hero_furion/furion_force_of_nature_cast.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_furion.vsndevts" "model" "models/items/furion/treant/father_treant/father_treant.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "treant_count" "2 3 4" } "02" { "var_type" "FIELD_FLOAT" "duration" "60.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "150 225 300" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/keeper/force_of_nature.lua" "Function" "CheckTrees" "Target" "POINT" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/keeper/force_of_nature.lua" "Function" "ForceOfNature" "Target" "POINT" } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } "FireSound" { "EffectName" "Hero_Furion.ForceOfNature" "Target" "CASTER" } } } // Keeper Thorns Aura // Author: Noya // Description: An aura that gives friendly units around the Keeper of the Grove a damage shield, which wounds enemy melee attackers. "keeper_thorns_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/keeper/thorns_aura.lua" "AbilityTextureName" "keeper_thorns_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "melee_damage_return" "10 20 30" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Keeper of the Grove Tranquility // Author: Noya // Description: Causes a rain of healing energy to pour down in a large area, healing friendly allied units for 20 hit points per second. "keeper_tranquility" { "BaseClass" "ability_lua" "ScriptFile" "heroes/keeper/tranquility.lua" "AbilityTextureName" "keeper_tranquility" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "60" "AbilityChannelTime" "30" "AbilityManaCost" "125" "precache" { "particle" "particles/units/heroes/hero_luna/luna_eclipse.vpcf" "particle" "particles/neutral_fx/troll_heal.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "02" { "var_type" "FIELD_INTEGER" "heal_per_second" "20" } "03" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Lich Dark Ritual, Warcraft version // Author: Noya // Description: Sacrifices a target friendly unit to convert its hit points into mana for the Lich. "lich_dark_ritual_warcraft" { "BaseClass" "ability_lua" "ScriptFile" "heroes/lich/dark_ritual.lua" "AbilityTextureName" "lich_dark_ritual_warcraft" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "15.0" "AbilityManaCost" "25" "precache" { "particle" "particles/units/heroes/hero_lich/lich_dark_ritual.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_conversion" "33 66 100" } } } // Lich Death and Decay // Author: Noya // Description: Damages everything in its area of effect by 4% of its base hit points per second. "lich_death_and_decay" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lich_death_and_decay" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "1000" "AbilityCastPoint" "0.3" "AbilityCooldown" "150.0" "AbilityManaCost" "250" "AOERadius" "%radius" "AbilityChannelTime" "35.0" "precache" { "particle" "particles/units/heroes/hero_enigma/enigma_blackhole.vpcf" "particle" "particles/custom/enigma_midnight_pulse.vpcf" "particle" "particles/custom/enigma_malefice.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_percent_damage_per_sec" "4" } "02" { "var_type" "FIELD_INTEGER" "radius" "300" } "03" { "var_type" "FIELD_FLOAT" "duration" "35.0" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/lich/death_and_decay.lua" "Function" "DeathAndDecayStart" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Lich.ChainFrostLoop" "Target" "CASTER" } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/lich/death_and_decay.lua" "Function" "DeathAndDecayEnd" } "FireSound" { "EffectName" "Hero_Lich.ChainFrostImpact.LF" "Target" "CASTER" } } "Modifiers" { "modifier_death_and_decay_thinker" { "IsHidden" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/lich/death_and_decay.lua" "Function" "DeathAndDecayDamage" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } } } } // Lich Frost Armor // Author: Noya // Description: Creates a shield of frost around a target friendly unit. The shield adds armor and slows melee units that attack it. "lich_frost_armor_warcraft" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lich_frost_armor_warcraft" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "2.0" "AbilityManaCost" "40" "AbilityDuration" "45" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_bonus" "3 5 7" } "02" { "var_type" "FIELD_FLOAT" "slow_duration" "5.0" } "03" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-50" } "04" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-25" } // Extra values to control the Autocast AI "05" { "var_type" "FIELD_INTEGER" "autocast_radius" "900" } } "precache" { "particle" "particles/units/heroes/hero_lich/lich_frost_armor.vpcf" "particle" "particles/status_fx/status_effect_frost_armor.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lich.FrostArmor" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_frost_armor" "Target" "TARGET" "Duration" "%AbilityDuration" } } "Modifiers" { "modifier_frost_armor" { "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "FrostArmorParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "EndFrostArmorParticle" } } "StatusEffectName" "particles/status_fx/status_effect_frost_armor.vpcf" "StatusEffectPriority" "10" //Frost Armor only slows units that attack the unit with a Melee attack. "OnAttacked" { "ApplyModifier" { "ModifierName" "modifier_frost_armor_slow" "Target" { "Center" "ATTACKER" "Flags" "DOTA_UNIT_TARGET_FLAG_MELEE_ONLY" } "Duration" "%slow_duration" } "FireSound" { "EffectName" "Hero_Lich.FrostArmorDamage" "Target" "TARGET" } } } "modifier_frost_armor_slow" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" } } "modifier_frost_armor_autocast_aura" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_frost_armor_autocast_attacked" "Aura_Radius" "%autocast_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "modifier_frost_armor_autocast_attacked" { "IsHidden" "1" "OnAttacked" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "FrostArmorAutocast" } } } } } // Lich Frost Nova, Warcraft version // Author: Noya // Description: Blasts enemy units around a target enemy unit with a wave of damaging frost that slows movement and attack rate. "lich_frost_nova_warcraft" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lich_frost_nova_warcraft" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "125" "AbilityDamage" "100" "AoERadius" "200" "precache" { "particle" "particles/units/heroes/hero_lich/lich_frost_nova.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-30" } "03" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-20" } "04" { "var_type" "FIELD_INTEGER" "aoe_damage" "50 100 150" } "05" { "var_type" "FIELD_INTEGER" "slow_hero_duration" "2 3 4" } "06" { "var_type" "FIELD_INTEGER" "slow_creep_duration" "4 6 8" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_lich/lich_frost_nova.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Ability.FrostNova" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%AbilityDamage" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_frost_nova_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%slow_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_frost_nova_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%slow_creep_duration" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%aoe_damage" } } } } "Modifiers" { "modifier_frost_nova_slow" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed" } } } } // Mountain King Avatar // Author: Noya // Description: Activate Avatar to temporarily give the Mountain King 5 bonus armor, 500 bonus hit points, 20 bonus damage and spell immunity. "mountain_king_avatar" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_avatar" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCooldown" "180" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "armor_bonus" "5" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "20" } "04" { "var_type" "FIELD_INTEGER" "health_bonus" "500" } "05" { "var_type" "FIELD_INTEGER" "model_size" "20" } } "precache" { "particle" "particles/units/heroes/hero_alchemist/alchemist_chemical_rage.vpcf" "particle" "particles/items_fx/black_king_bar_avatar.vpcf" "particle" "particles/status_fx/status_effect_chemical_rage.vpcf" } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_avatar" } "FireSound" { "Target" "CASTER" "EffectName" "DOTA_Item.BlackKingBar.Activate" } } "Modifiers" { "modifier_avatar" { "Duration" "%duration" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/items_fx/black_king_bar_avatar.vpcf" "EffectAttachType" "follow_origin" } "RunScript" { "ScriptFile" "heroes/mountain_king/avatar.lua" "Function" "AvatarResize" } } "EffectName" "particles/units/heroes/hero_alchemist/alchemist_chemical_rage.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_chemical_rage.vpcf" "StatusEffectPriority" "5" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" "MODIFIER_PROPERTY_HEALTH_BONUS" "%health_bonus" } "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Mountain King Bash // Author: Noya // Description: Gives a chance that the Mountain King's attack will do 25 bonus damage and stun his opponent for 2 seconds (1 second for Heroes). "mountain_king_bash" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_bash" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityDamage" "25" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts" "particle" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bash_chance" "20 30 40" } "02" { "var_type" "FIELD_FLOAT" "stun_hero_duration" "1.0" } "03" { "var_type" "FIELD_FLOAT" "stun_creep_duration" "5.0" } } "Modifiers" { "modifier_bash" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "Random" { "Chance" "%bash_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_FACELESS_BASH" "OnSuccess" { "ApplyModifier" { "ModifierName" "modifier_bash_stun" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Duration" "%stun_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_bash_stun" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Duration" "%stun_creep_duration" } "ActOnTargets" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "FireSound" { "EffectName" "Hero_FacelessVoid.TimeLockImpact" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } } } } } "modifier_bash_stun" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "StatusEffectPriority" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Mountain King Storm Bolt // Author: Noya // Description: A magical hammer that is thrown at an enemy unit, causing damage and stunning the target. "mountain_king_storm_bolt" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_storm_bolt" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "TargetsAllowed" "organic" "AbilityManaCost" "75" "AbilityDamage" "100 225 350" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bolt_speed" "750" } "02" { "var_type" "FIELD_FLOAT" "stun_hero_duration" "2.0" } "03" { "var_type" "FIELD_FLOAT" "stun_creep_duration" "5.0" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "225" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sven.vsndevts" "particle" "particles/units/heroes/hero_sven/sven_spell_storm_bolt.vpcf" "particle" "particles/units/heroes/hero_sven/sven_storm_bolt_projectile_explosion.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_sven/sven_spell_storm_bolt.vpcf" "Dodgeable" "1" "ProvidesVision" "1" "VisionRadius" "%vision_radius" "MoveSpeed" "%bolt_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_Sven.StormBolt" "Target" "CASTER" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Sven.StormBoltImpact" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_sven/sven_storm_bolt_projectile_explosion.vpcf" "EffectAttachType" "attach_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" "TARGET" "attach_origin" "TARGET" "attach_origin" //CP3 has a child explosion origin } } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_storm_bolt" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%stun_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_storm_bolt" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%stun_creep_duration" } } "Modifiers" { "modifier_storm_bolt" { "IsDebuff" "1" "Duration" "%stun_hero_duration" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Mountain King Thunder Clap // Author: Noya // Description: Slams the ground, damaging nearby enemy units. Units are also slowed for the duration listed below. "mountain_king_thunder_clap" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_thunder_clap" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground,organic" "AbilityCastRange" "250 300 350" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "90" "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap_debuff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250 300 350" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.0 3.0" } "03" { "var_type" "FIELD_FLOAT" "duration_creeps" "5.0 5.0 5.0" } "04" { "var_type" "FIELD_INTEGER" "damage" "60 100 140" } "05" { "var_type" "FIELD_INTEGER" "movement_slow" "-50 -50 -50" } "06" { "var_type" "FIELD_INTEGER" "attack_speed_slow" "-50 -50 -50" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Brewmaster.ThunderClap" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_thunder_clap" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_thunder_clap" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration_creeps" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "Modifiers" { "modifier_thunder_clap" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap_debuff.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_brewmaster_thunder_clap.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%movement_slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%attack_speed_slow" } "OnCreated" { "FireSound" { "EffectName" "Hero_Brewmaster.ThunderClap.Target" "Target" "TARGET" } } } } } // Naga Sea Witch Forked Lightning // Author: Noya // Description: Calls forth a cone of lightning to damage enemies. Hits a maximum of 3 units. "naga_sea_witch_forked_lightning" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_forked_lightning" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCooldown" "11" "AbilityCastPoint" "0.4" "AbilityCastRange" "900" "AbilityManaCost" "110" "AbilityDamage" "85 160 250" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_units" "3" } } "precache" { "particle" "particles/items_fx/chain_lightning.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts" } "OnSpellStart" { "LinearProjectile" { "Target" "TARGET" "EffectName" "particles/custom/linear_projectile.vpcf" "MoveSpeed" "3000" "StartRadius" "50" "EndRadius" "500" "StartPosition" "attach_attack1" "FixedDistance" "700" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "HasFrontalCone" "1" "ProvidesVision" "0" } "RunScript" { "ScriptFile" "heroes/naga_sea_witch/forked_lightning.lua" "Function" "ForkedLightningStart" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/naga_sea_witch/forked_lightning.lua" "Function" "ForkedLightning" } } } // Naga Sea Witch Frost Arrows // Author: Noya // Description: Adds a cold effect to each attack, slowing a target enemy unit's attacks and movement. "naga_sea_witch_frost_arrows" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_frost_arrows" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "600" "AbilityManaCost" "10" "AbilityDamage" "5 10 15" "precache" { "particle" "particles/econ/items/drow/drow_bow_monarch/drow_frost_arrow_monarch.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "slow_hero_duration" "1.5" } "02" { "var_type" "FIELD_FLOAT" "slow_creep_duration" "5" } "03" { "var_type" "FIELD_INTEGER" "slow_percentage" "-20 -35 -50" } } "Modifiers" { "modifier_frost_arrows" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/econ/items/drow/drow_bow_monarch/drow_frost_arrow_monarch.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_DrowRanger.FrostArrows" "Target" "CASTER" } } "OnOrbImpact" { "ApplyModifier" { "ModifierName" "modifier_frost_arrows_slow" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%slow_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_frost_arrows_slow" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%slow_creep_duration" } "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } "modifier_frost_arrows_slow" { "IsDebuff" "1" "TextureName" "naga_sea_witch_frost_arrows" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_percentage" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_percentage" } "EffectName" "particles/generic_gameplay/generic_slowed_cold.vpcf" "EffectAttachType" "attach_hitloc" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" } } } // Naga Sea Witch Mana Shield // Author: Noya // Description: Creates a shield that absorbs damage by using the Sea Witch's mana. Blocks 100% of incoming damage before any mitigation. "naga_sea_witch_mana_shield" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_mana_shield" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityManaCost" "25" "AbilityCooldown" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_mana" "1 1.5 2" } "02" { "var_type" "FIELD_FLOAT" "absorption_percent" "100" } } "precache" { "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_impact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" } "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/mana_shield.lua" "Function" "ManaShieldToggle" } } "OnToggleOff" { "RemoveModifier" { "ModifierName" "modifier_mana_shield" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Medusa.ManaShield.Off" "Target" "CASTER" } } "Modifiers" { "modifier_mana_shield" { "EffectName" "particles/units/heroes/hero_medusa/medusa_mana_shield.vpcf" "EffectAttachType" "follow_origin" } } } // Naga Sea Witch Tornado // Author: Noya // Description: Summons a fierce controllable Tornado that slows enemy units' movement speed, randomly tosses enemy ground units into the air and damages enemy buildings. The Tornado does 50 damage per second to buildings under it, and 7 damage per second to buildings in its general vicinity. Lasts 40 seconds. // Tornado tosses units every 3 seconds, and the toss lasts for 12 seconds. That means that Tornado more or less disables 4 units continuously. "naga_sea_witch_tornado" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_tornado" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "ground" "AbilityCastRange" "900" "AbilityCastPoint" "0.4" "AbilityCooldown" "120" "AbilityManaCost" "200" "AbilityDamage" "75 130 200" "AbilityChannelTime" "40" "AoERadius" "%outside_radius" "precache" { "particle" "particles/custom/tornado_ambient.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_cyclone.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/neutral_fx/tornado_ambient.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_tornado.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" } "AbilitySpecial" //most of these are just to show them in the spell, not actually used directly. { "01" { "var_type" "FIELD_INTEGER" "duration" "40" } "02" { "var_type" "FIELD_INTEGER" "move_attack_speed_slow" "-25" } "03" { "var_type" "FIELD_INTEGER" "slow_radius" "600" } "04" { "var_type" "FIELD_INTEGER" "dps_to_buildings_center" "50" } "05" { "var_type" "FIELD_INTEGER" "dps_to_buildings_outside" "7" } "06" { "var_type" "FIELD_INTEGER" "center_radius" "50" } "07" { "var_type" "FIELD_INTEGER" "outside_radius" "275" } "08" { "var_type" "FIELD_FLOAT" "duration_hero" "6.0" } "09" { "var_type" "FIELD_FLOAT" "duration_unit" "12.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.Tornado.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Invoker.Tornado" "Target" "CASTER" } "SpawnUnit" { "UnitName" "neutral_tornado" "UnitCount" "1" "SpawnRadius" "1" "Target" "POINT" "OnSpawn" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoCreated" } } } "ApplyModifier" { "ModifierName" "modifier_naga_sea_witch_channeling" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoEnd" } "RemoveModifier" { "ModifierName" "modifier_naga_sea_witch_channeling" "Target" "CASTER" } } "Modifiers" { "modifier_naga_sea_witch_channeling" { "IsHidden" "1" "ThinkInterval" "1.29" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_naga_sea_witch_animation" "Target" "CASTER" } } } "modifier_naga_sea_witch_animation" { "IsHidden" "1" "Duration" "1.2" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_2" } } } "naga_sea_witch_tornado_passive" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityTextureName" "naga_sea_witch_tornado" "TargetsAllowed" "ground" "AbilityCastRange" "275" //for displaying damage to building radius "AbilitySpecial" //copied values from the main spell { "01" { "var_type" "FIELD_INTEGER" "duration" "40" } "02" { "var_type" "FIELD_INTEGER" "move_attack_speed_slow" "-25" } "03" { "var_type" "FIELD_INTEGER" "slow_radius" "600" } "04" { "var_type" "FIELD_INTEGER" "dps_to_buildings_center" "50" } "05" { "var_type" "FIELD_INTEGER" "dps_to_buildings_outside" "7" } "06" { "var_type" "FIELD_INTEGER" "center_radius" "50" } "07" { "var_type" "FIELD_INTEGER" "outside_radius" "275" } "08" { "var_type" "FIELD_FLOAT" "duration_hero" "6.0" } "09" { "var_type" "FIELD_FLOAT" "duration_unit" "12.0" } "010" { "var_type" "FIELD_INTEGER" "cyclone_height" "450" } "11" { "var_type" "FIELD_INTEGER" "cyclone_min_height" "400" } "12" { "var_type" "FIELD_INTEGER" "cyclone_max_height" "500" } } "Modifiers" { "modifier_tornado_passive" { "IsHidden" "1" "Passive" "1" "States" { "MODIFIER_STATE_FLYING_FOR_PATHING_PURPOSES_ONLY" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "Aura" "modifier_tornado_debuff" "Aura_Radius" "%slow_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "Aura_ApplyToCaster" "0" "OnCreated" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoThink" } } "ThinkInterval" "%duration_unit / 4" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Invoker.Tornado" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoThink" } } } "modifier_tornado_debuff" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%move_attack_speed_slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_attack_speed_slow" } } "modifier_tornado_flying_debuff" { "IsDebuff" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoParticle" } "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "TornadoHeight" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "EndTornadoParticle" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/naga_sea_witch/tornado.lua" "Function" "Spin" "Angle" "20" } } "States" { "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_FLAIL" } "modifier_tornado_building_damage" { "IsHidden" "1" "Passive" "1" "ThinkInterval" "1" "OnIntervalThink" { // Custom Building Damage "RunScript" { "ScriptFile" "buildings/damage.lua" "Function" "DoBuildingDamage" "Target" { "Center" "CASTER" "Radius" "%center_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Damage" "%dps_to_buildings_center - %dps_to_buildings_outside" } // Custom Building Damage "RunScript" { "ScriptFile" "buildings/damage.lua" "Function" "DoBuildingDamage" "Target" { "Center" "CASTER" "Radius" "%outside_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Damage" "%dps_to_buildings_outside" } } } } } // Paladin Devotion Aura // Author: Noya // Description: Gives additional armor to nearby friendly units. "paladin_devotion_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/paladin/devotion_aura.lua" "AbilityTextureName" "paladin_devotion_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "precache" { "particle" "particles/custom/aura_devotion.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "armor_bonus" "1.5 3 4.5" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Paladin Divine Shield // Author: Noya // Description: An impenetrable shield surrounds the Paladin, protecting him from all damage and spells for a set amount of time // Notes: Magic & Attack immune instead of total invulnerability to prevent issues. "paladin_divine_shield" { "BaseClass" "ability_datadriven" "AbilityTextureName" "paladin_divine_shield" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityCooldown" "35 50 65" "AbilityManaCost" "25" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "precache" { "particle" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shield_duration" "15 30 45" } } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_paladin_divine_shield" } "RunScript" { "ScriptFile" "heroes/paladin/divine_shield.lua" "Function" "DivineShieldPurge" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_Omniknight.GuardianAngel.Cast" } } "Modifiers" { "modifier_paladin_divine_shield" { "EffectName" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" "EffectAttachType" "follow_origin" "Duration" "%shield_duration" "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE" "1" } } } } // Paladin Holy Light // Author: Noya // Description: A holy light that can heal a friendly living unit or damage an enemy undead unit. "paladin_holy_light" { "BaseClass" "ability_lua" "ScriptFile" "heroes/paladin/holy_light.lua" "AbilityTextureName" "paladin_holy_light" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "800" "AbilityCooldown" "5" "AbilityManaCost" "65" "AbilityCastPoint" "0.3" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" "particle" "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "target_damage" "100 200 300" } "02" { "var_type" "FIELD_FLOAT" "heal_amount" "200 400 600" } } } // Paladin Resurrection // Author: Noya // Description: Brings back to life the corpses of 6 friendly nearby units. "paladin_resurrection" { "BaseClass" "ability_datadriven" "AbilityTextureName" "paladin_resurrection" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "400" "AbilityCooldown" "240" "AbilityManaCost" "200" "AbilityCastPoint" "0.3" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "RequiresAlliedCorpsesAround" "900" "precache" { "particle" "particles/status_fx/status_effect_guardian_angel.vpcf" "particle" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_ally.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "max_units_resurrected" "6" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Omniknight.GuardianAngel.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/paladin/resurrection.lua" "Function" "Resurrection" } } "Modifiers" { "modifier_resurrection" { "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_resurrection_fx" "Target" "TARGET" } } } "modifier_resurrection_fx" { "IsHidden" "1" "Duration" "0.5" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_ally.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "100" } } } } } // Pandaren Breath of Fire // Author: Noya, adapted from SpellLibrary dragon_knight_breathe_fire_datadriven // Description: Breathes a cone of fire at enemy units which deals damage. Units that have Drunken Haze on them will ignite and take burn damage over time. "pandaren_breath_of_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pandaren_breath_of_fire" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0.3" "AbilityCooldown" "10.0" "AbilityManaCost" "70" "AbilityDamage" "75 130 200" "precache" { "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn_creep.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "drunken_haze_burn_dps" "7 14 21" } "02" { "var_type" "FIELD_INTEGER" "burn_duration" "5" } "03" { "var_type" "FIELD_INTEGER" "burn_duration" "5" } "04" { "var_type" "FIELD_INTEGER" "max_damage" "520 1000 1360" } "05" { "var_type" "FIELD_INTEGER" "range" "500" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/pandaren/breath_of_fire.lua" "Function" "BreathFireStart" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" "MoveSpeed" "1000" "StartRadius" "150" "StartPosition" "attach_origin" "EndRadius" "250" "FixedDistance" "%range" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_DragonKnight.BreathFire" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/pandaren/breath_of_fire.lua" "Function" "BreathFire" } } "Modifiers" { "modifier_breath_fire_burn" { "IsDebuff" "1" "Duration" "%burn_duration" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn_creep.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%drunken_haze_burn_dps" } } } } } // Pandaren Dunken Brawler // Author: Noya // Description: Gives a percent chance to avoid attacks and a 10% chance to deal additional damage. "pandaren_drunken_brawler" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pandaren_drunken_brawler" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_brawler_crit.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_drunkenbrawler_evade.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "miss_chance" "7 14 21" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "10" } "02" { "var_type" "FIELD_INTEGER" "crit_bonus" "200 300 400" } } "Modifiers" { "modifier_drunken_brawler" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunkenbrawler_evade.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%miss_chance" } "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_drunken_brawler_crit" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "FireSound" { "EffectName" "Hero_Brewmaster.Brawler.Crit" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_brawler_crit.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_drunken_brawler_crit" "Target" "CASTER" } } } } } "modifier_drunken_brawler_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_bonus" } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } // Pandaren Dunken Haze // Author: Noya // Description: Drenches a target enemy unit in alcohol, causing its movement speed to be reduced, and have a chance to miss on attacks. When units with Drunken Haze cast on them are hit by Breath of Fire, they will ignite and take burn damage over time. "pandaren_drunken_haze" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pandaren_drunken_haze" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "550" "AbilityCastPoint" "0.3" "AbilityCooldown" "12.0" "AbilityManaCost" "70" "AbilityDamage" "75 130 200" "AoERadius" "200" "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_haze_debuff.vpcf" "particle" "particles/status_fx/status_effect_brewmaster_drunken_haze.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_haze.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "move_speed_slow" "-15 -30 -50" } "02" { "var_type" "FIELD_INTEGER" "miss_chance" "45 65 80" } "03" { "var_type" "FIELD_INTEGER" "radius" "200" } "03" { "var_type" "FIELD_INTEGER" "hero_duration" "5" } "04" { "var_type" "FIELD_INTEGER" "creep_duration" "12" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_haze.vpcf" "Dodgeable" "0" "ProvidesVision" "0" "MoveSpeed" "1300" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_2" } "FireSound" { "EffectName" "Hero_Brewmaster.DrunkenHaze.Cast" "Target" "CASTER" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Brewmaster.DrunkenHaze.Target" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_drunken_haze" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_drunken_haze" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_drunken_haze" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_haze_debuff.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_brewmaster_drunken_haze.vpcf" "StatusEffectPriority" "5" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_chance" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_slow" } } } } // Pandaren Storm, Earth, And Fire // Author: Noya "pandaren_storm_earth_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pandaren_storm_earth_fire" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "AbilityCastPoint" "0.65" "AbilityCooldown" "180.0" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "60.0" } "02" { "var_type" "FIELD_FLOAT" "split_duration" "0.65" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_drunken_brawler_crit.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_earth_ambient.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_storm_ambient.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_fire_ambient.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_storm_death.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_earth_death.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_fire_death.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_storm_attack.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" "model" "models/heroes/brewmaster/brewmaster_earthspirit.vmdl" "model" "models/heroes/brewmaster/brewmaster_firespirit.vmdl" "model" "models/heroes/brewmaster/brewmaster_windspirit.vmdl" // Sub ability particles "particle" "particles/custom/axe_beserkers_call_owner.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_hurl_boulder.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_pulverize.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_cyclone.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_windwalk.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_fire_immolation_child.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_primal_split_delay" "Target" "CASTER" "Duration" "%split_duration" } "FireSound" { "EffectName" "Hero_Brewmaster.PrimalSplit.Cast" "Target" "CASTER" } } "Modifiers" { "modifier_primal_split_delay" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_primal_split.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "FireSound" { "EffectName" "Hero_Brewmaster.PrimalSplit.Spawn" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_primal_split_duration" "Target" "CASTER" "Duration" "%duration" } } } "modifier_primal_split_duration" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/pandaren/storm_earth_fire.lua" "Function" "PrimalSplit" "unit_name_earth" "neutral_earth_panda" "unit_name_storm" "neutral_storm_panda" "unit_name_fire" "neutral_fire_panda" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/pandaren/storm_earth_fire.lua" "Function" "PrimalSplitAuraMove" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Brewmaster.PrimalSplit.Return" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/pandaren/storm_earth_fire.lua" "Function" "PrimalSplitEnd" } } } "modifier_split_unit" { "OnDeath" { "RunScript" { "ScriptFile" "heroes/pandaren/storm_earth_fire.lua" "Function" "SplitUnitDied" } } } } } // Pandaren Sub Abilities "pandaren_earth_taunt" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "pandaren_earth_taunt" "MaxLevel" "1" "AbilityCastPoint" "0.3" "AbilityCooldown" "15" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/custom/axe_beserkers_call_owner.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_attack1" } } "RunScript" { "ScriptFile" "heroes/pandaren/storm_earth_fire.lua" "Function" "Taunt" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } } "pandaren_earth_spell_immunity" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "pandaren_earth_spell_immunity" "MaxLevel" "1" "Modifiers" { "modifier_earth_spell_immunity" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_earth_ambient.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "pandaren_earth_pulverize" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "pandaren_earth_pulverize" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_inner" "40" } "02" { "var_type" "FIELD_INTEGER" "radius_inner" "150" } "03" { "var_type" "FIELD_INTEGER" "damage_outer" "20" } "04" { "var_type" "FIELD_INTEGER" "radius_outer" "250" } "05" { "var_type" "FIELD_INTEGER" "chance" "20" } } "Modifiers" { "modifier_earth_pulverize" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "Random" { "Chance" "%chance" "OnSuccess" { "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_pulverize.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius_inner" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_inner - %damage_outer" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius_outer" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_outer" } } } } } } } "pandaren_storm_dispel_magic" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "human_dispel_magic" "MaxLevel" "1" "AbilityCastRange" "500" "AOERadius" "%radius" "AbilityCooldown" "8.0" "AbilityCastPoint" "0.4" "AbilityManaCost" "75" "TargetsAllowed" "ward" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "200" } "02" { "var_type" "FIELD_INTEGER" "radius" "200" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" "EffectAttachType" "world_origin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireSound" { "EffectName" "Brewmaster_Storm.DispelMagic" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "DispelMagic" "Target" "POINT" } } } "pandaren_storm_cyclone" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "pandaren_storm_cyclone" "MaxLevel" "1" "TargetsAllowed" "ground,organic" "AbilityCastRange" "600 600 600 600" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0" "AbilityCastPoint" "0.4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration_hero" "6.0" } "02" { "var_type" "FIELD_FLOAT" "duration_unit" "20.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Brewmaster_Storm.Cyclone" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%duration_hero" } "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration_unit" } } } "pandaren_storm_wind_walk" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "pandaren_storm_wind_walk" "MaxLevel" "1" "AbilityCooldown" "7.0" "AbilityManaCost" "75" "TargetsAllowed" "ground,organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "50" } "03" { "var_type" "FIELD_FLOAT" "duration" "20.0" } "04" { "var_type" "FIELD_FLOAT" "fade_time" "0.6" } } "OnSpellStart" { "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_windwalk.vpcf" "EffectAttachType" "attach_origin" } "FireSound" { "Target" "CASTER" "EffectName" "Brewmaster_Storm.WindWalk" } "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_windwalk" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_windwalk" { "IsBuff" "1" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnAttack" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_windwalk" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_windwalk_damage" "Target" "CASTER" "Duration" "%duration" } } "OnAbilityExecuted" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_windwalk" "Target" "CASTER" } } } "modifier_windwalk_damage" { "IsHidden" "1" "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_windwalk_damage" "Target" "CASTER" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%bonus_damage" } "FireEffect" { "EffectName" "particles/msg_fx/msg_crit.vpcf" "EffectAttachType" "follow_overhead" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ControlPoints" { "01" "9 %bonus_damage 4" //pre number post "02" "1 4 0" //lifetime digits "03" "255 0 0" //color } } } } } } "pandaren_fire_permanent_immolation" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "pandaren_fire_permanent_immolation" "MaxLevel" "1" "TargetsAllowed" "ground,organic" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "15 30 45" } "02" { "var_type" "FIELD_INTEGER" "radius" "220" } } "precache" { "particle" "particles/items2_fx/radiance.vpcf" } "Modifiers" { "modifier_permanent_immolation" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_permanent_immolation_burn" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "EffectName" "particles/items2_fx/radiance.vpcf" "EffectAttachType" "attach_hitloc" } "modifier_permanent_immolation_burn" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" "Target" "TARGET" } } } } } // Pit Lord Cleaving Attack // Author: Noya // Description: The Pit Lord strikes with such force that he damages multiple enemies with his attack. "pit_lord_cleaving_attack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_cleaving_attack" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "TargetsAllowed" "ground" "AbilityCastRange" "200" "precache" { "particle" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cleave_damage" "30 55 80" } "02" { "var_type" "FIELD_INTEGER" "cleave_radius" "200.0" } } "Modifiers" { "modifier_cleaving_attack" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "CleaveAttack" { "CleavePercent" "%cleave_damage" "CleaveRadius" "%cleave_radius" "CleaveEffect" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } } } } } // Pit Lord Doom // Author: Noya // Description: Marks a target unit for the manifestation of a Demon. The afflicted unit will take 40 damage per second until it dies. Upon its death, a great Demon will spawn from its corpse. Doom cannot be dispelled or canceled. "pit_lord_doom" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_doom" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "MaxCreepLevel" "5" "AbilityCastRange" "650" "AbilityCastPoint" "0.3" "AbilityCooldown" "120.0" "AbilityManaCost" "150" "precache" { "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_doom.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_lvl_death.vpcf" "particle" "particles/econ/items/doom/doom_f2p_death_effect/doom_bringer_f2p_death.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" "model" "models/heroes/doom/doom.vmdl" // Doom Guard "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" "particle" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "particle" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_cyclone.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "40" } "02" { "var_type" "FIELD_INTEGER" "doom_guard_duration" "180" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_doom" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_DoomBringer.Doom" "Target" "TARGET" } } "Modifiers" { "modifier_doom" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_doom_bringer/doom_bringer_doom.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } "OnCreated" { "RunScript" { "ScriptFile" "heroes/pit_lord/doom.lua" "Function" "DoomStart" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/pit_lord/doom.lua" "Function" "DoomEnd" } } } } } // Sub Abilities "doom_guard_war_stomp" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "doom_guard_war_stomp" "TargetsAllowed" "ground" "AbilityCastPoint" "0.5" "AbilityCooldown" "6.0" "AbilityManaCost" "90" // Indicator "AbilityCastRange" "%radius" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "stun_duration_hero" "2.0" } "02" { "var_type" "FIELD_FLOAT" "stun_duration_creep" "3.0" } "03" { "var_type" "FIELD_INTEGER" "stomp_damage" "25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" "particle" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "CASTER" "ControlPoints" { "01" "%radius 0 %radius" } } "FireSound" { "EffectName" "Hero_Centaur.HoofStomp" "Target" "CASTER" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%stomp_damage" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%stun_duration_hero" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%stun_duration_creep" } } "Modifiers" { "modifier_war_stomp" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } "doom_guard_cripple" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_cripple" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "10" "AbilityManaCost" "175" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "creep_duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "attack_speed_reduction" "-50" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_reduction" "-75" } "05" { "var_type" "FIELD_INTEGER" "damage_reduction" "-50" } } "precache" { "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "soundfile" "sounds/items/rod_of_atos.vsnd" } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.RodOfAtos.Activate" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_cripple" { "IsPurgable" "1" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_SECONDARY" "%attack_speed_reduction" } } } } "doom_guard_rain_of_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_rain_of_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_VICTORY" "AbilityCastRange" "800" "AbilityCastPoint" "0.6" "AbilityCooldown" "8" "AbilityManaCost" "85" "AOERadius" "%radius" "AbilityChannelTime" "6.0" "BuildingReduction" "0.5" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_abyssal_underlord.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "wave_count" "6" } "03" { "var_type" "FIELD_INTEGER" "wave_damage" "25" } "04" { "var_type" "FIELD_INTEGER" "max_wave_damage" "125" } "05" { "var_type" "FIELD_INTEGER" "burn_damage" "5" } "06" { "var_type" "FIELD_FLOAT" "burn_interval" "1.0" } "07" { "var_type" "FIELD_FLOAT" "burn_duration" "3.0" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_AbyssalUnderlord.Firestorm.Start" "Target" "CASTER" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireStart" "Target" "POINT" } "ApplyModifier" { "ModifierName" "modifier_rain_of_fire_channelling" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireEnd" } "RemoveModifier" { "ModifierName" "modifier_rain_of_fire_channelling" "Target" "CASTER" } } "Modifiers" { "modifier_rain_of_fire_channelling" { "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_VICTORY" } "modifier_rain_of_fire_thinker" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireWave" } "ApplyModifier" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "ModifierName" "modifier_rain_of_fire_burn" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireWave" } "ApplyModifier" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "ModifierName" "modifier_rain_of_fire_burn" } "FireSound" { "EffectName" "Hero_Jakiro.LiquidFire" "Target" "TARGET" } } } "modifier_rain_of_fire_burn" { "IsHidden" "0" "IsDebuff" "1" "Duration" "%burn_duration" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/custom/neutral/firestorm_wave_burn.vpcf" "EffectAttachType" "follow_origin" } } "ThinkInterval" "%burn_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%burn_damage" } } } } } // Pit Lord Howl of Terror // Author: Noya // Notes: The Pit Lord lets loose a terrifying howl that causes nearby enemy units to shiver in fear, reducing their attack damage. //Level Duration Cooldown Mana Cost Range Area of Effect Allowed Targets Effect Hero Level Req "pit_lord_howl_of_terror" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_howl_of_terror" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_OVERRIDE_ABILITY_4" "AbilityCastRange" "500" "AbilityCastPoint" "0.3" "AbilityCooldown" "12.0" "AbilityManaCost" "75" "AbilityDamage" "75 130 200" "precache" { "particle" "particles/custom/vengeful_wave_of_terror_recipient_reduction.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abyssal_underlord.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } "02" { "var_type" "FIELD_INTEGER" "damage_reduction_percent" "-30 -40 -50" } "03" { "var_type" "FIELD_INTEGER" "duration" "15" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_AbyssalUnderlord.PitOfMalice.Start" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/custom/neutral/howl_of_terror.vpcf" "EffectAttachType" "follow_origin" } "ApplyModifier" { "ModifierName" "modifier_howl_of_terror" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } "Modifiers" { "modifier_howl_of_terror" { "IsDebuff" "1" "EffectName" "particles/custom/vengeful_wave_of_terror_recipient_reduction.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction_percent" } } } } // Pit Lord Rain of Fire // Author: Noya // Description: Calls down waves of fire that damage units in an area. Each wave deals initial damage and then burns enemies for 3 seconds. "pit_lord_rain_of_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_rain_of_fire" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "800" "AbilityCastPoint" "0.6" "AbilityCooldown" "8" "AbilityManaCost" "85" "AOERadius" "%radius" "AbilityChannelTime" "6.0 8.0 10.0" "BuildingReduction" "0.5" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_abyssal_underlord.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "wave_count" "6 8 10" } "03" { "var_type" "FIELD_INTEGER" "wave_damage" "25 30 35" } "04" { "var_type" "FIELD_INTEGER" "max_wave_damage" "125 150 175" } "05" { "var_type" "FIELD_INTEGER" "burn_damage" "5 10 15" } "06" { "var_type" "FIELD_FLOAT" "burn_interval" "1.0" } "07" { "var_type" "FIELD_FLOAT" "burn_duration" "3.0" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_AbyssalUnderlord.Firestorm.Start" "Target" "CASTER" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireStart" "Target" "POINT" } "ApplyModifier" { "ModifierName" "modifier_rain_of_fire_channelling" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireEnd" } "RemoveModifier" { "ModifierName" "modifier_rain_of_fire_channelling" "Target" "CASTER" } } "Modifiers" { "modifier_rain_of_fire_channelling" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "ApplyAnimation" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "ApplyAnimation" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "StopAnimation" } } } "modifier_rain_of_fire_thinker" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireWave" } "ApplyModifier" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "ModifierName" "modifier_rain_of_fire_burn" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/pit_lord/rain_of_fire.lua" "Function" "RainOfFireWave" } "ApplyModifier" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "ModifierName" "modifier_rain_of_fire_burn" } "FireSound" { "EffectName" "Hero_Jakiro.LiquidFire" "Target" "TARGET" } } } "modifier_rain_of_fire_burn" { "IsHidden" "0" "IsDebuff" "1" "Duration" "%burn_duration" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/custom/neutral/firestorm_wave_burn.vpcf" "EffectAttachType" "follow_origin" } } "ThinkInterval" "%burn_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%burn_damage" } } } } } // Priestess of the Moon Scout // Author: Noya // Description: Temporarily summons an Owl Scout, which can be used to scout the map. Can see invisible units. "potm_scout" { "BaseClass" "ability_datadriven" "AbilityTextureName" "potm_scout" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastPoint" "0.3" "AbilityCooldown" "20.0" "AbilityManaCost" "100 75 50" "precache" { "particle" "particles/units/heroes/hero_mirana/mirana_starfall_moonray.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" "model" "models/items/courier/snowl/snowl_flying.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "owl_duration" "60 90 120" } "02" { "var_type" "FIELD_INTEGER" "owl_vision" "1000 1500 2200" } "03" { "var_type" "FIELD_INTEGER" "owl_movespeed" "270 350 450" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Mirana.Leap.Owlcat" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/potm/scout.lua" "Function" "SpawnScout" } } "Modifiers" { "modifier_owl_scout" { "IsHidden" "1" "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "EffectAttachType" "follow_overhead" } } } // Priestess of the Moon Searing Arrows // Author: Noya // Description: Increases the damage of the Priestess' attack by adding fire. Searing Arrows will fire until the Priestess is out of mana. // Manually casting Searing Arrows will allow the Priestess of the Moon to fire beyond her normal 60 range at level 2. // "Orb" action doesn't fire on Magic Immune targets, removed datadriven version in favor of the dota ability which properly fires to magic immune units "potm_searing_arrows" { "BaseClass" "clinkz_searing_arrows" "AbilityTextureName" "potm_searing_arrows" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityCastPoint" "0" "AbilityCastRange" "600 700 700" "AbilityManaCost" "8" "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_searing_arrow.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" "soundfile" "soundevents/voscripts/game_sounds_vo_clinkz.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_bonus" "10 20 30" } "02" { "var_type" "FIELD_INTEGER" "bonus_range" "0 100 100" } } } // Priestess of the Moon Starfall // Author: Noya // Description: Calls down waves of falling stars that damage nearby enemy units. Each wave deals 50 damage. The time between waves is 1.5 seconds. "potm_starfall" { "BaseClass" "ability_datadriven" "AbilityTextureName" "potm_starfall" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "1000" "AbilityCastPoint" "0.3" "AbilityCooldown" "180.0" "AbilityManaCost" "100" "AbilityChannelTime" "45.0" "precache" { "particle" "particles/units/heroes/hero_mirana/mirana_starfall_moonray.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_cast.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_ray.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } "02" { "var_type" "FIELD_INTEGER" "wave_damage" "50" } "03" { "var_type" "FIELD_FLOAT" "wave_interval" "1.5" } "04" { "var_type" "FIELD_INTEGER" "radius" "1000" } "05" { "var_type" "FIELD_FLOAT" "building_dmg_pct" "35" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_starfall" "Target" "CASTER" "Duration" "%duration" } "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_cast.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_ray.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Ability.MoonlightShadow" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_starfall" "Target" "CASTER" } } "Modifiers" { "modifier_starfall" { "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "EffectAttachType" "follow_overhead" "ThinkInterval" "%wave_interval" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_channeling_animation" "Target" "CASTER" "Duration" "1.4" } "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_starfall_moonray.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Ability.Starfall" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/potm/starfall.lua" "Function" "StarfallDamage" "Target" "TARGET" } } } "modifier_channeling_animation" { "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_1" } } } // Priestess of the Moon Trueshot Aura // Author: Noya // Description: An aura that gives friendly units around the Priestess bonus damage to their ranged attacks. "potm_trueshot_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/potm/trueshot_aura.lua" "AbilityTextureName" "potm_trueshot_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_bonus_percent" "10 20 30" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Shadow Hunter Big Bad Voodoo // Author: Noya // Notes: Turns all friendly units invulnerable in an area around the Shadow Hunter. The Shadow Hunter does not turn invulnerable. Lasts 30 seconds. "shadow_hunter_big_bad_voodoo" { "BaseClass" "ability_lua" "ScriptFile" "heroes/shadow_hunter/big_bad_voodoo.lua" "AbilityTextureName" "shadow_hunter_big_bad_voodoo" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "800" "AbilityCastPoint" "0.5" "AbilityCooldown" "180.0" "AbilityManaCost" "200" "AbilityChannelTime" "30.0" "precache" { "particle" "particles/units/heroes/hero_shadowshaman/unused_field_4.vpcf" "particle" "particles/custom/warlock_shadow_word_buff_c.vpcf" "particle" "particles/custom/witchdoctor_voodoo_restoration_aura.vpcf" "particle" "particles/custom/witchdoctor_voodoo_restoration.vpcf" "particle" "particles/status_fx/status_effect_guardian_angel.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_witchdoctor.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "01" { "var_type" "FIELD_INTEGER" "radius" "800" } } } // Shadow Hunter Healing Wave // Author: Noya // Description: Calls forth a wave of energy that heals a target and bounces to nearby friendlies. Each bounce heals less damage. "shadow_hunter_healing_wave" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shadow_hunter_healing_wave" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "RequiresHealthDeficit" "target" "AbilityCastRange" "700" "AbilityCastPoint" "0.4" "AbilityCooldown" "8.0" "AbilityManaCost" "90" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "healing" "160 215 300" } "02" { "var_type" "FIELD_INTEGER" "max_bounces" "2 3 4" } "03" { "var_type" "FIELD_INTEGER" "bounce_range" "500" } "04" { "var_type" "FIELD_INTEGER" "wave_decay_percent" "20" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/custom/dazzle_shadow_wave.vpcf" "particle" "particles/custom/dazzle_shadow_wave_copy.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Shadow_Wave" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/shadow_hunter/healing_wave.lua" "Function" "HealingWave" } } } // Shadow Hunter Hex // Author: Noya, adapted from spellLibrary lion_vodoo_datadriven by Pizzalol // Description: Transforms an enemy unit into a random critter, disabling special abilities. "shadow_hunter_hex" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shadow_hunter_hex" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "800" "AbilityCastPoint" "0.0" "AbilityCooldown" "7.0" "AbilityManaCost" "80" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_voodoo.vpcf" "model" "models/props_gameplay/frog.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hero_duration" "4 5 6" } "02" { "var_type" "FIELD_FLOAT" "creep_duration" "15 30 45" } "03" { "var_type" "FIELD_INTEGER" "movespeed" "100" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.Voodoo" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Lion.Hex.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lion/lion_spell_voodoo.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_hex_frog" //Lua modifier "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_hex_frog" //Lua modifier "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } } // Shadow Hunter Serpent Ward // Author: Noya // Description: Summons an immobile serpentine ward to attack the Shadow Hunter's enemies. The ward has 75/135/135 hit points and is immune to magic. Lasts 40 seconds. "shadow_hunter_serpent_ward" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shadow_hunter_serpent_ward" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500 800 800" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.5" "AbilityManaCost" "30" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts" "particle" "particles/units/heroes/hero_venomancer/venomancer_ward_cast.vpcf" "particle" "particles/units/heroes/hero_venomancer/venomancer_ward_spawn.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0" } "02" { "var_type" "FIELD_INTEGER" "ward_hp" "75 135 135" } "03" { "var_type" "FIELD_INTEGER" "ward_damage" "12 24 43" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Venomancer.Plague_Ward" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/shadow_hunter/serpent_ward.lua" "Function" "SpawnSerpentWard" "Target" "POINT" } } } // Tauren Chieftain Endurance Aura // Author: Noya // Description: Increases the movement speed and attack rate of nearby friendly units. "tauren_chieftain_endurance_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/tauren_chieftain/endurance_aura.lua" "AbilityTextureName" "tauren_chieftain_endurance_aura" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "move_speed_bonus" "10 20 30" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_bonus" "5 10 15" } "03" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Tauren Chieftain Reincarnation // Author: Noya // Description: When killed, the Tauren Chieftain will come back to life. The Tauren Chieftain will return with full mana. // Issues: "MODIFIER_PROPERTY_REINCARNATION" is Unhandled, this uses lua Kill and gives the gold back when the caster dies // It still counts the death count for the player, because there's currently no way to decrease deaths (only lua IncrementDeaths) "tauren_chieftain_reincarnation" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "tauren_chieftain_reincarnation" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityCooldown" "240" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "reincarnate_time" "7.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skeletonking.vsndevts" "particle" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate.vpcf" "particle" "particles/units/heroes/hero_skeletonking/skeleton_king_death.vpcf" } "Modifiers" { "modifier_reincarnation" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/tauren_chieftain/reincarnation.lua" "Function" "Reincarnation" } } } } } // Tauren Chieftain Shockwave // Author: Noya // Description: A wave of force that ripples out from the Hero, causing damage to land units in a line. "tauren_chieftain_shockwave" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tauren_chieftain_shockwave" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_5" "TargetsAllowed" "ground" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75 130 200" "precache" { "particle" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil.vpcf" "particle" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil_cast.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_magnataur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shock_distance" "700" } "02" { "var_type" "FIELD_INTEGER" "max_damage" "1000 1500 2000" } } "OnAbilityPhaseStart" { "ApplyModifier" { "ModifierName" "modifier_shockwave_hidden_cast" "Target" "CASTER" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/tauren_chieftain/shockwave.lua" "Function" "ShockwaveStart" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Particle" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil.vpcf" "MoveSpeed" "900" "StartRadius" "250" "StartPosition" "attach_attack1" "EndRadius" "250" "FixedDistance" "%shock_distance" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "HasFrontalCone" "0" "ProvidesVision" "1" "VisionRadius" "300" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/tauren_chieftain/shockwave.lua" "Function" "ShockwaveDamage" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Target" "Target" "TARGET" } } "Modifiers" { "modifier_shockwave_hidden_cast" { "IsHidden" "1" "Duration" "0.5" "OnCreated" { "AttachEffect" { "EffectName" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil_cast.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" "CASTER" "attach_attack1" } } } } } } // Tauren Chieftain War Stomp // Author: Noya // Description: Slams the ground, stunning and damaging nearby enemy units. "tauren_chieftain_war_stomp" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tauren_chieftain_war_stomp" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground" "AbilityCastRange" "250 300 350" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "90" "AbilityDamage" "25 50 75" "precache" { "particle" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250 300 350" } "02" { "var_type" "FIELD_FLOAT" "stun_hero_duration" "2.0 3.0 4.0" } "03" { "var_type" "FIELD_FLOAT" "stun_creep_duration" "3.0 4.0 5.0" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "CASTER" "ControlPoints" { "01" "%radius 0 %radius" } } "FireSound" { "EffectName" "Hero_Centaur.HoofStomp" "Target" "CASTER" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%stun_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%stun_creep_duration" } } "Modifiers" { "modifier_war_stomp" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } // Tinker Cluster Rockets // Author: Noya // Description: Bombards an area with rockets, stunning enemy land units for 1 second and damaging nearby enemy units. "tinker_cluster_rockets" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_cluster_rockets" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "ground" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "70" "AbilityDamage" "35 65 100" "AOERadius" "%radius" "AbilityChannelTime" "0.5 1.0 1.5" "precache" { "particle" "particles/econ/items/gyrocopter/hero_gyrocopter_gyrotechnics/gyro_rocket_barrage.vpcf" "particle" "particles/units/heroes/hero_tinker/tinker_missile.vpcf" "particle" "particles/units/heroes/hero_tinker/tinker_missle_explosion.vpcf" "particle" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "230 260 290" } "02" { "var_type" "FIELD_INTEGER" "stun_duration" "1" } "03" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.Heat-Seeking_Missile" } "ApplyModifier" { "ModifierName" "modifier_cluster_rockets" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/tinker/cluster_rockets.lua" "Function" "StartClusterRockets" "Target" "POINT" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_cluster_rockets" "Target" "CASTER" } } "OnProjectileHitUnit" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Gyrocopter.Rocket_Barrage.Impact" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_tinker/tinker_missle_explosion.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/tinker/cluster_rockets.lua" "Function" "ClusterRocketHit" } } "Modifiers" { "modifier_cluster_rockets" { "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_attack1" } } } "ThinkInterval" "0.1" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Gyrocopter.Rocket_Barrage.Launch" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/tinker/cluster_rockets.lua" "Function" "FireClusterRocket" } } } "modifier_cluster_rocket_stun" { "IsHidden" "1" "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OverrideAnimation" "ACT_DOTA_DISABLED" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Tinker Engineering Upgrade // Author: Noya // Description: Improves other Tinker abilities with each level learned: // Cluster Rockets - Larger Area. // Pocket Factory - Builds Clockwerk Goblins more quickly. // Robo-Goblin - Increases armor and Strength; enhances Demolish. //Also gives bonus damage and increases the Tinker's movement speed. "tinker_engineering_upgrade" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_engineering_upgrade" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "10 20 30" } "03" { "var_type" "FIELD_FLOAT" "factory_spawn_time_reduced" "1.0 2.0 3.0" } "04" { "var_type" "FIELD_INTEGER" "cluster_extra_radius" "30 60 90" } "05" { "var_type" "FIELD_INTEGER" "robo_goblin_extra_str" "2 4 6" } "05" { "var_type" "FIELD_INTEGER" "robo_goblin_extra_armor" "1 2 3" } } "Modifiers" { "modifier_engineering_upgrade" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } } "modifier_robo_goblin_upgrade" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS" "%robo_goblin_extra_str" "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%robo_goblin_extra_armor" } } } } // Tinker Pocket Factory // Author: Noya // Description: Creates a factory which automatically constructs Clockwerk Goblins. Clockwerk Goblins explode upon death, causing damage to nearby enemy units. "tinker_pocket_factory" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_pocket_factory" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "AbilityCastRange" "500" "AbilityCastPoint" "0.3" "AbilityCooldown" "35.0" "AbilityManaCost" "125" "precache" { "particle" "particles/units/heroes/hero_tinker/tinker_base_attack.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" //Factory "model" "models/items/rattletrap/battletrap_cog/battletrap_cog.vmdl" //Goblins "model" "models/heroes/rattletrap/rattletrap.vmdl" "model" "models/items/rattletrap/forge_warrior_claw/forge_warrior_claw.vmdl" "model" "models/items/rattletrap/forge_warrior_helm/forge_warrior_helm.vmdl" "model" "models/items/rattletrap/forge_warrior_steam_exoskeleton/forge_warrior_steam_exoskeleton.vmdl" "model" "models/items/rattletrap/forge_warrior_rocket_cannon/forge_warrior_rocket_cannon.vmdl" "particle" "particles/econ/items/clockwerk/clockwerk_mortar_forge/clockwerk_mortar_ambient.vpcf" //Goblin Ability "particle" "particles/units/heroes/hero_techies/techies_suicide.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "factory_duration" "45" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Tinker.Rearm" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/tinker/pocket_factory.lua" "Function" "BuildPocketFactory" "Target" "POINT" } } } //Goblins have a limited duration and have suicide ability "tinker_pocket_factory_train_goblin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_pocket_factory" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCooldown" "8.0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "goblin_duration" "10" } "02" { "var_type" "FIELD_FLOAT" "spawn_ratio" "5.0" } "03" { "var_type" "FIELD_FLOAT" "reduction_per_eng_level" "1.0" } } "Modifiers" { "modifier_spawn_goblin" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/tinker/pocket_factory.lua" "Function" "StartGoblinSpawn" } } } } } //Explosion deals 30/60/80 damage. "tinker_clockwerk_goblin_kaboom" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_clockwerk_goblin_kaboom" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "100" "AbilityCastPoint" "0.0" "TargetsAllowed" "ground" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "full_dmg" "30 60 80" } "02" { "var_type" "FIELD_INTEGER" "full_dmg_radius" "100" } "03" { "var_type" "FIELD_INTEGER" "outer_dmg" "12 22 30" } "04" { "var_type" "FIELD_INTEGER" "outer_dmg_radius" "250" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/neutral/sapper.lua" "Function" "Kaboom" } } } // Tinker Robo Goblin // Author: Noya // Description: Transforms the Tinker into a Robo-Goblin, a powerful armored form that has the following traits: //-Bonus Strength and armor. //-Use of the Demolish ability, which grants bonus damage against buildings. //-The Tinker becomes mechanical, rendering him immune to stun, most offensive spells, and several beneficial spells. "tinker_robo_goblin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_robo_goblin" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityCastAnimation" "ACT_DOTA_TINKER_REARM3" "AbilityCastPoint" "1.0" "AbilityCooldown" "0.0" "AbilityManaCost" "25" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" "model" "models/courier/mechjaw/mechjaw.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_str" "5" } "02" { "var_type" "FIELD_INTEGER" "extra_armor" "1" } "03" { "var_type" "FIELD_FLOAT" "extra_dmg_to_buildings" "3.5" } } "OnUpgrade" { "LevelUpAbility" { "Target" "CASTER" "AbilityName" "tinker_normal_form" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_Tinker.RearmStart" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_robot_transform" "Target" "CASTER" } } "Modifiers" { "modifier_robot_transform" { "Duration" "1.0" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invulnerable" "Target" "CASTER" "Duration" "0.03" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_robot_form" "Target" "CASTER" } } } } } // Transform back "tinker_normal_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_normal_form" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityCastAnimation" "ACT_DOTA_SPAWN" "AbilityCastPoint" "0.0" "AbilityCooldown" "1.0" "AbilityManaCost" "25" "OnAbilityPhaseStart" { "ApplyModifier" { "ModifierName" "modifier_tinker_transform" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Tinker.Rearm" "Target" "CASTER" } } "Modifiers" { "modifier_tinker_transform" { "Duration" "1.0" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_robot_form" "Target" "TARGET" } } } } } // Warden Avatar of Vengeance // Author: Noya // Description: Creates a powerful avatar that summons invulnerable spirits from friendly corpses to attack your enemies. When the Avatar of Vengeance dies, the spirits vanish. "warden_avatar_of_vengeance" { "BaseClass" "ability_datadriven" "AbilityTextureName" "warden_avatar_of_vengeance" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "180" "AbilityManaCost" "200" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_spectre.vsndevts" "model" "models/heroes/vengeful/vengeful.vmdl" "model" "models/items/vengeful/vengeful_immortal_weapon/vengeful_immortal_weapon.vmdl" "model" "models/items/vengefulspirit/fallenprincess_shoulders/fallenprincess_shoulders.vmdl" "model" "models/items/vengefulspirit/fallenprincess_legs/fallenprincess_legs.vmdl" "model" "models/items/vengefulspirit/fallenprincess_head/fallenprincess_head.vmdl" "particle" "particles/units/heroes/hero_vengeful/vengeful_ambient.vpcf" "particle" "particles/econ/items/vengeful/vengeful_wing_fallenprincess/venge_wingsoffallenprincess_ambient.vpcf" "particle" "particles/units/heroes/hero_vengeful/vengeful_base_attack.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "180" } } "OnSpellStart" { "SpawnUnit" { "UnitName" "nightelf_avatar_of_vengeance" "UnitCount" "1" "SpawnRadius" "100" "Duration" "%duration" "Target" "CASTER" "OnSpawn" { "FireSound" { "EffectName" "Hero_Spectre.Haunt" "Target" "CASTER" } } } } } // Avatar of Vengeance Passive // No collision and calls a script OnDeath to kill all the summoned spirits "avatar_of_vengeance_passive" { "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "BaseClass" "ability_datadriven" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "precache" { "particle" "particles/units/heroes/hero_spectre/spectre_ambient.vpcf" } "Modifiers" { "vengeance_modifier" { "IsHidden" "1" "Passive" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_SPECIALLY_DENIABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } "EffectName" "particles/units/heroes/hero_spectre/spectre_ambient.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/warden/avatar_of_vengeance.lua" "Function" "InitializeSpiritCount" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/warden/avatar_of_vengeance.lua" "Function" "KillVengeanceSpirits" } } } } } // Spirit Spawn - Spaws a Spirit of Vengeance near a corpse "avatar_of_vengeance_spirit_spawn" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityTextureName" "warden_spirit_of_vengeance" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityCooldown" "2" "AbilityManaCost" "25" "AbilityCastRange" "900" "RequiresCorpsesAround" "900" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_spectre.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "spirit_limit" "6" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } "03" { "var_type" "FIELD_INTEGER" "duration" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/warden/avatar_of_vengeance.lua" "Function" "SpiritOfVengeanceSpawn" } } "Modifiers" { "modifier_spirit_spawn_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/warden/avatar_of_vengeance.lua" "Function" "SpiritOfVengeanceAutocast" } } } } } // Spirit of Vengeance Passive // Invulnerable and some particle "spirit_of_vengeance_passive" { "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "BaseClass" "ability_datadriven" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "precache" { "particle" "particles/units/heroes/hero_vengeful/vengeful_ambient.vpcf" } "Modifiers" { "vengeance_modifier" { "IsHidden" "1" "Passive" "1" "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_vengeful/vengeful_ambient.vpcf" "EffectAttachType" "attach_uppertorso" "Target" "CASTER" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/warden/avatar_of_vengeance.lua" "Function" "UpdateSpirits" } } } } } // Warden Blink // Author: Noya // Description: Short distance teleportation that allows the Warden to move in and out of combat. "warden_blink" { "BaseClass" "ability_datadriven" "AbilityTextureName" "warden_blink" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.3" "AbilityCooldown" "10.0 10.0 1.0" "AbilityManaCost" "50 10 10" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_start.vpcf" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_end.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blink_range" "1000" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/warden/blink.lua" "Function" "Blink" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Antimage.Blink_out" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_start.vpcf" "Target" "CASTER" "EffectAttachType" "attach_hitloc" } "FireSound" { "EffectName" "Hero_Antimage.Blink_in" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_end.vpcf" "Target" "CASTER" "EffectAttachType" "follow_origin" } } } // Warden Fan of Knives // Author: Noya // Description: The Warden flings a flurry of knives at multiple enemy targets around her. "warden_fan_of_knives" { "BaseClass" "ability_datadriven" "AbilityTextureName" "warden_fan_of_knives" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_SPAWN" "AbilityCastRange" "400 500 600" "AbilityCastPoint" "0.3" "AbilityCooldown" "9.0" "AbilityManaCost" "100" "AbilityDamage" "75 125 190" "precache" { "particle" "particles/custom/warden_fan_of_knives.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_assassin.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400 500 600" } "02" { "var_type" "FIELD_INTEGER" "max_damage" "300 625 950" } } "OnSpellStart" { "AttachEffect" { "EffectName" "particles/custom/warden_fan_of_knives.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_PhantomAssassin.Dagger.Target" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/warden/fan_of_knives.lua" "Function" "DoDamage" } } } // Warden Shadow Strike // Author: Noya // Description: Hurls a poisoned dagger which deals large initial damage, and then deals damage over time. The poisoned unit has its movement rate slowed for a short duration. "warden_shadow_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "warden_shadow_strike" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "300" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75 130 200" "precache" { "particle" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_impact.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_beam.vpcf" "particle" "particles/status_fx/status_effect_poison_viper.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "15" } "02" { "var_type" "FIELD_INTEGER" "initial_damage" "75 150 225" } "03" { "var_type" "FIELD_INTEGER" "damage_every_3sec" "10 30 45" } "04" { "var_type" "FIELD_INTEGER" "initial_move_speed_slow" "-50" //Regains 10 every 3 sec } } "OnAbilityPhaseStart" { "FireEffect" { // This particle is bugged, it has some unattached childs that always generates at 0 0 0 (because viper has 4 wing points) "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" "CASTER" "attach_attack1" } } } "OnSpellStart" { "FireSound" { "EffectName" "hero_viper.viperStrike" "Target" "TARGET" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" "Dodgeable" "0" "ProvidesVision" "1" "VisionRadius" "300" "MoveSpeed" "800" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%initial_damage" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_shadow_strike" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_shadow_strike" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Viper.viperStrikeImpact" "Target" "TARGET" } } "Modifiers" { "modifier_shadow_strike" { "Duration" "%duration" "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_poison_viper.vpcf" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/warden/shadow_strike.lua" "Function" "ShadowStrikeSlow" } } "ThinkInterval" "3" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_every_3sec" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/warden/shadow_strike.lua" "Function" "ShadowStrikeSlowDecay" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_shadow_strike_slow_stack" "Target" "TARGET" } } } "modifier_shadow_strike_slow_stack" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-5" } } } } "human_defend" //Activate to take 50% less damage from Piercing attacks, but have 30% reduced movement speed. { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_defend" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "piercing_damage_reduction" "50" } "02" { "var_type" "FIELD_INTEGER" "movement_speed_reduction" "-30" } } "OnToggleOn" { "RunScript" { "ScriptFile" "units/human/footman.lua" "Function" "Defend" } } "OnToggleOff" { "RemoveModifier" { "ModifierName" "modifier_defend" "Target" "CASTER" } } "Modifiers" { "modifier_defend" { "EffectName" "particles/custom/human/defend.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" } } } } "human_long_rifles" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_long_rifles" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastRange" "600" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "200" } } "Modifiers" { "modifier_long_rifles" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" } } } } "human_animal_war_training" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_animal_war_training" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health" "150" } } "Modifiers" { "modifier_animal_war_training" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyAnimalWarTraining" } } } } } // Sorceress Innate ability "human_slow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_slow" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "600" "AbilityCastPoint" "0.3" "AbilityCooldown" "10" "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "attack_speed" "-25" } "04" { "var_type" "FIELD_INTEGER" "move_speed" "-20" } } "precache" { "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot_slow_debuff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" } "OnSpellStart" { "RemoveModifier" { "ModifierName" "modifier_human_slow" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_human_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_human_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } "FireSound" { "EffectName" "DOTA_Item.RodOfAtos.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_human_slow" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot_slow_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed" } } "modifier_slow_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/human/sorceress.lua" "Function" "SlowAutocast" } } } } } // Ability Researched by sorceress train 1 "human_invisibility" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_invisibility" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "300" "AbilityManaCost" "50" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "120" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" } "OnSpellStart" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Invoker.GhostWalk" } "ApplyModifier" { "ModifierName" "modifier_human_invisibility" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_human_invisibility" { "IsPurgable" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisibility" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_invisibility" "Target" "TARGET" } } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_human_invisibility" "Target" "ATTACKER" } } "OnAbilityExecuted" { "RemoveModifier" { "ModifierName" "modifier_human_invisibility" "Target" "UNIT" } } } } } // Ability Researched by sorceress train 2 "human_polymorph" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_polymorph" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastPoint" "0.1" "AbilityCastRange" "500" "AbilityManaCost" "220" "TargetsAllowed" "organic" "MaxCreepLevel" "5" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "movespeed" "100" } } "precache" { "model" "models/items/hex/sheep_hex/sheep_hex.vmdl" "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.SheepHex.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_hex_sheep" //Lua modifier "Target" "TARGET" "Duration" "%duration" } } } // Priest Innate Ability "human_heal" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_heal" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" "TargetsAllowed" "organic" "RequiresHealthDeficit" "target" "AbilityCastPoint" "0.0" "AbilityCastRange" "250" "AbilityCooldown" "1" "AbilityManaCost" "5" "precache" { "particle" "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal" "25" } "02" { "var_type" "FIELD_INTEGER" "autocast_radius" "500" } } "OnSpellStart" { "Heal" { "HealAmount" "%heal" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_purification_d_glow.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "EffectName" "Hero_Omniknight.Purification" "Target" "TARGET" } } "Modifiers" { "modifier_heal_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "HealAutocast" } } } } } // Ability Researched by priest train 1 "human_dispel_magic" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "human_dispel_magic" "MaxLevel" "1" "AbilityCastRange" "500" "AOERadius" "%radius" "AbilityCooldown" "8.0" "AbilityCastPoint" "0.4" "AbilityManaCost" "75" "TargetsAllowed" "ward" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "200" } "02" { "var_type" "FIELD_INTEGER" "radius" "200" } } "precache" { "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_death_lodestar_burst.vpcf" } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" "EffectAttachType" "world_origin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireSound" { "EffectName" "Brewmaster_Storm.DispelMagic" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "DispelMagic" "Target" "POINT" } } } // Ability Researched by priest train 2 "human_inner_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_inner_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastPoint" "0.0" "AbilityCastRange" "500" "AbilityCooldown" "5" "AbilityManaCost" "35" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "armor_bonus" "5" } "03" { "var_type" "FIELD_INTEGER" "damage_bonus" "10" } } "OnSpellStart" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_inner_fire" } "FireSound" { "EffectName" "DOTA_Item.Buckler.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_inner_fire" { "OnCreated" { "AttachEffect" { "EffectName" "particles/custom/human/inner_fire.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "IsPurgable" "1" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "5" "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "10" } } "modifier_inner_fire_autocast" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_inner_fire_autocast_attackstart" "Aura_Radius" "500" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "OnCreated" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast" } } } "modifier_inner_fire_autocast_attackstart" { "IsHidden" "1" "OnAttack" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast_Attack" } } "OnAttacked" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast_Attacked" } } } } } // Spell Breaker Innate Ability "human_spell_steal" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_spell_steal" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastPoint" "0.0" "AbilityCastRange" "700" "AbilityCooldown" "3" "AbilityManaCost" "75" "precache" { "particle" "particles/units/heroes/hero_rubick/rubick_spell_steal_haze.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_rubick.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "SpellSteal" } } "Modifiers" { "modifier_spell_steal_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "SpellSteal_AutoCast" } } } } } // Ability Researched by human_research_control_magic "human_control_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_control_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityCastPoint" "0.1" "AbilityCastRange" "700" "AbilityCooldown" "5" "AbilityManaCost" "0" "TargetsAllowed" "ward" //Mana cost is .45 mana per hit point. "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_control_rate" "0.45" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "ControlMagicCheck" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "ControlMagic" } } } // Spell Breaker Innate Ability "human_feedback" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_feedback" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "precache" { "particle" "particles/generic_gameplay/generic_manaburn.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_burn" "1.0" } "02" { "var_type" "FIELD_INTEGER" "mana_per_hit" "20" } "03" { "var_type" "FIELD_INTEGER" "mana_per_hit_heroes" "4" } } "Modifiers" { "modifier_human_feedback" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" } "OnOrbImpact" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "ManaBreak" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Antimage.ManaBreak" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/generic_gameplay/generic_manaburn.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } } } } } // Stronger version "human_arcane_tower_feedback" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_feedback" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "precache" { "particle" "particles/generic_gameplay/generic_manaburn.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_burn" "1.0" } "02" { "var_type" "FIELD_INTEGER" "mana_per_hit" "24" } "03" { "var_type" "FIELD_INTEGER" "mana_per_hit_heroes" "12" } "04" { "var_type" "FIELD_INTEGER" "damage_to_summons" "20" } } "Modifiers" { "modifier_human_feedback" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" } "OnOrbImpact" { "RunScript" { "ScriptFile" "units/human/spell_breaker.lua" "Function" "ManaBreak" "Target" "TARGET" } "RunScript" { "ScriptFile" "units/human/arcane_tower.lua" "Function" "DamageToSummons" } } } } } "human_true_sight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_true_sight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } } "Modifiers" { "modifier_human_true_sight" { "Passive" "1" "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_true_sight_aura" "Target" "TARGET" } } } } } "human_flying_machine_bombs" // Allows Flying Machines to attack land units. { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flying_machine_bombs" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_flying_machine_bombs" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/flying_machine.lua" "Function" "UnlockGroundAttack" } } } } } "human_flak_cannons" // Uses powerful cannons to deal area of effect damage against air units { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flak_cannons" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "medium_damage_radius" "150" //half damage } "02" { "var_type" "FIELD_INTEGER" "small_damage_radius" "325" // 1/4 damage } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "units/human/flying_machine.lua" "Function" "FlakCannonDamage" } } "Modifiers" { "modifier_flak_cannons" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/econ/items/gyrocopter/hero_gyrocopter_gyrotechnics/gyro_base_attack.vpcf" "CastAttack" "0" } "OnOrbFire" { "RunScript" { "ScriptFile" "units/human/flying_machine.lua" "Function" "FireFlakCannons" "MediumRadius" "%medium_damage_radius" } } } } } "human_flare" // Launches a Dwarven flare above the target point, which reveals that area for 15 seconds. Reveals invisible units { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_6" "AbilityCastPoint" "1" "AOERadius" "%radius" "AbilityCooldown" "120.0" "precache" { "particle" "particles/units/heroes/hero_rattletrap/rattletrap_rocket_flare_illumination.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_rattletrap.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "duration" "15" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/mortar_team.lua" "Function" "Flare" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Rattletrap.Rocket_Flare.Fire" "Target" "CASTER" } } } "human_fragmentation_shards" // Uses fragmentation mortars to increase damage dealt to Unarmored and Medium armor units. { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_fragmentation_shards" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } } "Modifiers" { "modifier_fragmentation_shards" { "Passive" "1" "IsHidden" "0" "OnCreated" { "RunScript" { "ScriptFile" "units/human/mortar_team.lua" "Function" "UnlockFragmentationShards" } } } } } "human_barrage" // Fires powerful rockets at nearby enemy air units, dealing 25 damage per hit { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_barrage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityDamage" "25" "AbilityCastRange" "%radius" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" } } "Modifiers" { "modifier_barrage" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/siege_engine.lua" "Function" "UnlockAirAttack" } } "OnAttack" { "RunScript" { "ScriptFile" "units/human/siege_engine.lua" "Function" "Barrage" } } } } } "human_storm_hammers" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_storm_hammers" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "units/human/gryphon_rider.lua" "Function" "StormHammerDamage" } } "Modifiers" { "modifier_storm_hammers" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "units/human/gryphon_rider.lua" "Function" "StormHammer" "Target" { "Center" "TARGET" "Line" { "Length" "600" "Thickness" "300" } "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } } } } "human_cloud" // Cast on enemy buildings with ranged attacks to stop the buildings from attacking. Lasts 30 seconds. { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_cloud" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilityCastRange" "800" "AbilityCooldown" "20.0" "AbilityManaCost" "100" "AbilityChannelTime" "30.0" "AOERadius" "%radius" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cloud_duration" "30" } "02" { "var_type" "FIELD_INTEGER" "radius" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/dragonhawk_rider.lua" "Function" "CloudStart" "Target" "POINT" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "units/human/dragonhawk_rider.lua" "Function" "CloudEnd" } } } "human_aerial_shackles" // Magically binds a target enemy air unit, so that it cannot move or attack and takes 30 damage per second. Lasts 40 seconds. { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_aerial_shackles" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "air" "AbilityCastRange" "550" "AbilityCastPoint" "0.1" "AbilityCooldown" "30.0" "AbilityManaCost" "75" "AbilityChannelTime" "40.0" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0" } "02" { "var_type" "FIELD_INTEGER" "damage_per_second" "30.0" } "03" { "var_type" "FIELD_FLOAT" "tick_rate" "0.1" } } "precache" { "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_shackle.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_aerial_shackles" "Target" "TARGET" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_channeling_animation" "Target" "CASTER" "Duration" "%duration" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_channeling_animation" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_aerial_shackles" "Target" "TARGET" } } "Modifiers" { "modifier_aerial_shackles" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "ThinkInterval" "%tick_rate" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second * %tick_rate" } } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_shadowshaman/shadowshaman_shackle.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "CASTER" "attach_staff_generic" //start "TARGET" "attach_hitloc" } } "RunScript" { "ScriptFile" "units/human/dragonhawk_rider.lua" "Function" "LoseFlying" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/human/dragonhawk_rider.lua" "Function" "ReGainFlying" } } } "modifier_channeling_animation" { "IsHidden" "1" "ThinkInterval" "1.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/human/dragonhawk_rider.lua" "Function" "ChannelingAnimation" } } } } } "human_magic_sentry" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_magic_sentry" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } } "Modifiers" { "modifier_magic_sentry" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/items2_fx/ward_true_sight.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_true_sight_aura" "Target" "TARGET" } } } } } "human_reveal" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.3" "AbilityCooldown" "180" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1800" } "02" { "var_type" "FIELD_INTEGER" "duration" "15" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/far_seer/far_sight.lua" "Function" "FarSight" "Target" "POINT" } } } // Ability on Footmen, unlocked by human_research_defend "human_defend_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_defend" "MaxLevel" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "piercing_damage_reduction" "30" } "02" { "var_type" "FIELD_INTEGER" "movement_speed_reduction" "-30" } "03" { "var_type" "FIELD_INTEGER" "reflect_chance" "30" } } } // Ability on Riflemen, unlocked by human_research_long_rifles "human_long_rifles_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_long_rifles" "MaxLevel" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "200" } } } // Ability on Knights, unlocked by human_research_animal_war_training "human_animal_war_training_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_animal_war_training" "MaxLevel" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health" "150" } } } "human_invisibility_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_invisibility" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_polymorph_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_polymorph" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_dispel_magic_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_dispel_magic" "MaxLevel" "0" "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_inner_fire_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_inner_fire" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_control_magic_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_control_magic" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_flying_machine_bombs_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flying_machine_bombs" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_flak_cannons_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flak_cannons" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_flare_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flare" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_fragmentation_shards_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_fragmentation_shards" "MaxLevel" "0" "precache" { "particle" "particles/econ/items/techies/techies_arcana/techies_base_attack_arcana.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_barrage_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_barrage" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_storm_hammers_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_storm_hammers" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_cloud_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_cloud" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Heroes "human_train_archmage1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } "human_train_mountain_king1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_zuus" } } } "human_train_paladin1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_omniknight" } } } "human_train_blood_mage1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_Invoker" } } } // Passive version indicates that the hero has already been trained, stopping the next rank of that hero "human_train_archmage_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_mountain_king_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_paladin_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_blood_mage_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Version 2 costs 450g and 100lumber and requires to have upgraded the city level 2 "human_train_archmage2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } "human_train_mountain_king2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_zuus" } } } "human_train_paladin2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_omniknight" } } } "human_train_blood_mage2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_Invoker" } } } // Version 3 costs the same but requires City Hall level 3 "human_train_archmage3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } "human_train_mountain_king3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_zuus" } } } "human_train_paladin3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_omniknight" } } } "human_train_blood_mage3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_Invoker" } } } // Disabled Versions //Ranks 2 "human_train_archmage2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_mountain_king2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_paladin2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_blood_mage2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Ranks 3 "human_train_archmage3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_mountain_king3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_paladin3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "human_train_blood_mage3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Revival, one ability for each level to scale the gold and channel time (volvo pls) // 180 30 "human_train_archmage_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 225 35 "human_train_archmage_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 270 40 "human_train_archmage_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 315 45 "human_train_archmage_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 360 50 "human_train_archmage_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 405 60 "human_train_archmage_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 450 70 "human_train_archmage_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 495 80 "human_train_archmage_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 540 90 "human_train_archmage_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 585 100 "human_train_archmage_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_archmage" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_keeper_of_the_light" } } } // 180 30 "human_train_mountain_king_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 225 35 "human_train_mountain_king_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 270 40 "human_train_mountain_king_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 315 45 "human_train_mountain_king_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 360 50 "human_train_mountain_king_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 405 60 "human_train_mountain_king_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 450 70 "human_train_mountain_king_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 495 80 "human_train_mountain_king_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 540 90 "human_train_mountain_king_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 585 100 "human_train_mountain_king_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mountain_king" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_zuus" } } } // 180 30 "human_train_paladin_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 225 35 "human_train_paladin_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 270 40 "human_train_paladin_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 315 45 "human_train_paladin_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 360 50 "human_train_paladin_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 405 60 "human_train_paladin_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 450 70 "human_train_paladin_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 495 80 "human_train_paladin_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 540 90 "human_train_paladin_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 585 100 "human_train_paladin_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_paladin" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_omniknight" } } } // 180 30 "human_train_blood_mage_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 225 35 "human_train_blood_mage_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 270 40 "human_train_blood_mage_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 315 45 "human_train_blood_mage_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 360 50 "human_train_blood_mage_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 405 60 "human_train_blood_mage_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 450 70 "human_train_blood_mage_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 495 80 "human_train_blood_mage_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 540 90 "human_train_blood_mage_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // 585 100 "human_train_blood_mage_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_blood_mage" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_invoker" } } } // Affects all ground units (except for builders, which have their inventories filled with items) "human_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MUTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Enable" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } "OnDeath" { // Item drops when unit is killed "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "BackpackDrop" } } } } } "human_backpack_disabled" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack_disabled" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Disable" } } } } } "human_research_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "DisableResearch" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_backpack_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Town Hall -> Keep Upgrade. "human_train_keep" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_keep" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "320" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "320" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "205" } } "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" "ModifierName" "modifier_building_particle" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "human_keep" } } "Modifiers" { "modifier_building_particle" { "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_fx" } } } } } } // Dummy Ability, requires Halls of Kings "human_train_castle_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_castle" "MaxLevel" "0" // npc_dota_buildings will override the MaxLevel 0 to 1, so this is needed. "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Keep -> Castle Upgrade. "human_train_castle" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_castle" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "360" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "210" } } "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "human_castle" } } "Modifiers" { "modifier_building_particle" { "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/radiant_fx2/good_ancient001_ambient.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_fx" } } } } } } // Passive particles "human_keep_passive" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" } "Modifiers" { "modifier_keep_particle" { "Passive" "1" "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_fx" } } } } } } "human_castle_passive" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient.vpcf" } "Modifiers" { "modifier_castle_particle" { "Passive" "1" "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/radiant_fx2/good_ancient001_ambient.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_fx" } } } } } } //human_train_guard_tower //human_train_cannon_tower //human_train_arcane_tower // Scout -> Guard Tower upgrade "human_train_guard_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_guard_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "70" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "70" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "human_guard_tower" } } } "human_train_guard_tower_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_guard_tower" "MaxLevel" "0" // npc_dota_buildings will override the MaxLevel 0 to 1, so this is needed. "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_cannon_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_cannon_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "170" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "75.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "170" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "human_cannon_tower" } } } "human_train_cannon_tower_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_cannon_tower" "MaxLevel" "0" // npc_dota_buildings will override the MaxLevel 0 to 1, so this is needed. "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_arcane_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_arcane_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "40" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "40" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } } "precache" { "particle" "particles/radiant_fx2/good_ancient001_ambient_fallback_med.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "human_arcane_tower" } } } // Abilities that are available will be Undroppable Unsellable Items // Dummy abilities with max level 0 for those buildings that have requirements // Upgrading a building is replacing the unit on the same position // human_town_hall - Item // human_keep - Upgrade // human_castle - Upgrade // human_farm - Item // human_altar_of_kings - Item // human_lumber_mill - Item // human_scout_tower - Item // human_guard_tower - Upgrade // human_cannon_tower - Upgrade // human_arcane_tower - Upgrade // human_arcane_vault - Item // human_barracks - Ability, no requirements. // human_blacksmith - Ability, requires Town Hall // human_arcane_sanctum - Ability, requires Keep // human_workshop - Ability, requires Keep and Blacksmith // human_gryphon_aviary - Ability, requires Keep and Lumber Mill "human_build_barracks" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_barracks" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityCastPoint" "0" // BuildingHelper info "Building" "1" //bool "BuildingSize" "5" "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "RequiresRepair" "1" //bool "ModelRotation" "90.0" "UnitName" "human_barracks" "AbilityCooldown" "0" "AbilityGoldCost" "160" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "160" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "human_build_blacksmith_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_blacksmith" "MaxLevel" "0" } "human_build_blacksmith" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_blacksmith" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildingSize" "3" "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "RequiresRepair" "1" "ModelRotation" "270.0" "UnitName" "human_blacksmith" "AbilityCooldown" "0" "AbilityGoldCost" "140" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "140" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "human_build_arcane_sanctum_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_arcane_sanctum" "MaxLevel" "0" } "human_build_arcane_sanctum" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_arcane_sanctum" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildingSize" "5" "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool. //"CancelsBuildingGhost" "0" //bool "RequiresRepair" "1" "ModelRotation" "90.0" "UnitName" "human_arcane_sanctum" "AbilityCooldown" "0" "AbilityGoldCost" "150" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "140" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "human_build_workshop_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_workshop" "MaxLevel" "0" } "human_build_workshop" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_workshop" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildingSize" "5" "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "RequiresRepair" "1" "UnitName" "human_workshop" "AbilityCooldown" "0" "AbilityGoldCost" "140" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "140" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "140" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "human_build_gryphon_aviary_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_gryphon_aviary" "MaxLevel" "0" } "human_build_gryphon_aviary" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_build_gryphon_aviary" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildingSize" "3" "BuildTime" "75.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "RequiresRepair" "1" "ModelRotation" "135.0" "UnitName" "human_gryphon_aviary" "AbilityCooldown" "0" "AbilityGoldCost" "140" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "75.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "140" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } // Orders the peasants to move towards the nearest Town Hall and replace itself with a Militia unit for a duration "human_call_to_arms" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_call_to_arms" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityMultiOrder" "1" "AbilityCastRange" "3000" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "CallToArms" } } } // Single Target version "human_call_to_arms_peasant" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_call_to_arms" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "CallToArmsPeasant" } } } // Sends the Militia to the city center for swapping back to Peasant, prematurely "human_back_to_work" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_back_to_work" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "BackToWork" } } "Modifiers" { "modifier_militia" { "Duration" "%duration" "Passive" "1" "TextureName" "human_call_to_arms" "OnDestroy" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "CallToArmsEnd" } } } } } "human_gather" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_gather" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_TREE | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "CastFilterRejectCaster" "1" // Gatherer Key Values "LumberGainInterval" "1" "LumberPerInterval" "1" "DamageTree" "1" "GoldGainInterval" "0.5" "GoldPerInterval" "10" "GoldMineInside" "1" "DamageMine" "10" // Repair Key Values "CanAssistConstruction" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "gold_capacity" "10" } "02" { "var_type" "FIELD_INTEGER" "lumber_capacity" "10 20 30" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } "RunScript" { "ScriptFile" "units/repair.lua" "Function" "Repair" } } //"ScriptFile" "units/human/peasant.lua" //"Function" "HideBackpack" } "human_return_resources" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_return_resources" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" //Fake Toggle // When the ability is active, it means there are resources left to return (else it will be hidden) "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "ReturnResources" } } //ScriptFile" "units/human/peasant.lua" //"Function" "ShowBackpack" //"ScriptFile" "units/human/peasant.lua" //"Function" "HideBackpack" } "human_gryphon_mounted_rider" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_gryphon_mounted_rider" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/gryphon_rider.lua" "Function" "Mount" } } "OnAttack" { "RunScript" { "ScriptFile" "units/human/gryphon_rider.lua" "Function" "FakeAttack" } } } "modifier_disable_rider" { "IsHidden" "1" "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } "human_knight_mounted_rider" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_knight_mounted_rider" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/knight.lua" "Function" "Mount" } } "OnAttackStart" { "RunScript" { "ScriptFile" "units/human/knight.lua" "Function" "FakeAttack" } } } } } //==========================================================// // HUMAN RESEARCH ABILITIES // //==========================================================// // Barracks // Research Defend "human_research_defend" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_defend" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_defend_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_defend" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Long Rifles "human_research_long_rifles" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_long_rifles" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_long_rifles_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_long_rifles" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Animal War Training "human_research_animal_war_training" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_animal_war_training" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_animal_war_training_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_animal_war_training" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // End Barracks Researches // Lumber Mill // Research Lumber Harvesting 1/2 "human_research_lumber_harvesting1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_lumber_carried" "10" } "02" { "var_type" "FIELD_FLOAT" "research_time" "60" } "03" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Upgrade peasants "RunScript" { "ScriptFile" "units/human/lumber_mill.lua" "Function" "HarvestResearchFinished" "Level" "1" } } } "human_research_lumber_harvesting1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_lumber_harvesting2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_lumber_carried" "20" } "02" { "var_type" "FIELD_FLOAT" "research_time" "75" } "03" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Upgrade peasants "RunScript" { "ScriptFile" "units/human/lumber_mill.lua" "Function" "HarvestResearchFinished" "Level" "2" } } } "human_research_lumber_harvesting2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Masonry 1/2/3 "human_research_masonry1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_masonry1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_masonry2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25 50 75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_masonry2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_masonry3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_masonry3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // End Lumber Mill Researches // Blacksmith // Research Forged Swords 1/2/3 "human_research_forged_swords1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_forged_swords1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_forged_swords2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "175" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_forged_swords2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_forged_swords3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_forged_swords3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_forged_swords3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Plating 1/2/3 "human_research_plating1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_plating1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_plating2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_plating2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_plating3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "175" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_plating3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_plating3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Ranged Weapons 1/2/3 "human_research_ranged_weapons1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_ranged_weapons1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_ranged_weapons2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "175" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_ranged_weapons2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_ranged_weapons3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_ranged_weapons3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_ranged_weapons3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Leather Armor 1/2/3 "human_research_leather_armor1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_leather_armor1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_leather_armor2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_leather_armor2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_leather_armor3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_leather_armor3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_leather_armor3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // End Blacksmith Researches // Arcane Sanctum // Research Priest Training 1/2 "human_research_priest_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_priest_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_priest_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_priest_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Sorceress Training 1/2 "human_research_sorceress_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_sorceress_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_sorceress_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_sorceress_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Research Control Magic "human_research_control_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_control_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_control_magic_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_control_magic" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // End Arcane Sanctum Researches // Workshop - How to fit 3 units and 6 researches? "human_research_flare" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_flare_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flare" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_flak_cannons" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flak_cannons" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_flak_cannons_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flak_cannons" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_flying_machine_bombs" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flying_machine_bombs" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_flying_machine_bombs_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_flying_machine_bombs" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_fragmentation_shards" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_fragmentation_shards" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_fragmentation_shards_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_fragmentation_shards" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_barrage" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_barrage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_barrage_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_barrage" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // End Workshop // Gryphon Aviary "human_research_storm_hammers" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_storm_hammers" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "225" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_storm_hammers_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_storm_hammers" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_research_cloud" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_cloud" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "human_research_cloud_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_cloud" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_peasant" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_peasant" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "15.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_peasant" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "HarvestUpgrade" } } } } } "human_train_footman" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_footman" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "135" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "20.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_footman" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_rifleman" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_rifleman" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "205" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "26.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "205" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_rifleman" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_knight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_knight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "245" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "20.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "245" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_knight" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_sorceress" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_sorceress" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "155" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "155" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_sorceress" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_priest" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_priest" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "135" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "10" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_priest" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_spell_breaker" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_spell_breaker" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "215" // From "GoldCost" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "215" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_spell_breaker" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_flying_machine" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_flying_machine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "90" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "13.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "90" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_flying_machine" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_mortar_team" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mortar_team" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "180" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "70" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_mortar_team" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_siege_engine" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_siege_engine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "195" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "195" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_siege_engine" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_gryphon_rider" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_gryphon_rider" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "280" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "26.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "280" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "70" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_gryphon_rider" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_dragonhawk_rider" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_dragonhawk_rider" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "human_dragonhawk_rider" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "human_train_rifleman_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_rifleman" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_knight_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_knight" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_sorceress_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_sorceress" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_priest_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_priest" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_spell_breaker_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_spell_breaker" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_flying_machine_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_flying_machine" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_mortar_team_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_mortar_team" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_siege_engine_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_siege_engine" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_gryphon_rider_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_gryphon_rider" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "human_train_dragonhawk_rider_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_train_dragonhawk_rider" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } //human_forged_swords //human_plating //human_ranged_weapons //human_leather_armor //human_masonry //human_lumber_harvesting //human_priest_training //human_sorceress_training "human_forged_swords1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_forged_swords1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "knight_damage" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "gryphon_rider_damage" "6 12 18" } } "Modifiers" { "modifier_forged_swords" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_knight_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%knight_damage" } } "modifier_gryphon_rider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%gryphon_rider_damage" } } } } "human_forged_swords2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_forged_swords2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "knight_damage" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "gryphon_rider_damage" "6 12 18" } } "Modifiers" { "modifier_forged_swords" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_knight_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%knight_damage" } } "modifier_gryphon_rider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%gryphon_rider_damage" } } } } "human_forged_swords3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_forged_swords3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "knight_damage" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "gryphon_rider_damage" "6 12 18" } } "Modifiers" { "modifier_forged_swords" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_knight_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%knight_damage" } } "modifier_gryphon_rider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%gryphon_rider_damage" } } } } "human_plating1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_plating1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_plating" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_plating2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_plating2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_plating" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_plating3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_plating3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_plating" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_ranged_weapons1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_ranged_weapons1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "siege_engine_damage" "6 12 18" } "03" { "var_type" "FIELD_INTEGER" "mortar_team_damage" "7 14 21" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_siege_engine_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%siege_engine_damage" } } "modifier_mortar_team_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%mortar_team_damage" } } } } "human_ranged_weapons2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_ranged_weapons2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "siege_engine_damage" "6 12 18" } "03" { "var_type" "FIELD_INTEGER" "mortar_team_damage" "7 14 21" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_siege_engine_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%siege_engine_damage" } } "modifier_mortar_team_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%mortar_team_damage" } } } } "human_ranged_weapons3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_ranged_weapons3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "siege_engine_damage" "6 12 18" } "03" { "var_type" "FIELD_INTEGER" "mortar_team_damage" "7 14 21" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/human_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_siege_engine_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%siege_engine_damage" } } "modifier_mortar_team_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%mortar_team_damage" } } } } "human_leather_armor1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_leather_armor1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_leather_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_leather_armor2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_leather_armor2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_leather_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_leather_armor3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "human_research_leather_armor3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_leather_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } //Each Level of Masonry is 20% extra Health and 1 extra armor (2 for Scout tower) "human_masonry1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health_pct" "20 40 60" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "1 2 3" } } "Modifiers" { "modifier_human_masonry" { "Passive" "1" "IsHidden" "0" "OnCreated" { "RunScript" { "ScriptFile" "units/human/lumber_mill.lua" "Function" "Masonry" "Level" "1" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } "modifier_human_masonry_light_armor" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_masonry2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health_pct" "20 40 60" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "1 2 3" } } "Modifiers" { "modifier_human_masonry" { "Passive" "1" "IsHidden" "0" "OnCreated" { "RunScript" { "ScriptFile" "units/human/lumber_mill.lua" "Function" "Masonry" "Level" "2" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } "modifier_human_masonry_light_armor" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_masonry3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_masonry3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health_pct" "20 40 60" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "1 2 3" } } "Modifiers" { "modifier_human_masonry" { "Passive" "1" "IsHidden" "0" "OnCreated" { "RunScript" { "ScriptFile" "units/human/lumber_mill.lua" "Function" "Masonry" "Level" "3" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } // Give 1 extra source of armor to light armored buildings (i.e. Scout Tower) "modifier_human_masonry_light_armor" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "human_lumber_harvesting1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_lumber_carried" "10 20" } } "Modifiers" { "modifier_human_lumber_harvesting1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "LumberHarvesting" "Level" "1" } } } } } "human_lumber_harvesting2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_lumber_harvesting2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_lumber_carried" "10 20" } } "Modifiers" { "modifier_human_lumber_harvesting2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/human/peasant.lua" "Function" "LumberHarvesting" "Level" "2" } } } } } //Priest Adept Training //Increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives Priests the ability to cast Dispel Magic. "human_priest_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_priest_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "2" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Priest Master Training //Further increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives him the ability to cast Inner Fire. "human_priest_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_priest_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_priest_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Sorceress Adept Training //Increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives the Sorceress the ability to cast Invisibility. "human_sorceress_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_sorceress_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "2" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Sorceress Master Training //Further increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives the Sorceress the ability to cast Polymorph. "human_sorceress_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_research_sorceress_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_sorceress_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } // Notes: This attaches the arcana particles to head and hands, AttachWearable code is "legion_arcana" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "precache" { "particle" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_ambient_arcana.vpcf" "particle" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_arcana_weapon.vpcf" "particle" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_arcana_weapon_offhand.vpcf" "particle" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_blades.vpcf" } "Modifiers" { "modifier_arcana" { "Passive" "1" "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_ambient_arcana.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_eyeL" "CASTER" "attach_eyeR" "CASTER" "attach_hitloc" } } "AttachEffect" { "EffectName" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_arcana_weapon.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" } } "AttachEffect" { "EffectName" "particles/econ/items/legion/legion_weapon_voth_domosh/legion_arcana_weapon_offhand.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack2" } } } } } } // Link the Altars together with this ability "ability_altar" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_altar" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "LinkAltar" } } } } } "UI_UNITSHOPS_PLACEHOLDER_Hero_Revive" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_detonate" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" } "hero_ability_name" { "BaseClass" "ability_datadriven" "AbilityTextureName" "hero_ability_name" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75 130 200" "precache" { "particle" "particles/units/heroes/hero_magnataur/magnataur_shockwave.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_magnataur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "value" "900" } } } "ability_hidden_filler" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN" "MaxLevel" "1" } "ability_shop" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "precache" { "particle" "particles/newplayer_fx/npx_moveto_arrow.vpcf" } "Modifiers" { "modifier_shop" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "mechanics/shops.lua" "Function" "ShopThink" } } "OnDestroy" { "RunScript" { "ScriptFile" "mechanics/shops.lua" "Function" "RemoveShop" } } } "modifier_create_shop" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/shops.lua" "Function" "SetupShop" } } } } } "ability_tavern" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_tavern" { "Passive" "1" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE | MODIFIER_ATTRIBUTE_PERMANENT" "States" { "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "attack_ground" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "attack_ground" "MaxLevel" "1" "TargetsAllowed" "ground,ward" "AbilityCastRange" "1150" "AOERadius" "150" "AbilityMultiOrder" "1" //Extend this ability cast to other units with the ability in the current selection group "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "minimum_range" "250" } "02" { "var_type" "FIELD_INTEGER" "splash_radius" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "mechanics/attacks.lua" "Function" "AttackGround" "Target" "POINT" } } "Modifiers" { "modifier_attacking_ground" { "IsHidden" "1" "OnOrder" { "RemoveModifier" { "ModifierName" "modifier_attacking_ground" "Target" "CASTER" } "RunScript" { "ScriptFile" "mechanics/attacks.lua" "Function" "StopAttackGround" } } "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } "neutral_abolish_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_abolish_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "50" "TargetsAllowed" "ward" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "300" } } "precache" { "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_lodestar_transform.vpcf" "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_death_lodestar_burst.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_enchantress.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Enchantress.EnchantCast" "Target" "TARGET" } "RunScript" { "ScriptFile" "units/nightelf/dryad.lua" "Function" "AbolishMagic" } } "Modifiers" { "modifier_abolish_magic_autocast" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/dryad.lua" "Function" "AbolishMagicAutocast" } } } } } // Raises 6 dead units in an area for 120 seconds. // 240 CD "neutral_animate_dead" { "BaseClass" "ability_datadriven" "AbilityTextureName" "death_knight_animate_dead" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "900" "AbilityCastPoint" "0.453" "AbilityCooldown" "180" "AbilityManaCost" "175" "RequiresCorpsesAround" "900" "precache" { "particle" "particles/custom/abaddon_death_coil_explosion.vpcf" "particle" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" "particle" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "40" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } "03" { "var_type" "FIELD_INTEGER" "max_units_resurrected" "6" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Abaddon.AphoticShield.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/death_knight/animate_dead.lua" "Function" "AnimateDead" } } "Modifiers" { "modifier_animate_dead" { "OnCreated" { "AttachEffect" { "EffectName" "particles/custom/abaddon_death_coil_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" // Control Point 0 "TARGET" "attach_origin" // Control Point 1 } } } "StatusEffectName" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" "StatusEffectPriority" "15" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Gives a chance that an attack will do 25 bonus damage and stun his opponent for 2 seconds. "neutral_bash" { "BaseClass" "ability_datadriven" "AbilityTextureName" "mountain_king_bash" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityDamage" "25" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts" "particle" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bash_chance" "15" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "2.0" } } "Modifiers" { "modifier_bash" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "Random" { "Chance" "%bash_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_FACELESS_BASH" "OnSuccess" { "ActOnTargets" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "FireSound" { "EffectName" "Hero_FacelessVoid.TimeLockImpact" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_bash_stun" "Target" "TARGET" "Duration" "%stun_duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } } } } } "modifier_bash_stun" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "StatusEffectPriority" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // 2 bonus damage, 6 mana, 200 hit point Lesser Dark Minion "neutral_black_arrow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_black_arrow" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityManaCost" "6" "AbilityDamage" "2" "precache" { "particle" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "80" } "02" { "var_type" "FIELD_INTEGER" "dark_minion_health" "215" } "03" { "var_type" "FIELD_INTEGER" "dark_minion_damage" "10" } } "Modifiers" { "modifier_black_arrow_check" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/dark_ranger/black_arrow.lua" "Function" "OrbCheck" } } } "modifier_black_arrow" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } } "OnOrbImpact" { "ApplyModifier" { "ModifierName" "modifier_black_arrow_spawn" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" //No minion spawns from heroes } } "FireSound" { "EffectName" "Hero_Medusa.MysticSnake.Target" "Target" "CASTER" } "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } "modifier_black_arrow_spawn" { "IsHidden" "1" "Duration" "0.1" "OnDeath" { "RunScript" { "ScriptFile" "heroes/dark_ranger/black_arrow.lua" "Function" "SpawnMinion" } } } } } // Calls down waves of freezing ice shards that damage units in a target area. 50% damage reduction vs. buildings. "neutral_blizzard" { "BaseClass" "ability_datadriven" "AbilityTextureName" "archmage_blizzard" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_5" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "6.0" "AbilityManaCost" "75" "AOERadius" "%radius" "AbilityChannelTime" "6.0" "BuildingReduction" "0.5" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "wave_count" "6" } "03" { "var_type" "FIELD_INTEGER" "wave_damage" "15" } "04" { "var_type" "FIELD_INTEGER" "max_wave_damage" "150" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_freezing_field_snow.vpcf" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_freezing_field_explosion.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardStartPoint" "Target" "POINT" } "ApplyModifier" { "ModifierName" "modifier_blizzard_channelling" "Target" "CASTER" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardEnd" } } "Modifiers" { "modifier_blizzard_channelling" { "IsHidden" "1" "ThinkInterval" "0.99" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "ApplyAnimation" } } } "modifier_blizzard_wave" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardWave" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/archmage/blizzard.lua" "Function" "BlizzardWave" } } } } } "neutral_bloodlust" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_bloodlust" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "40" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_increase" "40" } "03" { "var_type" "FIELD_INTEGER" "movement_speed_increase" "25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ogre_magi.vsndevts" "soundfile" "sounds/weapons/hero/ogre_magi/bloodlust_target.vsnd" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_bloodlust" "Target" "TARGET" "Duration" "%duration" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_cast.vpcf" "EffectAttachType" "follow_customorigin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" //Start "CASTER" "attach_hitloc" //Velocity noise, not used "CASTER" "attach_attack2" //Hands "TARGET" "attach_hitloc" //Hit } } } "Modifiers" { "modifier_bloodlust_autocast_aura" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_bloodlust_autocast_attackstart" "Aura_Radius" "600" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast" } } } "modifier_bloodlust_autocast_attackstart" { "IsHidden" "1" "OnAttack" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast_Attack" } } "OnAttacked" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast_Attacked" } } } } } // Breathes a cone of fire at enemy units, dealing 150 damage. "neutral_breath_of_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pandaren_breath_of_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0.3" "AbilityCooldown" "10.0" "AbilityManaCost" "70" "AbilityDamage" "150" "precache" { "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn_creep.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/pandaren/breath_of_fire.lua" "Function" "BreathFireStart" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" "MoveSpeed" "1000" "StartRadius" "150" "StartPosition" "attach_origin" "EndRadius" "250" "FixedDistance" "500" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_DragonKnight.BreathFire" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/pandaren/breath_of_fire.lua" "Function" "BreathFire" } } } // Breaths a cone of frost at enemy units that deals 50 initial damage, and 7 damage per second over 5 seconds. //"neutral_breath_of_frost" //"neutral_brilliance_aura" "neutral_cannibalize" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_cannibalize" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityChannelTime" "33" "AbilityCastRange" "50" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilityMultiOrder" "1" "RequiresCorpsesAround" "800" "RequiresHealthDeficit" "self" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "33" } "02" { "var_type" "FIELD_INTEGER" "health_per_second" "10" } "03" { "var_type" "FIELD_INTEGER" "search_radius" "800" } } "precache" { "particle" "particles/items2_fx/soul_ring_blood.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/ghoul.lua" "Function" "CannibalizeStart" } } "Modifiers" { "modifier_cannibalize" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%health_per_second" } } "modifier_cannibalize_properties" { "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "units/undead/ghoul.lua" "Function" "CannibalizeEnd" } } "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } "neutral_carrion_swarm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_carrion_swarm" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "10.0" "AbilityManaCost" "110" "AbilityDamage" "75" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_carrion_swarm.vpcf" //Can't attach the bats "particle" "particles/econ/items/death_prophet/death_prophet_acherontia/death_prophet_acher_swarm.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_damage" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/dread_lord/carrion_swarm.lua" "Function" "CarrionSwarmStart" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/econ/items/death_prophet/death_prophet_acherontia/death_prophet_acher_swarm.vpcf" "MoveSpeed" "1100" "StartRadius" "150" "EndRadius" "300" "StartPosition" "attach_attack1" "FixedDistance" "700" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_DeathProphet.CarrionSwarm" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_DeathProphet.CarrionSwarm.Damage" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/dread_lord/carrion_swarm.lua" "Function" "CarrionSwarmDamage" } } } "neutral_chain_lightning" { "BaseClass" "ability_datadriven" "AbilityTextureName" "far_seer_chain_lightning" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "700" "AbilityCastPoint" "0.2" "AbilityCooldown" "9.0" "AbilityManaCost" "120" "precache" { "particle" "particles/items_fx/chain_lightning.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lightning_damage" "85" } "02" { "var_type" "FIELD_INTEGER" "lightning_bounces" "4" } "03" { "var_type" "FIELD_INTEGER" "bounce_range" "500" } "04" { "var_type" "FIELD_INTEGER" "lightning_decay" "20" } "05" { "var_type" "FIELD_FLOAT" "time_between_bounces" "0.2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/far_seer/chain_lightning.lua" "Function" "ChainLightning" } } } "neutral_charm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_charm" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "TargetsAllowed" "organic" "MaxCreepLevel" "5" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "150.0" "AbilityManaCost" "70" "precache" { "particle" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/dark_ranger/charm.lua" "Function" "Charm" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "EffectName" "Hero_Chen.HolyPersuasionCast" "Target" "CASTER" } } } "neutral_cleaving_attack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_cleaving_attack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "TargetsAllowed" "ground" "AbilityCastRange" "200" "precache" { "particle" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cleave_damage" "30" } "02" { "var_type" "FIELD_INTEGER" "cleave_radius" "200.0" } } "Modifiers" { "modifier_cleaving_attack" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "CleaveAttack" { "CleavePercent" "%cleave_damage" "CleaveRadius" "%cleave_radius" "CleaveEffect" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } } } } } "neutral_cold_arrows" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_frost_arrows" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "600" "AbilityManaCost" "10" "AbilityDamage" "5" "precache" { "particle" "particles/units/heroes/hero_drow/drow_frost_arrow.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "slow_hero_duration" "0.75" } "02" { "var_type" "FIELD_FLOAT" "slow_creep_duration" "3" } "03" { "var_type" "FIELD_INTEGER" "slow_percentage" "-25" } } "Modifiers" { "modifier_frost_arrows" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_drow/drow_frost_arrow.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_DrowRanger.FrostArrows" "Target" "CASTER" } } "OnOrbImpact" { "ApplyModifier" { "ModifierName" "modifier_frost_arrows_slow" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%slow_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_frost_arrows_slow" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%slow_creep_duration" } "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } "modifier_frost_arrows_slow" { "IsDebuff" "1" "TextureName" "naga_sea_witch_frost_arrows" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_percentage" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_percentage" } "EffectName" "particles/generic_gameplay/generic_slowed_cold.vpcf" "EffectAttachType" "attach_hitloc" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" } } } "neutral_command_aura" { "BaseClass" "ability_lua" "ScriptFile" "items/auras/command.lua" "AbilityTextureName" "neutral_command_aura" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "MaxLevel" "1" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_bonus_pct" "10" } "03" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "neutral_cripple" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_cripple" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0.3" "AbilityCooldown" "10" "AbilityManaCost" "175" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "creep_duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "attack_speed_reduction" "-50" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_reduction" "-75" } "05" { "var_type" "FIELD_INTEGER" "damage_reduction" "-50" } } "precache" { "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "soundfile" "sounds/items/rod_of_atos.vsnd" } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.RodOfAtos.Activate" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_cripple" { "IsPurgable" "1" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_SECONDARY" "%attack_speed_reduction" } } } } //Gives a 20% chance to do 2 times normal damage on an attack. "neutral_critical_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "blademaster_critical_strike" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "precache" { "particle" "particles/econ/items/juggernaut/jugg_sword_fireborn_odachi/jugg_crit_blur_fb_odachi.vpcf" "particle" "particles/units/heroes/hero_juggernaut/jugg_crit_blur_impact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_skeletonking.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_bonus" "200" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "20" } } "Modifiers" { "modifier_critical_strike" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "FireSound" { "EffectName" "Hero_SkeletonKing.CriticalStrike" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/econ/items/juggernaut/jugg_sword_fireborn_odachi/jugg_crit_blur_fb_odachi.vpcf" "EffectAttachType" "attach_sword" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } "modifier_critical_strike_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_bonus" } "OnAttackLanded" { "FireEffect" { "EffectName" "particles/units/heroes/hero_juggernaut/jugg_crit_blur_impact.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_critical_strike_crit" "Target" "CASTER" } } } } } //"neutral_crushing_wave" "neutral_curse" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_curse" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.1" "AbilityCooldown" "1" "AbilityManaCost" "40" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "unit_duration" "120" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "60" } "03" { "var_type" "FIELD_INTEGER" "miss_chance" "33" } } "precache" { // target particle "particle" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_meld_focal_overhead.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_undead_curse" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_undead_curse" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%unit_duration" } } "Modifiers" { "modifier_undead_curse" { "EffectName" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_meld_focal_overhead.vpcf" "EffectAttachType" "follow_overhead" "IsPurgable" "1" "TextureName" "undead_curse" "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_chance" } } "modifier_undead_curse_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "CurseAutocast" } } } } } "neutral_cyclone" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_cyclone" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground,organic" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "5" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "01" { "var_type" "FIELD_INTEGER" "hero_duration" "6" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_cyclone.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } } //"neutral_death_coil" "neutral_devotion_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/paladin/devotion_aura.lua" "AbilityTextureName" "paladin_devotion_aura" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "armor_bonus" "1.5" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "neutral_devour" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_devour" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "120" "AbilityCastPoint" "0.5" "AbilityCooldown" "0" "AbilityManaCost" "0" "TargetsAllowed" "ground,organic" "MaxCreepLevel" "5" "AI" { "CastLogic" "OnCooldown" } "AbilitySpecial" { "02" { "var_type" "FIELD_FLOAT" "delay" "0.5" } "03" { "var_type" "FIELD_INTEGER" "radius" "250" } "04" { "var_type" "FIELD_INTEGER" "damage_per_second" "5" } } "precache" { "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_devour.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourPhase" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourStart" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourDeath" } } "Modifiers" { "modifier_devour_devouring" { "OnDeath" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourDeath" } } } "modifier_devour_debuff" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourThink" } } "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_PASSIVES_DISABLED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_DISABLE_HEALING" "1" } } } } "neutral_devour_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_devour_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "7" "AbilityManaCost" "0" "AOERadius" "200" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "health_restore" "50" } "03" { "var_type" "FIELD_INTEGER" "mana_restore" "75" } // The restoration is per UNIT AFFECTED, not per BUFF DEVOURED. "04" { "var_type" "FIELD_INTEGER" "summoned_unit_damage" "180" } // This IGNORES friendly buffs. } "precache" { // target particle "particle" "particles/generic_gameplay/generic_purge.vpcf" // caster particle "particle" "particles/econ/items/antimage/antimage_weapon_basher_ti5/antimage_manavoid_ti_5.vpcf" // point particle "particle" "particles/units/heroes/hero_dark_seer/dark_seer_vacuum_shockwave.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_anti_mage.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "DevourMagic" "Target" "POINT" } } } //"neutral_disease_cloud" "neutral_dispel_magic" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "human_dispel_magic" "MaxLevel" "1" "AbilityCastRange" "500" "AOERadius" "%radius" "AbilityCooldown" "8.0" "AbilityCastPoint" "0.4" "AbilityManaCost" "75" "TargetsAllowed" "ward" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "200" } "02" { "var_type" "FIELD_INTEGER" "radius" "200" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" "EffectAttachType" "world_origin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireSound" { "EffectName" "Brewmaster_Storm.DispelMagic" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "DispelMagic" "Target" "POINT" } } } "neutral_divine_shield" { "BaseClass" "ability_datadriven" "AbilityTextureName" "paladin_divine_shield" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityCooldown" "35" "AbilityManaCost" "25" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "precache" { "particle" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shield_duration" "15" } } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_paladin_divine_shield" } "RunScript" { "ScriptFile" "heroes/paladin/divine_shield.lua" "Function" "DivineShieldPurge" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_Omniknight.GuardianAngel.Cast" } } "Modifiers" { "modifier_paladin_divine_shield" { "EffectName" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" "EffectAttachType" "follow_origin" "Duration" "%shield_duration" "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE" "1" } } } } //"neutral_endurance_aura" "neutral_ensnare" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ensnare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "16" "AbilityManaCost" "0" "AI" { "CastLogic" "OnCooldown" "PriorizeAirUnits" "1" "ModifierName" "modifier_ensnare" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "2" } } "precache" { "particle" "particles/units/heroes/hero_siren/siren_net.vpcf" "particle" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_NagaSiren.Ensnare.Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "1000" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "ApplyModifier" { "ModifierName" "modifier_ensnare" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_ensnare" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } "Modifiers" { "modifier_ensnare" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_siren/siren_net.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/orc/ensnare.lua" "Function" "Ensnare" } "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/ensnare.lua" "Function" "EnsnareDestroy" } "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } } } } "neutral_entangling_roots" { "BaseClass" "ability_datadriven" "AbilityTextureName" "keeper_entangling_roots" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "8.0" "AbilityManaCost" "75" "precache" { "particle" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_body_cauldron.vpcf" "particle" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_cauldron.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_entangle_body.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_treant.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "10" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "3" } "03" { "var_type" "FIELD_INTEGER" "creep_duration" "8" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Treant.Overgrowth.Cast" "Target" "TARGET" } "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "ApplyModifier" { "ModifierName" "modifier_entangling_roots" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_entangling_roots" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_entangling_roots" { "IsPurgable" "1" "IsDebuff" "1" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_bear_entangle_body.vpcf" "EffectAttachType" "attach_hitloc" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_body_cauldron.vpcf" "EffectAttachType" "attach_hitloc" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/econ/items/lone_druid/lone_druid_cauldron/lone_druid_bear_entangle_cauldron.vpcf" "EffectAttachType" "attach_hitloc" } "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } } } } // Deals poison damage on each attack. // 20 (10) sec., 2 damage/sec "neutral_envenomed_weapon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_envenomed_spears" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "02" { "var_type" "FIELD_INTEGER" "duration_hero" "10" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "2" } } "Modifiers" { "modifier_envenomed_spears_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_envenomed_spears" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%duration_hero" } "ApplyModifier" { "ModifierName" "modifier_envenomed_spears" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } } "modifier_envenomed_spears" { "IsDebuff" "1" "EffectName" "particles/neutral_fx/gnoll_poison_debuff.vpcf" "EffectAttachType" "attach_hitloc" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } } } } "neutral_evasion" { "BaseClass" "ability_datadriven" "AbilityTextureName" "demon_hunter_evasion" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "evasion" "10" } } "Modifiers" { "modifier_evasion" { "IsHidden" "1" "Passive" "1" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion" } } } } "neutral_faerie_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_faerie_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "700" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "45" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "90" } "01" { "var_type" "FIELD_INTEGER" "hero_duration" "45" } "03" { "var_type" "FIELD_INTEGER" "armor_reduction" "-4" } } "precache" { "particle" "particles/custom/nightelf/faerie_fire.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "ApplyFaerieFire" } } "Modifiers" { "modifier_faerie_fire_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "FaerieFireAutocast" } } } "modifier_faerie_fire" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/custom/nightelf/faerie_fire.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "FaerieFireVision" } } } } } // Summons 2 Spirit Pig companions. Lasts 60 seconds. "neutral_feral_spirit_pigs" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_feral_spirit_pigs" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastPoint" "0.3" "AbilityCooldown" "15" "AbilityManaCost" "100" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_spawn.vpcf" } "AI" { "CastLogic" "OnCooldown" "Check" "Summoned" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "damage" "11" } "03" { "var_type" "FIELD_INTEGER" "hp" "200" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Boar" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" } } "RunScript" { "ScriptFile" "heroes/far_seer/feral_spirit.lua" "Function" "SummonByName" "UnitName" "neutral_spirit_pig" } } } //"neutral_finger_of_pain" //"neutral_firebolt" "neutral_forked_lightning" { "BaseClass" "ability_datadriven" "AbilityTextureName" "naga_sea_witch_forked_lightning" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCooldown" "11" "AbilityCastPoint" "0.4" "AbilityCastRange" "900" "AbilityManaCost" "110" "AbilityDamage" "85 160 250" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_units" "3" } } "precache" { "particle" "particles/items_fx/chain_lightning.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts" } "OnSpellStart" { "LinearProjectile" { "Target" "TARGET" "EffectName" "particles/custom/linear_projectile.vpcf" "MoveSpeed" "3000" "StartRadius" "50" "EndRadius" "500" "StartPosition" "attach_attack1" "FixedDistance" "700" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "HasFrontalCone" "1" "ProvidesVision" "0" } "RunScript" { "ScriptFile" "heroes/naga_sea_witch/forked_lightning.lua" "Function" "ForkedLightningStart" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/naga_sea_witch/forked_lightning.lua" "Function" "ForkedLightning" } } } "neutral_frost_armor" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lich_frost_armor_warcraft" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastRange" "800" "AbilityCastPoint" "0.4" "AbilityCooldown" "2.0" "AbilityManaCost" "50" "AbilityDuration" "45" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_bonus" "3" } "02" { "var_type" "FIELD_FLOAT" "slow_duration" "5.0" } "03" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-50" } "04" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-25" } // Extra values to control the Autocast AI "05" { "var_type" "FIELD_INTEGER" "autocast_radius" "900" } } "precache" { "particle" "particles/units/heroes/hero_lich/lich_frost_armor.vpcf" "particle" "particles/status_fx/status_effect_frost_armor.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lich.FrostArmor" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_frost_armor" "Target" "TARGET" "Duration" "%AbilityDuration" } } "Modifiers" { "modifier_frost_armor" { "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "FrostArmorParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "EndFrostArmorParticle" } } "StatusEffectName" "particles/status_fx/status_effect_frost_armor.vpcf" "StatusEffectPriority" "10" //Frost Armor only slows units that attack the unit with a Melee attack. "OnAttacked" { "ApplyModifier" { "ModifierName" "modifier_frost_armor_slow" "Target" { "Center" "ATTACKER" "Flags" "DOTA_UNIT_TARGET_FLAG_MELEE_ONLY" } "Duration" "%slow_duration" } "FireSound" { "EffectName" "Hero_Lich.FrostArmorDamage" "Target" "TARGET" } } } "modifier_frost_armor_slow" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" } } "modifier_frost_armor_autocast_aura" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_frost_armor_autocast_attacked" "Aura_Radius" "%autocast_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "modifier_frost_armor_autocast_attacked" { "IsHidden" "1" "OnAttacked" { "RunScript" { "ScriptFile" "heroes/lich/frost_armor.lua" "Function" "FrostArmorAutocast" } } } } } //"neutral_frost_bolt" "neutral_frost_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_frost_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "10" } "02" { "var_type" "FIELD_INTEGER" "radius" "100" } "03" { "var_type" "FIELD_FLOAT" "movement_speed_reduction" "-25" } } "precache" { // unit freeze particles "particle" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" } "Modifiers" { "modifier_frost_breath_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_freezing_attack" "Duration" "%duration" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } } "modifier_freezing_attack" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" } } } } "neutral_frost_nova" { "BaseClass" "ability_datadriven" "AbilityTextureName" "lich_frost_nova_warcraft" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "125" "AbilityDamage" "100" "AoERadius" "200" "precache" { "particle" "particles/units/heroes/hero_lich/lich_frost_nova.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-30" } "03" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-20" } "04" { "var_type" "FIELD_INTEGER" "aoe_damage" "50" } "05" { "var_type" "FIELD_INTEGER" "slow_hero_duration" "2" } "06" { "var_type" "FIELD_INTEGER" "slow_creep_duration" "4" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_lich/lich_frost_nova.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Ability.FrostNova" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%AbilityDamage" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_frost_nova_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%slow_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_frost_nova_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%slow_creep_duration" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%aoe_damage" } } } } "Modifiers" { "modifier_frost_nova_slow" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed" } } } } "neutral_heal" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_heal" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "RequiresHealthDeficit" "target" "AbilityCastPoint" "0.3" "AbilityCastRange" "250" "AbilityCooldown" "1" "AbilityManaCost" "5" "precache" { "particle" "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal" "25" } "02" { "var_type" "FIELD_INTEGER" "autocast_radius" "500" } } "OnSpellStart" { "Heal" { "HealAmount" "%heal" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_purification_d_glow.vpcf" "EffectAttachType" "follow_origin" } "FireSound" { "EffectName" "Hero_Omniknight.Purification" "Target" "TARGET" } } "Modifiers" { "modifier_heal_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "HealAutocast" } } } } } "neutral_healing_ward" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_healing_ward" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "TargetsAllowed" "organic" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "15" "AbilityManaCost" "200" "AOERadius" "500" "AI" { "CastLogic" "AllyHealthDeficit" "HealthPercent" "75" } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_juggernaut.vsndevts" "model" "models/heroes/juggernaut/jugg_healing_ward.vmdl" "particle" "particles/units/heroes/hero_juggernaut/juggernaut_healing_ward.vpcf" "particle" "particles/units/heroes/hero_juggernaut/juggernaut_ward_heal.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_INTEGER" "regeneration" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "items/wards.lua" "Function" "SummonHealingWard" "Target" "POINT" } } } "neutral_healing_wave" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shadow_hunter_healing_wave" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "RequiresHealthDeficit" "target" "AbilityCastRange" "700" "AbilityCastPoint" "0.4" "AbilityCooldown" "8.0" "AbilityManaCost" "90" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "healing" "160" } "02" { "var_type" "FIELD_INTEGER" "max_bounces" "2" } "03" { "var_type" "FIELD_INTEGER" "bounce_range" "500" } "04" { "var_type" "FIELD_INTEGER" "wave_decay_percent" "20" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/custom/dazzle_shadow_wave.vpcf" "particle" "particles/custom/dazzle_shadow_wave_copy.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Shadow_Wave" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/shadow_hunter/healing_wave.lua" "Function" "HealingWave" } } } "neutral_hex" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shadow_hunter_hex" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "800" "AbilityCastPoint" "0.0" "AbilityCooldown" "7.0" "AbilityManaCost" "80" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_voodoo.vpcf" "model" "models/props_gameplay/frog.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hero_duration" "4" } "02" { "var_type" "FIELD_FLOAT" "creep_duration" "15" } "03" { "var_type" "FIELD_INTEGER" "movespeed" "100" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.Voodoo" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Lion.Hex.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lion/lion_spell_voodoo.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_hex_frog" //Lua modifier "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_hex_frog" //Lua modifier "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } } "neutral_howl_of_terror" { "BaseClass" "ability_datadriven" "AbilityTextureName" "pit_lord_howl_of_terror" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "500" "AbilityCastPoint" "0.3" "AbilityCooldown" "12.0" "AbilityManaCost" "75" "AbilityDamage" "75" "precache" { "particle" "particles/custom/vengeful_wave_of_terror_recipient_reduction.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_vengefulspirit.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } "02" { "var_type" "FIELD_INTEGER" "damage_reduction_percent" "-30" } "03" { "var_type" "FIELD_INTEGER" "duration" "15" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_VengefulSpirit.WaveOfTerror" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/custom/neutral/howl_of_terror.vpcf" "EffectAttachType" "follow_origin" } "ApplyModifier" { "ModifierName" "modifier_howl_of_terror" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } "Modifiers" { "modifier_howl_of_terror" { "IsDebuff" "1" "EffectName" "particles/custom/vengeful_wave_of_terror_recipient_reduction.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction_percent" } } } } //A magical boulder is thrown at an enemy unit, causing 100 points of damage and stunning the target for 2 seconds. "neutral_hurl_boulder" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_hurl_boulder" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCooldown" "8.0" "AbilityManaCost" "75" "AbilityDamage" "100" "AbilityCastRange" "800" "AI" { "CastLogic" "OnCooldown" "ModifierName" "modifier_hurl_boulder_stun" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stun_duration" "2.0" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_hurl_boulder.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Brewmaster_Earth.Boulder.Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_hurl_boulder.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "900" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Brewmaster_Earth.Boulder.Target" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_hurl_boulder_stun" "Target" "TARGET" "Duration" "%stun_duration" } } "Modifiers" { "modifier_hurl_boulder_stun" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } "neutral_immolation" { "BaseClass" "ability_lua" "ScriptFile" "heroes/demon_hunter/immolation.lua" "AbilityTextureName" "demon_hunter_immolation" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground,organic" "AbilityCastRange" "220" "AbilityManaCost" "25" "precache" { "particle" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "10" } "02" { "var_type" "FIELD_INTEGER" "mana_cost_per_second" "7" } "03" { "var_type" "FIELD_INTEGER" "radius" "220" } } } "neutral_inferno" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_inferno" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground,organic" "AbilityCastRange" "900" "AbilityCastPoint" "0.3" "AbilityCooldown" "180" "AbilityManaCost" "175" "AbilityDamage" "50" "AOERadius" "250" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "infernal_duration" "180" } "03" { "var_type" "FIELD_FLOAT" "stun_hero_duration" "2" } "04" { "var_type" "FIELD_FLOAT" "stun_creep_duration" "4" } } "precache" { "particle" "particles/custom/warlock_rain_of_chaos_start.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_warlock.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Warlock.RainOfChaos_buildup" "Target" "CASTER" } "SpawnUnit" { "Target" "POINT" "UnitName" "undead_inferno" "UnitCount" "1" "Duration" "180" "OnSpawn" { "RunScript" { "ScriptFile" "heroes/dread_lord/inferno.lua" "Function" "RenderInferno" } "FireEffect" { "EffectName" "particles/custom/warlock_rain_of_chaos_start.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } "ApplyModifier" { "ModifierName" "modifier_inferno_stun" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%stun_hero_duration" } "ApplyModifier" { "ModifierName" "modifier_inferno_stun" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%stun_creep_duration" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } "Modifiers" { "modifier_inferno_stun" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } "neutral_inner_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_inner_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastPoint" "0.0" "AbilityCastRange" "500" "AbilityCooldown" "5" "AbilityManaCost" "35" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "armor_bonus" "5" } "03" { "var_type" "FIELD_INTEGER" "damage_bonus" "10" } } "OnSpellStart" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_inner_fire" } "FireSound" { "EffectName" "DOTA_Item.Buckler.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_inner_fire" { "OnCreated" { "AttachEffect" { "EffectName" "particles/custom/human/inner_fire.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "IsPurgable" "1" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "5" "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "10" } } "modifier_inner_fire_autocast" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_inner_fire_autocast_attackstart" "Aura_Radius" "500" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "OnCreated" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast" } } } "modifier_inner_fire_autocast_attackstart" { "IsHidden" "1" "OnAttack" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast_Attack" } } "OnAttacked" { "RunScript" { "ScriptFile" "units/human/priest.lua" "Function" "InnerFireAutocast_Attacked" } } } } } "neutral_life_drain" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_life_drain" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "50" "AbilityChannelTime" "8" "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_life_drain.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_drain_per_second" "25" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_life_drain" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Pugna.LifeDrain.Target" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_life_drain" "Target" "TARGET" } } "Modifiers" { "modifier_life_drain" { "IsDebuff" "1" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_pugna/pugna_life_drain.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "ThinkInterval" "1.0" "OnIntervalThink" { // Health Transfer "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%hp_drain_per_second" } "Heal" { "Target" "CASTER" "HealAmount" "%hp_drain_per_second" } // Looping Animation "ApplyModifier" { "ModifierName" "modifier_channelling_animation" "Target" "CASTER" } } } "modifier_channelling_animation" { "IsHidden" "1" "Duration" "0.9" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_2" } } } //"neutral_lightning_attack" "neutral_lightning_shield" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_lightning_shield" "MaxLevel" "1" "CastFilterRejectCaster" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "3" "AbilityManaCost" "100" "AOERadius" "160" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "02" { "var_type" "FIELD_INTEGER" "radius" "160" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "20" } "04" { "var_type" "FIELD_FLOAT" "think_interval" "0.5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "LightningShieldOnSpellStart" } } "Modifiers" { "modifier_lightning_shield" { "IsPurgable" "1" "Duration" "%duration" "EffectName" "particles/custom/orc/lightning_shield.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "ModifierLightningShieldOnIntervalThink" } } } } } "neutral_mana_burn" { "BaseClass" "ability_datadriven" "AbilityTextureName" "demon_hunter_mana_burn" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "RequiresTargetMana" "1" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "300" "AbilityCastPoint" "0.3" "AbilityCooldown" "7.0" "AbilityManaCost" "50" "precache" { "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_mana_burn.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nyx_assassin.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_burn" "100" } "02" { "var_type" "FIELD_INTEGER" "damage_per_mana" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_NyxAssassin.ManaBurn.Target" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_mana_burn.vpcf" "EffectAttachType" "follow_origin" } "RunScript" { "ScriptFile" "heroes/demon_hunter/mana_burn.lua" "Function" "ManaBurn" } } } //"neutral_mana_shield" //"neutral_monsoon" //"neutral_parasite" "neutral_polymorph" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_polymorph" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastPoint" "0.1" "AbilityCastRange" "500" "AbilityManaCost" "220" "TargetsAllowed" "organic" "MaxCreepLevel" "5" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "movespeed" "100" } } "precache" { "model" "models/items/hex/sheep_hex/sheep_hex.vmdl" "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.SheepHex.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_hex_sheep" //Lua modifier "Target" "TARGET" "Duration" "%duration" } } } "neutral_possession" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_possession" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "ground,organic" "MaxCreepLevel" "5" "AbilityChannelTime" "4" "AbilityCastRange" "350" "AbilityCastPoint" "0.3" "AbilityCooldown" "0" "AbilityManaCost" "250" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AnimationPlaybackRate" "0.1" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_model.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_excorcism_attack_impact_death.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spiritsiphon.vpcf" "particle" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_increase_while_channeling" "66" } "02" { "var_type" "FIELD_INTEGER" "channel_range" "350" } "03" { "var_type" "FIELD_INTEGER" "duration" "4" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "PossessionStart" } } "OnChannelInterrupted" { "RemoveModifier" { "ModifierName" "modifier_possession_target" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_possession_caster" "Target" "CASTER" } } "OnChannelSucceeded" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "PossessionEnd" } } "Modifiers" { "modifier_possession_target" { "EffectName" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" "EffectAttachType" "follow_origin" "OverrideAnimation" "ACT_DOTA_DISABLED" "TextureName" "undead_possession" "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_possession_caster" { "EffectName" "particles/units/heroes/hero_pugna/pugna_ward_orientedrunes.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_increase_while_channeling" } "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "neutral_pulverize" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "pandaren_earth_pulverize" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_inner" "40" } "02" { "var_type" "FIELD_INTEGER" "radius_inner" "150" } "03" { "var_type" "FIELD_INTEGER" "damage_outer" "20" } "04" { "var_type" "FIELD_INTEGER" "radius_outer" "250" } "05" { "var_type" "FIELD_INTEGER" "chance" "20" } } "Modifiers" { "modifier_earth_pulverize" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "Random" { "Chance" "%chance" "OnSuccess" { "FireEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_pulverize.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius_inner" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_inner - %damage_outer" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius_outer" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_outer" } } } } } } } "neutral_purge" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_purge" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "TargetsAllowed" "ward" "AbilityCastRange" "700" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "75" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "15" } "02" { "var_type" "FIELD_INTEGER" "duration_hero" "5" } "03" { "var_type" "FIELD_INTEGER" "damage_to_summons" "400" } "04" { "var_type" "FIELD_INTEGER" "slow_per_stack" "-20" } } "precache" { "particle" "particles/generic_gameplay/generic_purge.vpcf" "soundfile" "soundevents/game_sounds_creeps.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.DiffusalBlade.Target" "Target" "TARGET" } "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "PurgeStart" } } "Modifiers" { "modifier_purge" { "TextureName" "orc_purge" "IsDebuff" "1" "IsPurgable" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "ApplyPurge" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_purge_slow" "Target" "TARGET" } } } "modifier_purge_slow" { "IsHidden" "1" "IsDebuff" "1" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_per_stack" } "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "PurgeThink" } } } } } "neutral_raise_dead" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_raise_dead" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "8" "AbilityManaCost" "75" "RequiresCorpsesAround" "600" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "40" } "02" { "var_type" "FIELD_INTEGER" "radius" "600" } } "precache" { "model" "models/creeps/neutral_creeps/n_creep_troll_skeleton/n_creep_skeleton_melee.vmdl" "model" "models/items/wraith_king/regalia_of_the_bonelord_cape.vmdl" "model" "models/items/pugna/ashborn_horns/ashborn_horns.vmdl" "model_folder" "models/heroes/pugna" // particle precaches "particle" "particles/neutral_fx/skeleton_spawn.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_base_attack.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/necromancer.lua" "Function" "RaiseDead" } } "Modifiers" { "modifier_raise_dead_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/necromancer.lua" "Function" "RaiseDead_AutoCast" } } } } } //"neutral_ray_of_disruption" //"neutral_reincarnation" "neutral_rejuvenation" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_rejuvenation" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetsAllowed" "organic" "AbilityCastRange" "400" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "125" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } "02" { "var_type" "FIELD_INTEGER" "total_heal" "400" } } "precache" { "particle" "particles/units/heroes/hero_treant/treant_livingarmor_regen.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_treant.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Treant.LivingArmor.Cast" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_rejuvenation" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_rejuvenation" { "IsPurgable" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_treant/treant_livingarmor_regen.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } } "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%total_heal / %duration" } } } } "neutral_roar" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_roar" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_OVERRIDE_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "100" "AOERadius" "500" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_FLOAT" "damage_bonus_pct" "25.0" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_overhead.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_buff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LoneDruid.BattleCry" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "RoarAnimation" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_roar" "Duration" "%duration" } } } } "Modifiers" { "modifier_roar" { "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_buff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_overhead.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_bonus_pct" } } } } "neutral_searing_arrows" { "BaseClass" "ability_datadriven" "AbilityTextureName" "potm_searing_arrows" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "700" "AbilityManaCost" "10" "AbilityDamage" "10" "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_searing_arrow.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "Modifiers" { "modifier_searing_arrows" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_clinkz/clinkz_searing_arrow.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_Clinkz.SearingArrows" "Target" "CASTER" } } "OnOrbImpact" { "FireSound" { "EffectName" "Hero_Clinkz.SearingArrows.Impact" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } } } "neutral_shadow_meld" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_shadow_meld" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "inaction_duration" "0.5" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "1.5" } } "precache" { "particle" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_assassin_meld_focal.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeld" } } "Modifiers" { "modifier_shadow_meld_passive" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldThink" } } "OnOrder" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } "OnUnitMoved" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } "OnAttack" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } } "modifier_shadow_meld" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldApply" } } } "modifier_shadow_meld_active" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } "neutral_shadow_strike" { "BaseClass" "ability_datadriven" "AbilityTextureName" "warden_shadow_strike" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "300" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75" "precache" { "particle" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_impact.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" "particle" "particles/units/heroes/hero_viper/viper_viper_strike_beam.vpcf" "particle" "particles/status_fx/status_effect_poison_viper.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "15" } "02" { "var_type" "FIELD_INTEGER" "initial_damage" "75" } "03" { "var_type" "FIELD_INTEGER" "damage_every_3sec" "10" } "04" { "var_type" "FIELD_INTEGER" "initial_move_speed_slow" "-50" //Regains 10 every 3 sec } } "OnAbilityPhaseStart" { "FireEffect" { // This particle is bugged, it has some unattached childs that always generates at 0 0 0 (because viper has 4 wing points) "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" "CASTER" "attach_attack1" } } } "OnSpellStart" { "FireSound" { "EffectName" "hero_viper.viperStrike" "Target" "TARGET" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" "Dodgeable" "0" "ProvidesVision" "1" "VisionRadius" "300" "MoveSpeed" "800" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%initial_damage" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_shadow_strike" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_shadow_strike" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Viper.viperStrikeImpact" "Target" "TARGET" } } "Modifiers" { "modifier_shadow_strike" { "Duration" "%duration" "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_poison_viper.vpcf" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/warden/shadow_strike.lua" "Function" "ShadowStrikeSlow" } } "ThinkInterval" "3" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_every_3sec" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/warden/shadow_strike.lua" "Function" "ShadowStrikeSlowDecay" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_shadow_strike_slow_stack" "Target" "TARGET" } } } "modifier_shadow_strike_slow_stack" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-5" } } } } "neutral_shockwave" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tauren_chieftain_shockwave" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "ground" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75" "AI" { "CastLogic" "LinedTargets" "MinTargets" "3" "LineWidth" "250" } "precache" { "particle" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil.vpcf" "particle" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil_cast.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_magnataur.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shock_distance" "700" } "02" { "var_type" "FIELD_INTEGER" "max_damage" "1000" } } "OnAbilityPhaseStart" { "ApplyModifier" { "ModifierName" "modifier_shockwave_hidden_cast" "Target" "CASTER" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/tauren_chieftain/shockwave.lua" "Function" "ShockwaveStart" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Particle" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil.vpcf" "MoveSpeed" "900" "StartRadius" "250" "StartPosition" "attach_attack1" "EndRadius" "250" "FixedDistance" "%shock_distance" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "HasFrontalCone" "0" "ProvidesVision" "1" "VisionRadius" "300" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/tauren_chieftain/shockwave.lua" "Function" "ShockwaveDamage" } "FireSound" { "EffectName" "Hero_Magnataur.ShockWave.Target" "Target" "TARGET" } } "Modifiers" { "modifier_shockwave_hidden_cast" { "IsHidden" "1" "Duration" "0.5" "OnCreated" { "AttachEffect" { "EffectName" "particles/econ/items/magnataur/shock_of_the_anvil/magnataur_shockanvil_cast.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" "CASTER" "attach_attack1" } } } } } } "neutral_silence" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dark_ranger_silence" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "900" "AbilityCastPoint" "0.3" "AbilityCooldown" "15.0" "AbilityManaCost" "75" "AOERadius" "%radius" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_silence.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_silence_impact.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "8" } "03" { "var_type" "FIELD_FLOAT" "creep_duration" "16" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } "FireEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_silence.vpcf" "EffectAttachType" "world_origin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_silence_impact.vpcf" "EffectAttachType" "follow_overhead" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "ControlPoints" { "00" "1 0 0" } } "FireSound" { "EffectName" "Hero_DeathProphet.Silence" "TargetPoint" "POINT" // This works but its actually fired at the caster } } //modifier_silence is a Built-In modifier, _silenced is custom "Modifiers" { "modifier_silenced" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_silenced.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } //Slams the ground, dealing 70 points of damage to nearby enemy units. "neutral_slam" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_slam" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCooldown" "6.0" "AbilityManaCost" "90" "AbilityDamage" "70" "AbilityCastRange" "250" "TargetsAllowed" "ground" "AI" { "CastLogic" "TargetsAround" "MinTargets" "3" } "precache" { "particle" "particles/units/heroes/hero_ursa/ursa_earthshock.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_ursa.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "creep_duration" "4.0" } "03" { "var_type" "FIELD_FLOAT" "hero_duration" "2.0" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_ursa/ursa_earthshock.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPoints" { "01" "0 %radius/2 0" } } "FireSound" { "EffectName" "Hero_Ursa.Earthshock" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_slam_stun" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_slam_stun" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } } } "Modifiers" { "modifier_slam_stun" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } "neutral_sleep" { "BaseClass" "ability_datadriven" "AbilityTextureName" "dread_lord_sleep" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.3" "AbilityCooldown" "8.0" "AbilityManaCost" "100" "AbilityDamage" "75" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hero_duration" "5" } "02" { "var_type" "FIELD_INTEGER" "creep_duration" "20" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bane.Nightmare" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_sleep" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_sleep" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_sleep" { "IsPurgable" "1" "IsDebuff" "1" "EffectName" "particles/custom/undead/sleep.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_nightmare.vpcf" "StatusEffectPriority" "10" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NIGHTMARED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_LOW_ATTACK_PRIORITY" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "OnTakeDamage" { "RemoveModifier" { "Target" "UNIT" "ModifierName" "modifier_sleep" } } } } } "neutral_slow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_slow" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "AbilityCastRange" "600" "AbilityCastPoint" "0.3" "AbilityCooldown" "10" "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "attack_speed" "-25" } "04" { "var_type" "FIELD_INTEGER" "move_speed" "-20" } } "precache" { "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot_slow_debuff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" } "OnSpellStart" { "RemoveModifier" { "ModifierName" "modifier_human_slow" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_human_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_human_slow" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } "FireSound" { "EffectName" "DOTA_Item.RodOfAtos.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_human_slow" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot_slow_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed" } } "modifier_slow_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/human/sorceress.lua" "Function" "SlowAutocast" } } } } } "neutral_slow_poison" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_slow_poison" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "creep_duration" "5" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "1" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "4" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_slow" "-50" } "05" { "var_type" "FIELD_INTEGER" "attack_speed_slow" "-25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" } "Modifiers" { "modifier_slow_poison_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_slow_poison" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_slow_poison" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } } "modifier_slow_poison" { "IsDebuff" "1" "EffectName" "particles/neutral_fx/gnoll_poison_debuff.vpcf" "EffectAttachType" "attach_hitloc" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" "Target" "TARGET" } "FireSound" { "EffectName" "hero_viper.CorrosiveSkin" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_slow" } } } } "neutral_spell_immunity" //TODO - Check overriding of base dota ability { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "generic_spell_immunity" "MaxLevel" "1" "Modifiers" { "modifier_spell_immunity" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Razor-sharp spikes on the Turtle's shell deal 30% of an enemy unit's melee attack damage back to it. "neutral_spiked_shell" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_spiked_carapace" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "melee_damage_return" "30" } } "Modifiers" { "modifier_spiked_carapace" { "Passive" "1" "OnAttacked" { "RunScript" { "ScriptFile" "heroes/crypt_lord/spiked_carapace.lua" "Function" "SpikedCarapace" "Damage" "%attack_damage" } } } } } //Summons 2 Makrura Prawns to do their master's bidding. Summoned Prawns lasts 60 seconds. "neutral_summon_prawns" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_summon_prawns" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastPoint" "0.3" "AbilityCooldown" "15" "AbilityManaCost" "100" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_spawn.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "damage" "10" } "03" { "var_type" "FIELD_INTEGER" "hp" "170" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Boar" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" } } "RunScript" { "ScriptFile" "heroes/far_seer/feral_spirit.lua" "Function" "SummonByName" "UnitName" "neutral_makrura_prawn" } } } //"neutral_summon_sea_elemental" "neutral_thorns_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/keeper/thorns_aura.lua" "AbilityTextureName" "keeper_thorns_aura" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "melee_damage_return" "10 20 30" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "neutral_trueshot_aura" { "BaseClass" "ability_lua" "ScriptFile" "heroes/potm/trueshot_aura.lua" "AbilityTextureName" "potm_trueshot_aura" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_bonus_percent" "5" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } //"neutral_unholy_aura" "neutral_unholy_frenzy" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_unholy_frenzy" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "3" "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_increase" "75" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "4" } } "precache" { "soundfile" "sounds/items/mask_of_madness.vsnd" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_unholy_frenzy" "Target" "TARGET" "Duration" "%duration" } "FireSound" { "EffectName" "DOTA_Item.MaskOfMadness.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_unholy_frenzy" { "EffectName" "particles/items_fx/armlet.vpcf" "EffectAttachType" "follow_origin" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_increase" } "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Damage" "%damage_per_second" "Type" "DAMAGE_TYPE_PURE" } } } } } //"neutral_vampiric_aura" "neutral_war_stomp" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "doom_guard_war_stomp" "TargetsAllowed" "ground" "AbilityCastPoint" "0.5" "AbilityCooldown" "6.0" "AbilityManaCost" "90" "AbilityCastRange" "%radius" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "stun_duration_hero" "2.0" } "02" { "var_type" "FIELD_FLOAT" "stun_duration_creep" "3.0" } "03" { "var_type" "FIELD_INTEGER" "stomp_damage" "25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" "particle" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_centaur/centaur_warstomp.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "CASTER" "ControlPoints" { "01" "%radius 0 %radius" } } "FireSound" { "EffectName" "Hero_Centaur.HoofStomp" "Target" "CASTER" } "Damage" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%stomp_damage" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%stun_duration_hero" } "ApplyModifier" { "ModifierName" "modifier_war_stomp" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%stun_duration_creep" } } "Modifiers" { "modifier_war_stomp" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } "neutral_web" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_web" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "air" "AbilityCastRange" "400" "AbilityCastPoint" "0" "AbilityCooldown" "20" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } } "precache" { //target particle "particle" "particles/econ/courier/courier_trail_hw_2012/courier_trail_hw_2012_webs.vpcf" //caster projectile particle "particle" "particles/units/heroes/hero_broodmother/broodmother_spin_web_cast.vpcf" } "OnSpellStart" { "RunScript" { "Target" "TARGET" "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web" } "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "FireEffect" { "EffectName" "particles/units/heroes/hero_broodmother/broodmother_spin_web_cast.vpcf" "Target" "CASTER" "EffectAttachType" "attach_hitloc" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "Modifiers" { "modifier_web" { "IsDebuff" "1" "EffectName" "particles/econ/courier/courier_trail_hw_2012/courier_trail_hw_2012_webs.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web_Destroy" } "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_web_autocast" { "IsHidden" "1" "Passive" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web_AutoCast" } } } } } "neutral_vampiric_aura" { "BaseClass" "ability_lua" "ScriptFile" "items/auras/vampiric.lua" "AbilityTextureName" "dread_lord_vampiric_aura" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "MaxLevel" "1" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lifesteal" "15" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "dummy_passive" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "dummy_modifier" { "Passive" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "dummy_passive_vulnerable" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "dummy_modifier" { "Passive" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE" "1" } } } } "dummy_passive_fly" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "dummy_modifier" { "Passive" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "dummy_vision" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "dummy_modifier" { "Passive" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "firelord_arcana_model" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "precache" { "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_ambient.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_trail.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_ambient_eyes.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_death.vpcf" "particle" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_loadout.vpcf" "model" "models/heroes/shadow_fiend/head_arcana.vmdl" "model" "models/items/shadow_fiend/arms_deso/arms_deso.vmdl" } "OnOwnerDied" { "RunScript" { "ScriptFile" "heroes/firelord/arcana.lua" "Function" "DeathEffect" } } "Modifiers" { "modifier_arcana" { "Passive" "1" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_PERMANENT" "OnCreated" { "FireEffect" { "EffectName" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_loadout.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_ambient.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_wing_L0" "CASTER" "attach_wing_L1" "CASTER" "attach_wing_L2" "CASTER" "attach_wing_R0" "CASTER" "attach_wing_R1" "CASTER" "attach_wing_R2" "CASTER" "attach_head" //ambient_head } } "AttachEffect" { "EffectName" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_ambient_eyes.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_eyeL" //left "CASTER" "attach_eyeR" //right "CASTER" "attach_head" //mouth } } "RunScript" { "ScriptFile" "heroes/firelord/arcana.lua" "Function" "ModelChange" } } } } } "fountain_of_health_aura" { "BaseClass" "ability_datadriven" "AbilityTextureName" "fountain_of_health_aura" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "500" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "regen_per_sec" "1" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } } "Modifiers" { "modifier_fountain_of_health" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_fountain_of_health_regen" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_ApplyToCaster" "0" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fountain_of_health_regen" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE" "%regen_per_sec" } } } } "fountain_of_mana_aura" { "BaseClass" "ability_datadriven" "AbilityTextureName" "fountain_of_mana_aura" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "500" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "regen_per_sec" "1" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } } "Modifiers" { "modifier_fountain_of_mana" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_fountain_of_mana_regen" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_ApplyToCaster" "0" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fountain_of_mana_regen" { "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE" "%regen_per_sec" } } } } "generic_spell_immunity" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "generic_spell_immunity" "MaxLevel" "1" "Modifiers" { "modifier_spell_immunity" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Gold Mine Abilities "gold_mine_passive" { "BaseClass" "ability_datadriven" "AbilityTextureName" "alchemist_goblins_greed" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_grid_goldmine" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" } } } } "hide_hero" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_hidden" { "Passive" "1" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_NO_TEAM_MOVE_TO" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "minimum_range" { "BaseClass" "ability_datadriven" "AbilityTextureName" "" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastRange" "250" "Modifiers" { "modifier_minimum_range" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "units/minimum_range.lua" "Function" "OnSiegeAttackStart" } } } } } "sapper_kaboom" { "BaseClass" "ability_datadriven" "AbilityTextureName" "tinker_clockwerk_goblin_kaboom" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "100" "AbilityCastPoint" "0.0" "TargetsAllowed" "ground" "precache" { "particle" "particles/units/heroes/hero_techies/techies_suicide.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "full_dmg" "250" } "02" { "var_type" "FIELD_INTEGER" "full_dmg_radius" "100" } "03" { "var_type" "FIELD_INTEGER" "outer_dmg" "100" } "04" { "var_type" "FIELD_INTEGER" "outer_dmg_radius" "250" } } "OnSpellStart" { "DestroyTrees" { "Target" "CASTER" "Radius" "%full_dmg_radius" } "RunScript" { "ScriptFile" "units/neutral/sapper.lua" "Function" "Kaboom" } } "Modifiers" { "modifier_sapper_logic" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "units/neutral/sapper.lua" "Function" "KaboomCast" } } "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/neutral/sapper.lua" "Function" "KaboomThink" } } "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } "shredder_gather" { "BaseClass" "ability_datadriven" "AbilityTextureName" "shredder_gather" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" // Gatherer Key Values "LumberGainInterval" "1" "LumberPerInterval" "10" "DamageTree" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lumber_capacity" "200" } "02" { "var_type" "FIELD_INTEGER" "lumber_per_hit" "10" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } } } "shredder_return_resources" { "BaseClass" "ability_datadriven" "AbilityTextureName" "human_return_resources" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" //Fake Toggle // When the ability is active, it means there are resources left to return (else it will be hidden) "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "ReturnResources" } } } //.RespawnAbility // Passive version indicates that the hero has already been trained, stopping the next rank of that hero "neutral_train_alchemist_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_beastmaster_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_drow_ranger_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_nevermore_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_medusa_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_brewmaster_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_abyssal_underlord_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "neutral_train_tinker_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Awful copypaste following up next // 180 30 "neutral_train_alchemist_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 225 35 "neutral_train_alchemist_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 270 40 "neutral_train_alchemist_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 315 45 "neutral_train_alchemist_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 360 50 "neutral_train_alchemist_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 405 60 "neutral_train_alchemist_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 450 70 "neutral_train_alchemist_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 495 80 "neutral_train_alchemist_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 540 90 "neutral_train_alchemist_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 585 100 "neutral_train_alchemist_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_alchemist" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_alchemist" } } } // 180 30 "neutral_train_beastmaster_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 225 35 "neutral_train_beastmaster_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 270 40 "neutral_train_beastmaster_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 315 45 "neutral_train_beastmaster_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 360 50 "neutral_train_beastmaster_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 405 60 "neutral_train_beastmaster_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 450 70 "neutral_train_beastmaster_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 495 80 "neutral_train_beastmaster_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 540 90 "neutral_train_beastmaster_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 585 100 "neutral_train_beastmaster_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_beastmaster" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_beastmaster" } } } // 180 30 "neutral_train_drow_ranger_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 225 35 "neutral_train_drow_ranger_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 270 40 "neutral_train_drow_ranger_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 315 45 "neutral_train_drow_ranger_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 360 50 "neutral_train_drow_ranger_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 405 60 "neutral_train_drow_ranger_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 450 70 "neutral_train_drow_ranger_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 495 80 "neutral_train_drow_ranger_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 540 90 "neutral_train_drow_ranger_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 585 100 "neutral_train_drow_ranger_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_drow_ranger" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_drow_ranger" } } } // 180 30 "neutral_train_nevermore_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 225 35 "neutral_train_nevermore_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 270 40 "neutral_train_nevermore_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 315 45 "neutral_train_nevermore_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 360 50 "neutral_train_nevermore_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 405 60 "neutral_train_nevermore_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 450 70 "neutral_train_nevermore_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 495 80 "neutral_train_nevermore_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 540 90 "neutral_train_nevermore_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 585 100 "neutral_train_nevermore_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_nevermore" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nevermore" } } } // 180 30 "neutral_train_medusa_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 225 35 "neutral_train_medusa_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 270 40 "neutral_train_medusa_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 315 45 "neutral_train_medusa_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 360 50 "neutral_train_medusa_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 405 60 "neutral_train_medusa_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 450 70 "neutral_train_medusa_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 495 80 "neutral_train_medusa_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 540 90 "neutral_train_medusa_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 585 100 "neutral_train_medusa_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_medusa" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_medusa" } } } // 180 30 "neutral_train_brewmaster_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 225 35 "neutral_train_brewmaster_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 270 40 "neutral_train_brewmaster_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 315 45 "neutral_train_brewmaster_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 360 50 "neutral_train_brewmaster_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 405 60 "neutral_train_brewmaster_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 450 70 "neutral_train_brewmaster_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 495 80 "neutral_train_brewmaster_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 540 90 "neutral_train_brewmaster_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 585 100 "neutral_train_brewmaster_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_brewmaster" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_brewmaster" } } } // 180 30 "neutral_train_abyssal_underlord_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 225 35 "neutral_train_abyssal_underlord_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 270 40 "neutral_train_abyssal_underlord_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 315 45 "neutral_train_abyssal_underlord_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 360 50 "neutral_train_abyssal_underlord_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 405 60 "neutral_train_abyssal_underlord_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 450 70 "neutral_train_abyssal_underlord_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 495 80 "neutral_train_abyssal_underlord_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 540 90 "neutral_train_abyssal_underlord_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 585 100 "neutral_train_abyssal_underlord_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_abyssal_underlord" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abyssal_underlord" } } } // 180 30 "neutral_train_tinker_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 225 35 "neutral_train_tinker_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 270 40 "neutral_train_tinker_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 315 45 "neutral_train_tinker_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 360 50 "neutral_train_tinker_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 405 60 "neutral_train_tinker_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 450 70 "neutral_train_tinker_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 495 80 "neutral_train_tinker_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 540 90 "neutral_train_tinker_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } // 585 100 "neutral_train_tinker_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_train_tinker" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_tinker" } } } "true_sight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "true_sight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_passive_true_sight" { "Passive" "1" "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_true_sight_aura" "Target" "TARGET" } } } } } //Right click on the zeppelin -> Move towards the zeppelin, zeppelin casts Load on the target. //Right click from the zeppelin on a unit -> zeppelin casts Load on the target (target stays still) //Load is hidden after zeppelin is full. Unload is hidden if there's nothing to unload. No error messages //Killing the zep should drop all units and applies 30 seconds of Dizziness. //If a Goblin Zeppelin is killed above water or an area where units cannot easily unload, the Goblin Zeppelin will die with everyone inside. "zeppelin_load" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_load" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "50" "AbilityCastPoint" "0.1" "TargetsAllowed" "ground" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "capacity" "8" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "Load" } } "Modifiers" { "modifier_zeppelin_cargo" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "InitCargo" } } } "modifier_zeppelin_transporting" { "IsHidden" "1" "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_PASSIVES_DISABLED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "zeppelin_unload" { "BaseClass" "ability_datadriven" "AbilityTextureName" "neutral_unload" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityMultiOrder" "1" "OnSpellStart" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "UnloadStart" "Target" "POINT" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "OnDeath" } } "Modifiers" { "modifier_zeppelin_unloading" { "OnCreated" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "Unload" } } "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "Unload" } } "OnOrder" { "RemoveModifier" { "ModifierName" "modifier_zeppelin_unloading" "Target" "CASTER" } } } "modifier_zeppelin_unloading_order" { "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "units/neutral/zeppelin.lua" "Function" "CancelUnload" } } } "modifier_dizziness" { "TextureName" "neutral_dizziness" "EffectName" "particles/custom/generic_slowed.vpcf" "EffectAttachType" "follow_overhead" "IsDebuff" "1" "Duration" "30" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "-25" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-25" } } } } //================================================================================= // Ability: Detonate // Description: "Destroys the Wisp, dispelling all magical buffs and draining mana from each unit in an area around the Wisp. |n|cffffcc00Deals damage to summoned units.|r" //================================================================================= "nightelf_detonate" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_detonate" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastRange" "100" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AOERadius" "300" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "300" } "02" { "var_type" "FIELD_INTEGER" "mana_drained" "50" } "03" { "var_type" "FIELD_INTEGER" "damage_to_summons" "225" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_dispel_magic.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_guardian_explosion.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_death.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/wisp.lua" "Function" "Detonate" "Target" "POINT" } } } //================================================================================= // Ability: Shadow Meld // Description: "Stops the unit from auto-acquiring enemies, allowing it to Shadowmeld and remain unseen at night." //================================================================================= "nightelf_shadow_meld" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_shadow_meld" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "inaction_duration" "0.5" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "1.5" } } "precache" { "particle" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_assassin_meld_focal.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeld" } } "Modifiers" { "modifier_shadow_meld_passive" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldThink" } } "OnOrder" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } "OnUnitMoved" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } "OnAttack" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldRemove" } } } "modifier_shadow_meld" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "ShadowMeldApply" } } } "modifier_shadow_meld_active" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } //================================================================================= // Upgrade: Improved Bows // Description: Increases the Archer's and Hippogryph Rider's attack range. //================================================================================= "nightelf_improved_bows" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_improved_bows" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "200" } } "Modifiers" { "modifier_improved_bows" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" } } } } //================================================================================= // Upgrade: Marksmanship // Description: Increases damage of Archers and Hippogryph Riders by . //================================================================================= "nightelf_marksmanship" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_marksmanship" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3" } } "Modifiers" { // Remember to only add the disabled version on start "modifier_marksmanship" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } } } //================================================================================= // Ability: Elunes Grace // Description: "Reduces the damage taken from Piercing attacks to %, and spells and Magic attacks to %." //================================================================================= "nightelf_elunes_grace" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_elunes_grace" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "piercing_reduction" "0.65" } "02" { "var_type" "FIELD_FLOAT" "magic_resistance" "20" } } "modifier_elunes_grace" { "Passive" "1" "IsHidden" "0" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%magic_resistance" } } } //================================================================================= // Ability: Sentinel // Description: "Send an owl to a nearby tree to reveal the area around it. |nCan see invisible units." //================================================================================= "nightelf_sentinel" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_sentinel" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "800" "AbilityCastPoint" "0.3" "AbilityCooldown" "60" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "vision_aoe" "900" } // Once the Huntress uses its owl the ability is hidden // I'm not sure about about keeping this mechanic yet or just increase the cooldown "02" { "var_type" "FIELD_INTEGER" "charges" "1" } } "precache" { "model" "models/items/courier/snowl/snowl_flying.vmdl" "particle" "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_1.vpcf" "particle" "particles/status_fx/status_effect_wraithking_ghosts.vpcf" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/nightelf/huntress.lua" "Function" "SentinelCheck" } } // Sentinel is invulnerable and destroyed after the tree it is attached to its cut down "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/huntress.lua" "Function" "Sentinel" } } "Modifiers" { "modifier_sentinel" { "IsHidden" "1" "EffectName" "particles/econ/courier/courier_greevil_green/courier_greevil_green_ambient_1.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_wraithking_ghosts.vpcf" "StatusEffectPriority" "10" "Attributes" "MODIFIER_ATTRIBUTE_PERMANENT" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_true_sight_aura" "Target" "CASTER" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/huntress.lua" "Function" "SentinelTreeCheck" } } } } } // Huntress have 1 jump on moon glaive innate, the upgrade gives a second jump "nightelf_moon_glaive" { "BaseClass" "ability_lua" "ScriptFile" "units/nightelf/huntress.lua" "AbilityTextureName" "nightelf_moon_glaive" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "TargetsAllowed" "ground" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_luna.vsndevts" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "range" "500" } "02" { "var_type" "FIELD_INTEGER" "bounces" "1" } "03" { "var_type" "FIELD_INTEGER" "damage_reduction_percent" "50" } } } // New name, different icon, replaces the basic ability "nightelf_upgraded_moon_glaive" { "BaseClass" "ability_lua" "ScriptFile" "units/nightelf/huntress.lua" "AbilityTextureName" "nightelf_research_upgraded_moon_glaive" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "TargetsAllowed" "ground" "precache" { "particle" "particles/econ/items/luna/luna_lucent_rider/luna_ambient_glaive_lucent_rider.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "range" "500" } "02" { "var_type" "FIELD_INTEGER" "bounces" "2" } "03" { "var_type" "FIELD_INTEGER" "damage_reduction_percent" "50" } } } // Permits the glaives launched by the Glaive Thrower to strike through the initial ground targets and damage those behind. Allows them to damage trees. // Vorpal Blades does not work with Attack Ground. // "Target is inside the minimum range" is a thing. So is "Unable to target air units" "nightelf_vorpal_blades" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_vorpal_blades" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "spill_range" "400" } "02" { "var_type" "FIELD_INTEGER" "damage_to_trees" "10" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "units/nightelf/glaive_thrower.lua" "Function" "VorpalBladeDamage" } } "Modifiers" { "modifier_vorpal_blades" { "Passive" "1" "IsHidden" "0" "OnAttackLanded" { "RunScript" { "ScriptFile" "units/nightelf/glaive_thrower.lua" "Function" "VorpalBlade" } } } } } //================================================================================= // Ability: Slow Poison // Description: "A poison attack that deals damage per second, and slows the target enemy's movement by % and attack by % for seconds." //================================================================================= "nightelf_slow_poison" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_slow_poison" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "creep_duration" "5" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "1" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "4" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_slow" "-50" } "05" { "var_type" "FIELD_INTEGER" "attack_speed_slow" "-25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" } "Modifiers" { "modifier_slow_poison_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_slow_poison" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_slow_poison" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } } "modifier_slow_poison" { "IsDebuff" "1" "EffectName" "particles/neutral_fx/gnoll_poison_debuff.vpcf" "EffectAttachType" "attach_hitloc" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" "Target" "TARGET" } "FireSound" { "EffectName" "hero_viper.CorrosiveSkin" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_slow" } } } } //================================================================================= // Ability: Abolish Magic // Description: "Dispels positive buffs from enemy units, and negative buffs from friendly units. |n|cffffcc00Deals damage to summoned units.|r" //================================================================================= "nightelf_abolish_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_abolish_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "50" "TargetsAllowed" "ward" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "300" } } "precache" { "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_lodestar_transform.vpcf" "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_death_lodestar_burst.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_enchantress.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Enchantress.EnchantCast" "Target" "TARGET" } "RunScript" { "ScriptFile" "units/nightelf/dryad.lua" "Function" "AbolishMagic" } } "Modifiers" { "modifier_abolish_magic_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/dryad.lua" "Function" "AbolishMagicAutocast" } } } } } //================================================================================= // Ability: Spell Immunity // Description: "Renders this unit immune to all spells." //================================================================================= "nightelf_spell_immunity" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_spell_immunity" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } //================================================================================= // Ability: Roar // Description: "Gives friendly nearby units a % bonus to damage. |nLasts seconds." //================================================================================= "nightelf_roar" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_roar" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_OVERRIDE_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "100" "AOERadius" "500" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_FLOAT" "damage_bonus_pct" "25.0" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_overhead.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_buff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LoneDruid.BattleCry" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "RoarAnimation" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_roar" "Duration" "%duration" } } } } "Modifiers" { "modifier_roar" { "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_buff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_battle_cry_overhead.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_bonus_pct" } } } } //================================================================================= // Ability: Rejuvenation // Description: "Heals a target friendly unit for hit points over seconds." //================================================================================= "nightelf_rejuvenation" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_rejuvenation" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetsAllowed" "organic" "AbilityCastRange" "400" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "125" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } "02" { "var_type" "FIELD_INTEGER" "total_heal" "400" } } "precache" { "particle" "particles/units/heroes/hero_treant/treant_livingarmor_regen.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_treant.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Treant.LivingArmor.Cast" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_rejuvenation" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_rejuvenation" { "IsPurgable" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_treant/treant_livingarmor_regen.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } } "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%total_heal / %duration" } } } } //================================================================================= // Ability: Bear Form // Description: "Transforms the Druid into a bear, slowing mana regeneration, but making him an excellent warrior." //================================================================================= "nightelf_bear_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_bear_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "25" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "1.45" } "02" { "var_type" "FIELD_INTEGER" "bear_hp" "960" } "03" { "var_type" "FIELD_INTEGER" "bonus_armor" "2" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "10" } "05" { "var_type" "FIELD_FLOAT" "bonus_hp_regen" "0.5" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_true_form.vpcf" "particle" "particles/units/heroes/hero_lone_druid/true_form_lone_druid.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" "model" "models/heroes/lone_druid/true_form.vmdl" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_bear_form_transform" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "BearFormOn" } "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_true_form.vpcf" "EffectAttachType" "follow_origin" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" //CP3 } } } "Modifiers" { "modifier_bear_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_bear_form" "Target" "CASTER" } } } "modifier_bear_form" { "IsHidden" "0" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" "MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_hp" //Doesn't work on creature units - Given through Lua "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%bonus_hp_regen" } "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "TrueFormStart" "sub_ability_name" "nightelf_bear_form_off" } } } } } "nightelf_bear_form_off" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_bear_form_off" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "25" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "1.45" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_druid_transform" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "BearFormOff" } } "Modifiers" { "modifier_druid_transform" { "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invulnerable" "Target" "CASTER" "Duration" "0.03" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "TrueFormEnd" "main_ability_name" "nightelf_bear_form" "remove_modifier_name" "modifier_bear_form" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_claw.lua" "Function" "ShowWearables" } } } } } "nightelf_mountain_giant_model" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "MaxLevel" "1" "Modifiers" { "modifier_mountain_giant_model" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/mountain_giant.lua" "Function" "GrowModel" } } } } } //================================================================================= // Ability: Taunt // Description: "The closest enemies are forced to attack this unit." //================================================================================= "nightelf_taunt" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_taunt" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastPoint" "0" "AbilityCooldown" "15" "AbilityManaCost" "0" "AbilityCastRange" "%radius" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "450" } "02" { "var_type" "FIELD_INTEGER" "max_units" "10" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/custom/axe_beserkers_call_owner.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_portrait" "CASTER" "attach_portrait" } } "RunScript" { "ScriptFile" "units/nightelf/mountain_giant.lua" "Function" "Taunt" } } } //================================================================================= // Ability: War Club // Description: "Picks up a tree to give the Mountain Giant Siege damage, and increased attack range. |nLasts for strikes." //================================================================================= "nightelf_war_club" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_war_club" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "AbilityCastRange" "320" "AbilityCastPoint" "0" "AbilityCooldown" "5" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_tiny/tiny_grow_cleave.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_tiny.vsndevts" "model" "models/heroes/tiny_01/tiny_01_tree.vmdl" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "strikes" "15" } "02" { "var_type" "FIELD_INTEGER" "range" "250" } // Attack range increased TO this value, not BY this value. // His damage type is changed to Siege, with an increase of 6 in the min end, and 8 in the max end. "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "7" } "04" { "var_type" "FIELD_INTEGER" "bonus_range" "122" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/mountain_giant.lua" "Function" "WarClub" } } "Modifiers" { "modifier_war_club" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_range" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_war_club_strikes" { "OnAttackStart" { "FireSound" { "EffectName" "Hero_Tiny_Tree.PreAttack" "Target" "CASTER" } } "OnAttackLanded" { "RunScript" { "ScriptFile" "units/nightelf/mountain_giant.lua" "Function" "WarClubStrike" "Damage" "%attack_damage" } "FireSound" { "EffectName" "Hero_Tiny_Tree.Attack" "Target" "TARGET" } } } } } //================================================================================= // Ability: Hardened Skin // Description: "Reduces all attacks on the Mountain Giant by damage." //================================================================================= "nightelf_hardened_skin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_hardened_skin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_block" "12" } } "Modifiers" { "modifier_hardened_skin" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK" "%damage_block" } } } } //================================================================================= // Ability: Resistant Skin // Description: "Reduces the duration of negative spells and renders the Mountain Giant immune to certain spells." //================================================================================= "nightelf_resistant_skin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_resistant_skin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" //"Gives Mountain Giants increased resistance to spell damage. This gives the unit hero magic resistance, similar to the resistance that level 6+ creeps have. //Namely, you can't be Polymorphed, Possessed, etc, and all offensive spells have a shorter duration on the target (such as stuns, Ensnare, etc). //It DOES NOT reduce damage dealt to the target, however. That’s an effect of hero armor, not hero magic resistance." //Replace the giants by a "ConsideredHero" version with 30% magic resistance } //================================================================================= // Ability: Pick up Archer // Description: "Picks up an Archer so that the Archer can attack from the air. |n|n|cffffcc00Attacks land and air units.|r" //================================================================================= "nightelf_pick_up_archer" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_pick_up_archer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "900" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "0" "AbilityMultiOrder" "1" // Nothing to put here, basically the Hippogryph moves to the nearest Archer in the 900 radius and picks her up. // The process is interruptable, if so, the ability is treated as not casted. // The Archer moving or doing anything does not interrupt it. // The cooldown is placed on the DISMOUNT ability as soon as Archer gets on the Hippogryph. "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "PickUpArcher" } "ApplyModifier" { "ModifierName" "modifier_on_order_cancel" "Target" "CASTER" } } // Implementation // Find an archer in range, if no archer show an error message // Move the hippogryph towards the archer // Replace by new unit (nightelf_hippogryph_rider) // Mount the archer on top with some angles // Add it to the selection // Disarm and make the mounted archer unselectable with restricted orders // Fake the animation of the mounted archer // The damage of the hippogryph rider is the damage of the archers (modified by any upgrades) // It can attack air and ground units (unlike the hippogryph) "Modifiers" { "modifier_on_order_cancel" { "OnOrder" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "CancelPickup" } "RemoveModifier" { "ModifierName" "modifier_on_order_cancel" "Target" "CASTER" } } } "modifier_mounted_archer" { "IsHidden" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } //================================================================================= // Ability: Mount Hippogryph // Description: "Mounts a Hippogryph so that the Archer can attack from the air. |n|n|cffffcc00Attacks land and air units.|r" //================================================================================= "nightelf_mount_hippogryph" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_pick_up_archer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityMultiOrder" "1" "AbilityCastRange" "900" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "0" // This activates the ability "Pick up Archer" of the nearest Hippogryph in the 900 radius. // The process is interrupted if either Archer or the Hippogryph is issued another order. "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "CallHippogryph" } } } //================================================================================= // Ability: Dismount // Description: "Dismounts the Archer from the Hippogryph." //================================================================================= "nightelf_dismount" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_dismount" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "0" "AbilityMultiOrder" "1" // The Archer is removed and put RIGHT UNDER the Hippogryph. // The cooldown is placed on BOTH "Pick up Archer" and "Mount Hippogryph" as soon as the Archer is on the ground. "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "Dismount" } } "Modifiers" { "modifier_tamed_hippogryph" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_windrunner/windrunner_base_attack.vpcf" } "OnOrbFire" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "FakeArcherAttack" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/nightelf/hippogryph.lua" "Function" "KillArcher" } } } } } //================================================================================= // Ability: Faerie Fire // Description: "Reduces a target enemy unit's armor by and gives vision of that unit. |nLasts seconds." //================================================================================= "nightelf_faerie_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_faerie_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "700" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "45" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "90" } "01" { "var_type" "FIELD_INTEGER" "hero_duration" "45" } "03" { "var_type" "FIELD_INTEGER" "armor_reduction" "-4" } } "precache" { "particle" "particles/custom/nightelf/faerie_fire.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "ApplyFaerieFire" } } "Modifiers" { "modifier_faerie_fire_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "FaerieFireAutocast" } } } "modifier_faerie_fire" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/custom/nightelf/faerie_fire.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "FaerieFireVision" } } } } } //================================================================================= // Ability: Storm Crow Form // Description: "Transforms the Druid into a storm crow, giving him the ability to fly." //================================================================================= "nightelf_storm_crow_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_storm_crow_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AnimationPlaybackRate" "0.1" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "50" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "1.45" } // The process is uninterruptable, and the Druid immediately acquires flying capability. "02" { "var_type" "FIELD_INTEGER" "bonus_air_damage" "25" } "03" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "80" } } "precache" { "particle" "particles/units/heroes/hero_furion/furion_wrath_of_nature_cast.vpcf" "particle" "particles/econ/courier/courier_shagbark/courier_shagbark_ambient.vpcf" "particle" "particles/econ/courier/courier_shagbark/courier_shagbark_firefly_big.vpcf" "model" "models/items/courier/shagbark/shagbark_flying.vmdl" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_crow_form_transform" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "CrowFormOn" } "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_furion/furion_wrath_of_nature_cast.vpcf" "EffectAttachType" "follow_origin" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_weapon" } } } "Modifiers" { "modifier_crow_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_crow_form" "Target" "CASTER" } } } "modifier_crow_form" { "IsHidden" "0" "EffectName" "particles/econ/courier/courier_shagbark/courier_shagbark_ambient.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_air_damage" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_movespeed" } "States" { "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "CrowFormStart" "sub_ability_name" "nightelf_storm_crow_form_off" } } } } } "nightelf_storm_crow_form_off" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_storm_crow_form_off" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "50" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "1.45" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_druid_transform" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "CrowFormOff" } } "Modifiers" { "modifier_druid_transform" { "Duration" "%transformation_time" "EffectName" "particles/econ/courier/courier_shagbark/courier_shagbark_firefly_big.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invulnerable" "Target" "CASTER" "Duration" "0.03" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "CrowFormEnd" "main_ability_name" "nightelf_storm_crow_form" "remove_modifier_name" "modifier_crow_form" } "RunScript" { "ScriptFile" "units/nightelf/druid_of_the_talon.lua" "Function" "ShowWearables" } } } } } //================================================================================= // Ability: Cyclone // Description: "Tosses a target non-mechanical enemy unit into the air, rendering it unable to move, attack or cast spells, and stopping others from attacking or casting on it. |nLasts seconds." //================================================================================= "nightelf_cyclone" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_cyclone" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground,organic" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "5" "AbilityManaCost" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "01" { "var_type" "FIELD_INTEGER" "hero_duration" "6" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_cyclone.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_brewmaster_storm_cyclone" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } } //================================================================================= // Ability: Phase Shift // Description: "Causes this unit to shift out of existence whenever it takes damage, temporarily avoiding any further damage. |nLasts second." //================================================================================= "nightelf_phase_shift" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_phase_shift" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityCastPoint" "0" "AbilityCooldown" "6.5" "AbilityManaCost" "20" "AbilityChannelTime" "1.5" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "1.5" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_puck.vsndevts" "particle" "particles/units/heroes/hero_puck/puck_phase_shift.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_phase_shift" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_phase_shift" "Target" "CASTER" } } "Modifiers" { "modifier_phase_shift" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_puck/puck_phase_shift.vpcf" "EffectAttachType" "attach_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Puck.Phase_Shift" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "PhaseShiftStart" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "PhaseShiftEnd" } } "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_phase_shift_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "OnAttacked" { "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "PhaseShiftAutocast" "Damage" "%attack_damage" } } } } } //================================================================================= // Ability: Mana Flare // Description: "Causes the Faerie Dragon to channel negative magical energies that damage nearby enemies when they cast spells. Also increases the Faerie Dragon's armor by . |nLasts seconds." //================================================================================= "nightelf_mana_flare" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_mana_flare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AnimationPlaybackRate" "0.3" "AbilityCastRange" "750" "AbilityCastPoint" "0.75" "AbilityCooldown" "20" "AbilityManaCost" "50" "AbilityChannelTime" "30" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "02" { "var_type" "FIELD_INTEGER" "radius" "750" } "03" { "var_type" "FIELD_INTEGER" "bonus_armor" "12" } "04" { "var_type" "FIELD_INTEGER" "max_damage_unit" "90" } "05" { "var_type" "FIELD_INTEGER" "max_damage_hero" "50" } "06" { "var_type" "FIELD_INTEGER" "damager_per_mana_unit" "3" } "07" { "var_type" "FIELD_INTEGER" "damage_per_mana_hero" "1" } } "precache" { "particle" "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_aproset.vpcf" "particle" "particles/units/heroes/hero_puck/puck_dreamcoil_emit.vpcf" "particle" "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_tether_aproset.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "ManaFlareStart" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "ManaFlareEnd" } } "Modifiers" { "modifier_mana_flare" { "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } "IsHidden" "1" "Aura" "modifier_mana_flare_debuff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "EffectName" "particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_aproset.vpcf" "EffectAttachType" "follow_origin" } "modifier_mana_flare_debuff" { "IsDebuff" "1" "OnSpentMana" { "RunScript" { "ScriptFile" "units/nightelf/faerie_dragon.lua" "Function" "ManaFlareDamage" } } } } } //================================================================================= // Ability: Corrosive Breath // Description: "Hurls a ball of corrosive bile that is effective against buildings." //================================================================================= "nightelf_corrosive_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_corrosive_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "siege_damage" "50" } "02" { "var_type" "FIELD_INTEGER" "attack_range" "850" } // Attack range increased by 400, from 450 to 850, only against buildings } "precache" { "particle" "particles/units/heroes/hero_venomancer/venomancer_base_attack.vpcf" } "Modifiers" { "modifier_corrosive_breath" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/chimaera.lua" "Function" "UnlockCorrosiveBreath" "SecondaryAttackTable" { "UsedAgainst" "building" "AttackCapabilities" "DOTA_UNIT_CAP_RANGED_ATTACK" "AttackType" "siege" "AttackDamageMin" "45.0" "AttackDamageMax" "55.0" "AttackRate" "2.5" "AttackRange" "850" "ProjectileModel" "particles/units/heroes/hero_venomancer/venomancer_base_attack.vpcf" } } } } } } "nightelf_chimaera_attack" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_chimaera_attack" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "units/nightelf/chimaera.lua" "Function" "ChimaeraAttack" } } } } } //================================================================================= // Ability: Ultravision // Description: "Gives Night Elves the ability to see as far at night as they do during the day." //================================================================================= "nightelf_ultravision" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_ultravision" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_ultravision" { "Passive" "1" "IsHidden" "0" //show on the modifier bar? "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "SetNightVision" } } } } } //================================================================================= // Ability: Root // Description: "Burrows the Ancient's roots into the ground, rendering it immobile, but allowing it to build units. // For the Ancient Protector, this allows it to hurl enormous rocks through the air to damage enemy units. Also gives the Ancient Fortified armor." //================================================================================= "nightelf_root" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_root" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" //"AbilityCastPoint" "2.5" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityGoldCost" "0" "AbilityCastRange" "1" // BuildingHelper info "Building" "1" "ModelRotation" "90.0" "UnitName" "self" //Replicates the unit that has this ability on runtime "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "Root" } } } "nightelf_uproot" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_uproot" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_5" "AbilityCastPoint" "2.5" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "precache" { "particle" "particles/custom/nightelf/root_vines.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.5" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "UpRootStart" } } "OnSpellStart" { // Add an ability to root it back "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "UpRoot" } } "Modifiers" { "modifier_rooted_ancient" { "EffectName" "particles/custom/nightelf/root_vines.vpcf" "EffectAttachType" "follow_origin" } "modifier_uprooted" { "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "States" { "MODIFIER_STATE_SPECIALLY_DENIABLE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "40" } } "modifier_uprooted_ancient_protector" { "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "-572" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "-20" "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "1.5" } } } } //================================================================================= // Ability: Natures Blessing // Description: "Upgrades all Ancients' and Treants' movement speed and armor." //================================================================================= "nightelf_natures_blessing" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_natures_blessing" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "40" } "02" { "var_type" "FIELD_INTEGER" "armor_bonus_tree" "5" } "03" { "var_type" "FIELD_INTEGER" "armor_bonus_tower" "2" } "04" { "var_type" "FIELD_INTEGER" "abs_movespeed" "80" } } "Modifiers" { "modifier_natures_blessing_apply" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "NaturesBlessing" } } "OnCreated" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } } "modifier_natures_blessing_tree" { "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus_tree" "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "%abs_movespeed" } } "modifier_natures_blessing_tower" { "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus_tower" "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "%abs_movespeed" } } } } //================================================================================= // Ability: Replenish // Replenish the life and mana of a target friendly unit. // Moon Wells only regenerate mana at night (same as units should only regenerate HP at night) // These are not set to autocast automatically because some players wish to only use them for Heroes and wish to have more control over how they are used. // Right-clicking a friendly moon well with a unit will set it to cast replenish whenever that unit gets close //================================================================================= "nightelf_replenish_mana_and_life" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_replenish_mana_and_life" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastRange" "500" "RequiresAnyDeficit" "1" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_per_mana" "2" } "02" { "var_type" "FIELD_FLOAT" "mp_per_mana" "0.5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/moon_well.lua" "Function" "Replenish" } } "Modifiers" { "modifier_replenish_autocast" //Not automatically enabled { "Passive" "1" "IsHidden" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/moon_well.lua" "Function" "ReplenishAutocast" } "RunScript" { "ScriptFile" "units/nightelf/moon_well.lua" "Function" "CheckTimeOfDay" } } } "modifier_mana_regeneration_daytime" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "-100" } } } } "nightelf_well_spring" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_well_spring" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "125" } "02" { "var_type" "FIELD_FLOAT" "bonus_mana_regen" "0.5" } } "Modifiers" { "modifier_well_spring" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/moon_well.lua" "Function" "WellSpringBonus" } } } } } //================================================================================= // Ability: Eat Tree // Description: "Consume a tree to restore hit points over seconds." //================================================================================= "nightelf_eat_tree" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_eat_tree" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "AbilityCastRange" "320" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "02" { "var_type" "FIELD_INTEGER" "total_heal" "500" } } "precache" { "particle" "particles/units/heroes/hero_treant/treant_leech_seed_projectile_heal_explode.vpcf" "particle" "particles/units/heroes/hero_treant/treant_leech_seed.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_treant.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "EatTree" } } "Modifiers" { "modifier_eat_tree" { "Duration" "%duration" "ThinkInterval" "0.5" "OnIntervalThink" { "FireEffect" { "EffectName" "particles/units/heroes/hero_treant/treant_leech_seed_projectile_heal_explode.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" } } } "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%total_heal / %duration" } } } } // Night Elf Regen is disabled at day time "nightelf_night_regen" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_night_regen" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/shared.lua" "Function" "NightRegenThink" } } } //Stacks of this modifier are applied to nullify base regen at daytime "modifier_night_regen_disabled" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "-0.1" } } } } "nightelf_sentinel_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_sentinel" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_improved_bows_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_improved_bows" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_marksmanship_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_marksmanship" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_upgraded_moon_glaive_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_upgraded_moon_glaive" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_vorpal_blades_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_vorpal_blades" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_abolish_magic_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_abolish_magic" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_rejuvenation_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_rejuvenation" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_bear_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_bear_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_war_club_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_war_club" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_resistant_skin_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_resistant_skin" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_hardened_skin_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_hardened_skin" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_storm_crow_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_storm_crow_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_cyclone_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_cyclone" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_pick_up_archer_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_pick_up_archer" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_mount_hippogryph_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_pick_up_archer" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_corrosive_breath_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_corrosive_breath" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_ultravision_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_ultravision" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_well_spring_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_well_spring" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_natures_blessing_disabled" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityTextureName" "nightelf_research_natures_blessing" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Heroes "nightelf_train_demon_hunter1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_antimage" } } } "nightelf_train_keeper1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_leshrac" } } } "nightelf_train_potm1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_mirana" } } } "nightelf_train_warden1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // Passive version indicates that the hero has already been trained, stopping the next rank of that hero "nightelf_train_demon_hunter_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_keeper_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_potm_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_warden_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Version 2 costs 450g and 100lumber and requires to have upgraded the city level 2 "nightelf_train_demon_hunter2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_antimage" } } } "nightelf_train_keeper2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_leshrac" } } } "nightelf_train_potm2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_mirana" } } } "nightelf_train_warden2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // Version 3 costs the same but requires City Hall level 3 "nightelf_train_demon_hunter3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_antimage" } } } "nightelf_train_keeper3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_leshrac" } } } "nightelf_train_potm3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_mirana" } } } "nightelf_train_warden3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // Disabled Versions //Ranks 2 "nightelf_train_demon_hunter2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_keeper2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_potm2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_warden2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Ranks 3 "nightelf_train_demon_hunter3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_keeper3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_potm3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "nightelf_train_warden3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Revival, one ability for each level to scale the gold and channel time (volvo pls) // 180 30 "nightelf_train_demon_hunter_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 225 35 "nightelf_train_demon_hunter_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 270 40 "nightelf_train_demon_hunter_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 315 45 "nightelf_train_demon_hunter_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 360 50 "nightelf_train_demon_hunter_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 405 60 "nightelf_train_demon_hunter_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 450 70 "nightelf_train_demon_hunter_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 495 80 "nightelf_train_demon_hunter_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 540 90 "nightelf_train_demon_hunter_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 585 100 "nightelf_train_demon_hunter_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_demon_hunter" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_antimage" } } } // 180 30 "nightelf_train_keeper_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 225 35 "nightelf_train_keeper_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 270 40 "nightelf_train_keeper_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 315 45 "nightelf_train_keeper_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 360 50 "nightelf_train_keeper_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 405 60 "nightelf_train_keeper_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 450 70 "nightelf_train_keeper_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 495 80 "nightelf_train_keeper_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 540 90 "nightelf_train_keeper_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 585 100 "nightelf_train_keeper_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_keeper" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_leshrac" } } } // 180 30 "nightelf_train_potm_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 225 35 "nightelf_train_potm_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 270 40 "nightelf_train_potm_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 315 45 "nightelf_train_potm_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 360 50 "nightelf_train_potm_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 405 60 "nightelf_train_potm_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 450 70 "nightelf_train_potm_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 495 80 "nightelf_train_potm_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 540 90 "nightelf_train_potm_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 585 100 "nightelf_train_potm_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_potm" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_mirana" } } } // 180 30 "nightelf_train_warden_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 225 35 "nightelf_train_warden_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 270 40 "nightelf_train_warden_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 315 45 "nightelf_train_warden_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 360 50 "nightelf_train_warden_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 405 60 "nightelf_train_warden_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 450 70 "nightelf_train_warden_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 495 80 "nightelf_train_warden_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 540 90 "nightelf_train_warden_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // 585 100 "nightelf_train_warden_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_warden" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_phantom_assassin" } } } // Affects all ground units (except for builders, which have their inventories filled with items) "nightelf_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MUTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Enable" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } "OnDeath" { // Item drops when unit is killed "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "BackpackDrop" } } } } } "nightelf_backpack_disabled" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack_disabled" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Disable" } } } } } "nightelf_research_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "DisableResearch" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_backpack_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Tree of Life -> Tree of Ages "nightelf_train_tree_of_ages" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_tree_of_ages" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "320" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "320" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "180" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "nightelf_tree_of_ages" } } } // Requires Altar "nightelf_train_tree_of_eternity_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_tree_of_eternity" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Tree of Ages -> Tree of Eternity "nightelf_train_tree_of_eternity" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_tree_of_eternity" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "330" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "330" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "nightelf_tree_of_eternity" } } } // Night Elf Buildings // nightelf_ancient_of_lore - Requires Tree of Ages and Hunters Hall // nightelf_ancient_of_wind - Requires Tree of Ages // nightelf_ancient_protector - Requires Hunters Hall // nightelf_chimaera_roost - Requires Tree of Eternity and Ancient of the Wind // Item Abilities // nightelf_tree_of_life - No requirements // nightelf_tree_of_ages - Upgrade // nightelf_tree_of_eternity - Upgrade, Requires Altar of Elders // nightelf_altar_of_elders - No requirements // nightelf_ancient_of_war - No requirements // nightelf_hunters_hall - No requirements // nightelf_moon_well - No requirements // nightelf_ancient_of_wonders - No requirements // nightelf_entangled_gold_mine - Ability through Tree of Life/Ages/Eternity "nightelf_build_ancient_of_lore_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_of_lore" "MaxLevel" "0" } "nightelf_build_ancient_of_lore" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_of_lore" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ConsumesBuilder" "1" //bool "ModelRotation" "90.0" "UnitName" "nightelf_ancient_of_lore" "AbilityCooldown" "0" "AbilityGoldCost" "155" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "155" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "145" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "nightelf_build_ancient_of_wind_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_of_wind" "MaxLevel" "0" } "nightelf_build_ancient_of_wind" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_of_wind" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ConsumesBuilder" "1" //bool "ModelRotation" "90.0" "UnitName" "nightelf_ancient_of_wind" "AbilityCooldown" "0" "AbilityGoldCost" "150" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "140" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "nightelf_build_ancient_protector_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_protector" "MaxLevel" "0" } "nightelf_build_ancient_protector" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_ancient_protector" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ConsumesBuilder" "1" //bool "ModelRotation" "90.0" "UnitName" "nightelf_ancient_protector" "AbilityCooldown" "0" "AbilityGoldCost" "135" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "80" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "nightelf_build_chimaera_roost_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_chimaera_roost" "MaxLevel" "0" } "nightelf_build_chimaera_roost" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_build_chimaera_roost" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "80.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ModelRotation" "45.0" "UnitName" "nightelf_chimaera_roost" "AbilityCooldown" "0" "AbilityGoldCost" "140" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "140" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "190" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } // On Tree of Life/Ages/Eternity. Places a nightelf_entangled_gold_mine and being construction // Must target a gold mine. Gold mine is already entangled when the game starts // Will auto start when the tree roots in radius of a gold mine "nightelf_entangle_gold_mine" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_entangle_gold_mine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityCastAnimation" "ACT_DOTA_IDLE" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "build_time" "60" } "02" { "var_type" "FIELD_INTEGER" "hit_points" "800" } } "precache" { "particle" "particles/custom/nightelf/root_vines.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "EntangleGoldMine" } } "Modifiers" { "modifier_auto_entangle" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "5.0" //Slow thinker "OnIntervalThink" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "AutoEntangle" } } } } } // Passive ability to indicate that this ancient has an entangled gold mine active "nightelf_entangle_gold_mine_passive" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_entangle_gold_mine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "OnOwnerDied" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "RemoveEntangledMine" } } } // Effects on the nightelf_entangled_gold_mine "nightelf_entangled_mine" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_entangle_gold_mine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "precache" { "particle" "particles/units/heroes/hero_treant/treant_eyesintheforest_d.vpcf" } "Modifiers" { "modifier_entangled_mine" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/custom/nightelf/root_vines.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_DISABLE_TURNING" "1" "MODIFIER_PROPERTY_IGNORE_CAST_ANGLE" "1" } "OnDestroy" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "ShowGoldMine" } } } } } // Order a wisp to cast gather on the mine // Also available through right click "nightelf_load" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_load" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "LoadWisp" } } } // Order one wisp to exit the mine "nightelf_unload" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_wisp" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "UnloadWisp" } } } // Order all wisps to exit the mine // Used when the building is killed (either through damage or tree uprooting) or when the mine collapses "nightelf_unload_all" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_unload" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "OnSpellStart" { "RunScript" { "ScriptFile" "units/nightelf/ancients.lua" "Function" "UnloadAll" } } } //================================================================================= // Ability: Gather // Description: "Mines gold from Entangled Gold Mines and harvests lumber from trees." //================================================================================= "nightelf_gather" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_gather" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_TREE | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "CastFilterRejectCaster" "1" "RequiresEmptyTree" "1" "LumberGainInterval" "8" "LumberPerInterval" "5" "GoldMineBuilding" "nightelf_entangled_gold_mine" "GoldGainInterval" "5" "GoldPerInterval" "10" "DamageMine" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lumber_per_interval" "5" } "02" { "var_type" "FIELD_INTEGER" "gold_per_interval" "10" } } "precache" { "particle" "particles/units/heroes/hero_wisp/wisp_tether.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_overcharge.vpcf" } // Tree targeting // Move towards the tree, repeat until ~100 distance // Only one wisp per tree, if tree busy find another // OnOrder, toggle off and cancel the skill // When close to the tree, smoothly move the wisp on top // Modifier generates lumber every think interval, OnOrder cancels // If possible try to make some circular rotation around the tree // Gold mine targeting // Mine has to be entangled (the targeted unit would actually be entangled_mine) // Mine has to have a wisp slot available (5 total) // Move towards the mine, repeat until ~100 distance // OnOrder, toggle off and cancel the skill // When close to the mine, put the wisp inside at some visible position and +1 slots // The entangled mine has some skills to eject the wisps which are unselectable inside "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } "RunScript" { "ScriptFile" "units/repair.lua" "Function" "Repair" } } // REPAIR (Renew) //"EffectName" "particles/units/heroes/hero_wisp/wisp_overcharge.vpcf" //"EffectAttachType" "follow_overhead" //"TextureName" "nightelf_renew } //==========================================================// // NIGHT ELF RESEARCH ABILITIES // //==========================================================// // • Tree of Life / Ages / Eternity "nightelf_research_natures_blessing" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_natures_blessing" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_natures_blessing_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_natures_blessing" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Ancient of War "nightelf_research_sentinel" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_sentinel" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_sentinel_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_sentinel" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_improved_bows" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_improved_bows" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_improved_bows_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_improved_bows" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_marksmanship" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_marksmanship" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_marksmanship_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_marksmanship" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_upgraded_moon_glaive" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_upgraded_moon_glaive" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Apply the update on all current huntresses "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "UpgradeMoonGlaives" } } } "nightelf_research_upgraded_moon_glaive_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_upgraded_moon_glaive" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_vorpal_blades" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_vorpal_blades" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_vorpal_blades_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_vorpal_blades" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Ancient of Lore "nightelf_research_abolish_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_abolish_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_druid_of_the_claw_training1" // Rejuvenation { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_claw_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "25" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_druid_of_the_claw_training2" // Bear Form { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_claw_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_druid_of_the_claw_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_claw_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_mark_of_the_claw" // Roar in Bear Form { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_mark_of_the_claw" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "25" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "25" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Apply upgrade on all current transformed druids "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "UpgradeMarkOfTheClaw" } } } "nightelf_research_mark_of_the_claw_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_mark_of_the_claw" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_resistant_skin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_resistant_skin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Apply upgrade on all current Mountain Giants (replace the units) "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "UpgradeResistantSkin" } } } "nightelf_research_resistant_skin_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_resistant_skin" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_hardened_skin" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_hardened_skin" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_hardened_skin_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_hardened_skin" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Ancient of Wind "nightelf_research_druid_of_the_talon_training1" // Crow Form { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_druid_of_the_talon_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_druid_of_the_talon_training2" // Cyclone { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "65" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_druid_of_the_talon_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_hippogryph_taming" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_hippogryph_taming" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_mark_of_the_talon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_mark_of_the_talon" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "25" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "25" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Apply upgrade on all current transformed druids "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "UpgradeMarkOfTheTalon" } } } "nightelf_research_mark_of_the_talon_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_mark_of_the_talon" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Chimaera Roost "nightelf_research_corrosive_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_corrosive_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "225" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } // • Hunters Hall "nightelf_research_strength_of_the_moon1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_moon1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_moon2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_moon2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "175" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_moon2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_moon2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_strength_of_the_moon3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_moon3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "225" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_moon3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_moon3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_moon_armor1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_moon_armor1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_moon_armor2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_moon_armor2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_moon_armor2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_moon_armor2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_moon_armor3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_moon_armor3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "225" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_moon_armor3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_moon_armor3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_strength_of_the_wild1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_wild1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_wild2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_wild2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "175" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_wild2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_wild2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_strength_of_the_wild3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_wild3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_strength_of_the_wild3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_strength_of_the_wild3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_reinforced_hides1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_reinforced_hides1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_reinforced_hides2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_reinforced_hides2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_reinforced_hides2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_reinforced_hides2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_reinforced_hides3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_reinforced_hides3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_reinforced_hides3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_reinforced_hides3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_research_ultravision" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_ultravision" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_well_spring" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_well_spring" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "nightelf_research_well_spring_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_well_spring" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_wisp" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_wisp" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "60" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "14.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "60" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_wisp" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_archer" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_archer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "130" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "20.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "130" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "10" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_archer" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_huntress" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_huntress" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "195" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "195" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_huntress" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyMoonGlaiveUpgrade" } } } } } "nightelf_train_huntress_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_huntress" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_glaive_thrower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_glaive_thrower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "210" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "48.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "210" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "65" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_glaive_thrower" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_glaive_thrower_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_glaive_thrower" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_dryad" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_dryad" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "145" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "145" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_dryad" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_druid_of_the_claw" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_druid_of_the_claw" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "255" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "255" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "80" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_druid_of_the_claw" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_druid_of_the_claw_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_druid_of_the_claw" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_mountain_giant" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_mountain_giant" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "425" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "425" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "7" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "SpawnUnit" "UnitName" "nightelf_mountain_giant" } } } "nightelf_train_mountain_giant_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_mountain_giant" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_faerie_dragon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_faerie_dragon" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "155" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "25.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "155" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_faerie_dragon" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_faerie_dragon_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_faerie_dragon" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "nightelf_train_druid_of_the_talon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_druid_of_the_talon" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "135" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "22.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_druid_of_the_talon" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_hippogryph" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_hippogryph" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "160" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "160" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_hippogryph" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "nightelf_train_chimaera" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_train_chimaera" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "330" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "65.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "330" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "70" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "nightelf_chimaera" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } // nightelf_strength_of_the_moon // nightelf_moon_armor // nightelf_strength_of_the_wild // nightelf_reinforced_hides // nightelf_druid_of_the_claw_training // nightelf_druid_of_the_talon_training "nightelf_strength_of_the_moon1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_moon1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "glaive_thrower_damage" "10 20 30" } } "Modifiers" { "modifier_strength_of_the_moon" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_glaive_thrower_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%glaive_thrower_damage" } } } } "nightelf_strength_of_the_moon2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_moon2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "glaive_thrower_damage" "10 20 30" } } "Modifiers" { "modifier_strength_of_the_moon" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_glaive_thrower_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%glaive_thrower_damage" } } } } "nightelf_strength_of_the_moon3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_moon3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "glaive_thrower_damage" "10 20 30" } } "Modifiers" { "modifier_strength_of_the_moon" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_glaive_thrower_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%glaive_thrower_damage" } } } } "nightelf_moon_armor1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_moon_armor1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_moon_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "nightelf_moon_armor2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_moon_armor2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_moon_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "nightelf_moon_armor3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_moon_armor3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_moon_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "nightelf_strength_of_the_wild1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_wild1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "druids_mountain_giant_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "chimaera_damage" "9 18 27" } } "Modifiers" { "modifier_strength_of_the_wild" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_druids_mountain_giant_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%druids_mountain_giant_damage" } } "modifier_chimaera_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%chimaera_damage" } } } } "nightelf_strength_of_the_wild2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_wild2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "druids_mountain_giant_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "chimaera_damage" "9 18 27" } } "Modifiers" { "modifier_strength_of_the_wild" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_druids_mountain_giant_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%druids_mountain_giant_damage" } } "modifier_chimaera_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%chimaera_damage" } } } } "nightelf_strength_of_the_wild3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_strength_of_the_wild3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "2 4 6" } "02" { "var_type" "FIELD_INTEGER" "druids_mountain_giant_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "chimaera_damage" "9 18 27" } } "Modifiers" { "modifier_strength_of_the_wild" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/nightelf/nightelf_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_druids_mountain_giant_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%druids_mountain_giant_damage" } } "modifier_chimaera_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%chimaera_damage" } } } } "nightelf_reinforced_hides1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_reinforced_hides1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_reinforced_hides" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "nightelf_reinforced_hides2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_reinforced_hides2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_reinforced_hides" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "nightelf_reinforced_hides3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "nightelf_research_reinforced_hides3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_reinforced_hides" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } //Druid of the Claw Adept Training //Increases mana capacity by 100, mana regeneration rate by 25%, hit points by 75, minimum and maximum attack (+3 each level), and gives them the ability to cast Rejuvenation. "nightelf_druid_of_the_claw_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_claw_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "25" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "75" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "3" } } "Modifiers" { "modifier_druid_of_the_claw_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "5" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Druid of the Claw Master Training //Further increases mana capacity by 100, mana regeneration rate by 25%, hit points by 75, minimum and maximum attack, and allows them to transform into Bear Form. "nightelf_druid_of_the_claw_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_claw_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100 200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "25 50" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "75 150" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6" } } "Modifiers" { "modifier_druid_of_the_claw_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "6" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Druid of the Talon Adept Training //Increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40 and gives them the ability Storm Crow Form. "nightelf_druid_of_the_talon_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_druid_of_the_talon_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Druid of the Talon Master Training //Further increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40 and gives them the ability to cast Cyclone. "nightelf_druid_of_the_talon_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "nightelf_research_druid_of_the_talon_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100 200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30 60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40 80" } } "Modifiers" { "modifier_druid_of_the_talon_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //================================================================================= // Ability: Pillage // Description: "Each attack that does damage to an enemy building also gains resources." //================================================================================= "orc_pillage" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pillage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "pillage_ratio" "0.5" } // Amount of resource gained = Building's cost * salvage_ratio * Damage dealt to building in percentage } "precache" { "particle" "particles/units/heroes/hero_alchemist/alchemist_lasthit_coins.vpcf" } "Modifiers" { "modifier_pillage" { "IsHidden" "0" "Passive" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "units/orc/pillage.lua" "Function" "Pillage" "attack_damage" "%attack_damage" } } } } // Done } //================================================================================= // Ability: Berserk // Description: "Causes this unit to attack % faster, but take % more damage." //================================================================================= "orc_berserk" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_berserk" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } "02" { "var_type" "FIELD_INTEGER" "damage_taken_increase" "50" } "03" { "var_type" "FIELD_INTEGER" "attack_speed_increase" "50" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_increase" "20" } } "precache" { "particle" "particles/items2_fx/mask_of_madness.vpcf" "soundfile" "soundevents/game_sounds_items.vsndevts" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_orc_berserk" "Target" "CASTER" "Duration" "%duration" } "FireSound" { "EffectName" "DOTA_Item.MaskOfMadness.Activate" "Target" "CASTER" } } "Modifiers" { "modifier_orc_berserk" { "IsPurgable" "1" "EffectName" "particles/items2_fx/mask_of_madness.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_taken_increase" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_increase" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_increase" } } } } //================================================================================= // Ability: Burning Oil // Description: "Drenches the Demolisher ammo in burning oil, causing them to light the ground on fire and burn enemy units." //================================================================================= "orc_burning_oil" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_burning_oil" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "ground" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.5" //Total Duration of Flame Strike } "02" { "var_type" "FIELD_INTEGER" "radius" "150" } "03" { "var_type" "FIELD_FLOAT" "damage_per_second" "5" } } "Modifiers" { "modifier_burning_oil" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/demolisher.lua" "Function" "UnlockBurningOil" } } } "modifier_burning_oil_thinker" { "IsHidden" "1" "EffectName" "particles/custom/orc/burning_oil_ground.vpcf" "EffectAttachType" "attach_hitloc" "Aura" "modifier_burning_oil_damage" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "modifier_burning_oil_damage" { "IsDebuff" "1" "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/demolisher.lua" "Function" "BurningOilDamage" "Damage" "%damage_per_second / 2" } } } } } //================================================================================= // Ability: Purge // Description: "Removes all buffs from a target unit, and slows its movement speed by a factor // of . Purged units will slowly regain their movement speed over seconds. // |n|cffffcc00Deals damage to summoned units.|r" //================================================================================= "orc_purge" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_purge" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "TargetsAllowed" "ward" "AbilityCastRange" "700" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "75" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "15" } "02" { "var_type" "FIELD_INTEGER" "duration_hero" "5" } "03" { "var_type" "FIELD_INTEGER" "damage_to_summons" "400" } "04" { "var_type" "FIELD_INTEGER" "slow_per_stack" "-20" } } "precache" { "particle" "particles/generic_gameplay/generic_purge.vpcf" "soundfile" "soundevents/game_sounds_creeps.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.DiffusalBlade.Target" "Target" "TARGET" } "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "PurgeStart" } } "Modifiers" { "modifier_purge" { "TextureName" "orc_purge" "IsDebuff" "1" "IsPurgable" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "ApplyPurge" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_purge_slow" "Target" "TARGET" } } } "modifier_purge_slow" { "IsHidden" "1" "IsDebuff" "1" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_per_stack" } "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "PurgeThink" } } } } } //================================================================================= // Ability: Lightning Shield // Description: "Forms a shield of electricity around a target unit, dealing damage per second to units around it. |nLasts seconds." //================================================================================= "orc_lightning_shield" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_lightning_shield" "MaxLevel" "1" "CastFilterRejectCaster" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "ground" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "3" "AbilityManaCost" "100" "AOERadius" "160" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "02" { "var_type" "FIELD_INTEGER" "radius" "160" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "20" } "04" { "var_type" "FIELD_FLOAT" "think_interval" "0.5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "LightningShieldOnSpellStart" } } "Modifiers" { "modifier_lightning_shield" { "IsPurgable" "1" "Duration" "%duration" "EffectName" "particles/custom/orc/lightning_shield.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "ModifierLightningShieldOnIntervalThink" } } } } } //================================================================================= // Ability: Bloodlust // Description: "Increases a friendly unit's attack rate and movement speed." //================================================================================= "orc_bloodlust" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_bloodlust" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "40" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "60" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_increase" "40" } "03" { "var_type" "FIELD_INTEGER" "movement_speed_increase" "25" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ogre_magi.vsndevts" "soundfile" "sounds/weapons/hero/ogre_magi/bloodlust_target.vsnd" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_bloodlust" "Target" "TARGET" "Duration" "%duration" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_cast.vpcf" "EffectAttachType" "follow_customorigin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_attack1" //Start "CASTER" "attach_hitloc" //Velocity noise, not used "CASTER" "attach_attack2" //Hands "TARGET" "attach_hitloc" //Hit } } } "Modifiers" { "modifier_bloodlust_autocast_aura" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_bloodlust_autocast_attackstart" "Aura_Radius" "600" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast" } } } "modifier_bloodlust_autocast_attackstart" { "IsHidden" "1" "OnAttack" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast_Attack" } } "OnAttacked" { "RunScript" { "ScriptFile" "units/orc/shaman.lua" "Function" "BloodlustAutocast_Attacked" } } } } } //================================================================================= // Ability: Sentry Ward // Description: "Summons an invisible and immovable ward that provides vision in an area. // Can see invisible units. // Lasts seconds." //================================================================================= "orc_sentry_ward" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_sentry_ward" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "50" "AOERadius" "1600" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "600" } "02" { "var_type" "FIELD_INTEGER" "radius" "1600" } } "OnSpellStart" { "RunScript" { "ScriptFile" "items/wards.lua" "Function" "SummonSentryWard" "Target" "POINT" } } } //================================================================================= // Ability: Stasis Trap // Description: "Summons an invisible and immovable ward that stuns enemy land units around it. // The trap activates when an enemy land unit approaches and destroys all other stasis wards in its area of effect. // The trap lasts seconds. |nThe stun lasts seconds." //================================================================================= "orc_stasis_trap" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_stasis_trap" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "ground" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "100" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "150" } "02" { "var_type" "FIELD_INTEGER" "detonation_radius" "400" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "6" } "04" { "var_type" "FIELD_INTEGER" "activation_delay" "10" } "05" { "var_type" "FIELD_INTEGER" "detection_radius" "250" } "06" { "var_type" "FIELD_FLOAT" "stun_duration_hero" "2.5" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/witchdoctor.lua" "Function" "StasisStart" "Target" "POINT" } } "Modifiers" { "modifier_stasis_ward" { "IsHidden" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } "Duration" "%activation_delay" "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/witchdoctor.lua" "Function" "StasisSetup" } } } "modifier_stasis_ward_trigger" { "IsHidden" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/witchdoctor.lua" "Function" "StasisThink" } } } } } //================================================================================= // Ability: Healing Ward // Description: "Summons an immovable ward that heals % of a nearby friendly non-mechanical unit's hit points per second. // Lasts seconds." //================================================================================= "orc_healing_ward" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_healing_ward" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "organic" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "200" "AOERadius" "500" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_juggernaut.vsndevts" "model" "models/heroes/juggernaut/jugg_healing_ward.vmdl" "particle" "particles/units/heroes/hero_juggernaut/juggernaut_healing_ward.vpcf" "particle" "particles/units/heroes/hero_juggernaut/juggernaut_ward_heal.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "30" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_INTEGER" "regeneration" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "items/wards.lua" "Function" "SummonHealingWard" "Target" "POINT" } } } //================================================================================= // Ability: Spirit Link // Description: "Links units together in a chain. All units with Spirit Link on them will live longer, by distributing % of the damage they take across other Spirit Linked units. |nLasts seconds." //================================================================================= "orc_spirit_link" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_spirit_link" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastRange" "750" "AbilityCastPoint" "0.3" "AbilityCooldown" "0" "AbilityManaCost" "75" "AOERadius" "500" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "75" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_FLOAT" "distribution_factor" "0.5" } "04" { "var_type" "FIELD_INTEGER" "max_unit" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "SpiritLinkStart" } "FireSound" { "EffectName" "Hero_Oracle.FortunesEnd.Target" "Target" "TARGET" } } "Modifiers" { "modifier_spirit_link" { "IsPurgable" "1" "IsBuff" "1" "Duration" "%duration" "EffectName" "particles/custom/orc/spirit_link.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "AddLinkedUnit" } } "OnDeath" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "RemoveLinkedUnit" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "RemoveLinkedUnit" } } "OnTakeDamage" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "LinkDamage" "Damage" "%attack_damage" } } } } } //================================================================================= // Ability: Disenchant // Description: "Removes all buffs from units in a target area. |n|cffffcc00Deals damage to hostile summoned units.|r" //================================================================================= "orc_disenchant" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_disenchant" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "AbilityCastRange" "650" "AbilityCastPoint" "0.35" "AbilityCooldown" "0" "AbilityManaCost" "100" "TargetsAllowed" "ward" "AOERadius" "%radius" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_summons" "250" } "02" { "var_type" "FIELD_INTEGER" "radius" "250" } } "precache" { "particle" "particles/econ/items/enchantress/enchantress_lodestar/ench_death_lodestar_burst.vpcf" "particle" "particles/units/heroes/hero_oracle/oracle_false_promise_dmg_burst.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Brewmaster_Storm.DispelMagic" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "Disenchant" "Target" "POINT" } } } //================================================================================= // Ability: Ancestral Spirit // Description: "Raises a fallen non-Hero Tauren from the dead. The Tauren is revived with % of its hit points restored." //================================================================================= "orc_ancestral_spirit" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_ancestral_spirit" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastRange" "350" "AbilityCastPoint" "0.1" "AbilityCooldown" "30" "AbilityManaCost" "250" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "life_restored" "100" } "02" { "var_type" "FIELD_INTEGER" "mana_restored" "25" } } "precache" { "particle" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_explode.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "AncestralSpiritPrecast" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Abaddon.AphoticShield.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "AncestralSpirit" } } } //================================================================================= // Ability: Ethereal Form // Description: "Turns the Spirit Walker ethereal, making him immune to physical damage but unable to attack. He can cast spells and will take extra damage from Magic attacks and spells." //================================================================================= "orc_ethereal_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_ethereal_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.0" "AbilityCooldown" "0" //Can always go into ethereal form "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_spell_damage" "-66" } "02" { "var_type" "FIELD_FLOAT" "transformation_time" "0.7" } } "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_spirit_breaker.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "EtherealStart" } } "Modifiers" { "modifier_ethereal_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "EtherealForm" } } } "modifier_ethereal_form" { "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_ethereal" "Target" "CASTER" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_ethereal" "Target" "CASTER" } } } "modifier_spawning" { "Passive" "1" "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_ethereal" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_spawning" "Target" "CASTER" } } } } } //================================================================================= // Ability: Corporeal Form // Description: "Removes ethereal form" //================================================================================= "orc_corporeal_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_corporeal_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0.0" "AbilityCooldown" "30" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "0.7" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "CorporealStart" } } "Modifiers" { "modifier_corporeal_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/spiritwalker.lua" "Function" "CorporealForm" } } } } } //================================================================================= // Ability: Ensnare // Description: "Causes a target enemy unit to be bound to the ground so that it cannot move for seconds. Air units that are ensnared can be attacked as though they were land units." //================================================================================= "orc_ensnare" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ensnare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "16" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "2" } } "precache" { "particle" "particles/units/heroes/hero_siren/siren_net.vpcf" "particle" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_NagaSiren.Ensnare.Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "1000" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "ApplyModifier" { "ModifierName" "modifier_ensnare" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_ensnare" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } "Modifiers" { "modifier_ensnare" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_siren/siren_net.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/orc/ensnare.lua" "Function" "Ensnare" } "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/ensnare.lua" "Function" "EnsnareDestroy" } "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } } } } //================================================================================= // Ability: Devour // Description: "Consumes an enemy land unit, slowly digesting it and dealing damage per second to it. If the Kodo Beast is killed while the consumed unit is still digesting, the unit that was devoured will be released." //================================================================================= "orc_devour" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_devour" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "120" "AbilityCastPoint" "0.5" "AbilityCooldown" "0" "AbilityManaCost" "0" "TargetsAllowed" "ground,organic" "MaxCreepLevel" "5" "AbilitySpecial" { "02" { "var_type" "FIELD_FLOAT" "delay" "0.5" } "03" { "var_type" "FIELD_INTEGER" "radius" "250" } "04" { "var_type" "FIELD_INTEGER" "damage_per_second" "5" } } "precache" { "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_devour.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourPhase" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourStart" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourDeath" } } "Modifiers" { "modifier_devour_devouring" { "OnDeath" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourDeath" } } } "modifier_devour_debuff" { "IsDebuff" "1" "ThinkInterval" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/kodobeast.lua" "Function" "DevourThink" } } "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_PASSIVES_DISABLED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_DISABLE_HEALING" "1" } } } } //================================================================================= // Ability: War Drums // Description: "Adds a damage increase to the attacks of nearby friendly units." //================================================================================= "orc_war_drums" { "BaseClass" "ability_lua" "ScriptFile" "units/orc/kodobeast.lua" "AbilityTextureName" "orc_war_drums" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "damage_increase" "10" } } } "orc_improved_war_drums" { "BaseClass" "ability_lua" "ScriptFile" "units/orc/kodobeast.lua" "AbilityTextureName" "orc_research_improved_war_drums" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "damage_increase" "20" } } } //================================================================================= // Ability: Envenomed Spears // Description: "Deals poison damage per second. |nLasts seconds." //================================================================================= "orc_envenomed_spears" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_envenomed_spears" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "25" } "02" { "var_type" "FIELD_INTEGER" "duration_hero" "1" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "4" } } "Modifiers" { "modifier_envenomed_spears_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_envenomed_spears" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%duration_hero" } "ApplyModifier" { "ModifierName" "modifier_envenomed_spears" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration" } } } "modifier_envenomed_spears" { "IsDebuff" "1" "EffectName" "particles/neutral_fx/gnoll_poison_debuff.vpcf" "EffectAttachType" "attach_hitloc" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second" } } } } } //================================================================================= // Ability: Unstable Concoction // Description: "Causes a powerful explosion that deals damage to a target air unit, and damage to nearby enemy air units." //================================================================================= "orc_unstable_concoction" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_unstable_concoction" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "TargetsAllowed" "air" "AbilityCastRange" "400" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "full_damage_amount" "600" } "02" { "var_type" "FIELD_INTEGER" "partial_damage_amount" "140" } "03" { "var_type" "FIELD_INTEGER" "partial_damage_radius" "200" } "04" { "var_type" "FIELD_INTEGER" "speed_bonus" "280" } } "precache" { "particle" "particles/econ/items/huskar/huskar_searing_dominator/huskar_searing_life_break.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_huskar.vsndevts" "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/batrider.lua" "Function" "UnstableSpellStart" } } "Modifiers" { "modifier_unstable_concoction" { "IsHidden" "1" "EffectName" "particles/econ/items/huskar/huskar_searing_dominator/huskar_searing_life_break.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%speed_bonus" } "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MUTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDeath" { "RunScript" { "ScriptFile" "units/orc/batrider.lua" "Function" "UnstableDeath" } } } } } //================================================================================= // Ability: Liquid Fire // Description: "Flings a volatile liquid that causes buildings to take damage over time. Buildings that are currently taking damage from Liquid Fire cannot be repaired, and have their attack rate reduced by %." //================================================================================= "orc_liquid_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_liquid_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "3" } "02" { "var_type" "FIELD_FLOAT" "attack_speed_reduction" "-80" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "8" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts" } "Modifiers" { "modifier_liquid_fire_orb" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "units/orc/batrider.lua" "Function" "LiquidOrb" } } } "modifier_liquid_fire_debuff" { "IsDebuff" "1" "Duration" "%duration" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/batrider.lua" "Function" "LiquidOrbEffect" } } "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/orc/batrider.lua" "Function" "LiquidOrbThink" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_reduction" } } } } //================================================================================= // Ability: Pulverize // Description: "Gives a % chance that an attack will deal damage to nearby units." //================================================================================= "orc_pulverize" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pulverize" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "TargetsAllowed" "ground" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "extra_damage" "60" } "02" { "var_type" "FIELD_INTEGER" "chance" "25" } "03" { "var_type" "FIELD_INTEGER" "full_damage_radius" "250" } "04" { "var_type" "FIELD_INTEGER" "half_damage_radius" "350" } } "precache" { "particle" "particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_totem_buff_egset.vpcf" } "Modifiers" { "modifier_pulverize" { "IsHidden" "1" "Passive" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_pulverize_attack" "Target" "CASTER" } "Random" { "Chance" "%chance" "OnSuccess" { "ApplyModifier" { "ModifierName" "modifier_pulverize_attack" "Target" "CASTER" } } } } } "modifier_pulverize_attack" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/tauren.lua" "Function" "PulverizeStart" } "AttachEffect" { "EffectName" "particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_totem_buff_egset.vpcf" "EffectAttachType" "attach_customorigin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_totem" "TARGET" "attach_totem" "TARGET" "attach_totem" } } } "OnDestroy" { "RunScript" { "ScriptFile" "units/orc/tauren.lua" "Function" "PulverizeEnd" } } "OnAttackLanded" { "Damage" { "Target" { "Center" "TARGET" "Radius" "%half_damage_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%extra_damage / 2" } // Another damage instance in full radius "Damage" { "Target" { "Center" "TARGET" "Radius" "%full_damage_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%extra_damage / 2" } "FireEffect" { "EffectName" "particles/custom/orc/pulverize.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "01" "%half_damage_radius 1 1" } } "RemoveModifier" { "ModifierName" "modifier_pulverize_attack" "Target" "CASTER" } } } } } //================================================================================= // Ability: Battle Stations // Description: "Causes nearby Peons to run into the Burrow so that they can defend their base." //================================================================================= "orc_battle_stations" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_battle_stations" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "2000" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "2000" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "BattleStations" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "Eject" } } "Modifiers" { // On each peon "modifier_on_order_cancel_battle_stations" { "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "CancelBattleStations" } "RemoveModifier" { "ModifierName" "modifier_on_order_cancel_battle_stations" "Target" "CASTER" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_builder_burrowed" { "IsHidden" "1" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" } } // On the building // BAT: 2, 1.6, 1.2, 0.8 "modifier_battle_stations" { } "modifier_battle_stations1" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "2.0" } } "modifier_battle_stations2" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "1.6" } } "modifier_battle_stations3" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "1.2" } } "modifier_battle_stations4" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "0.8" } } } } // Hidden orders for a single peon to get inside "orc_burrow_peon" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "IsCastableWhileHidden" "1" "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "BurrowPeon" } } } //================================================================================= // Ability: Stand Down // Description: "Causes Peons within the Burrow to return to work." //================================================================================= "orc_stand_down" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_stand_down" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "StandDown" } } } // Orders a single peon to return to work "orc_back_to_work" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_peon" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "OnSpellStart" { "RunScript" { "ScriptFile" "units/orc/burrow.lua" "Function" "BackToWork" } } } "orc_pillage_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pillage" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_berserker_strength_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_berserker_strength" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_troll_regeneration_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_troll_regeneration" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_burning_oil_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_burning_oil" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_lightning_shield_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_lightning_shield" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_bloodlust_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_bloodlust" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_sentry_ward_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_sentry_ward" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_stasis_trap_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_stasis_trap" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_healing_ward_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_healing_ward" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_disenchant_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_disenchant" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_ancestral_spirit_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_ancestral_spirit" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_ensnare_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ensnare" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_envenomed_spears_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_envenomed_spears" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_liquid_fire_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_liquid_fire" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_pulverize_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pulverize" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_reinforced_defenses_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_reinforced_defenses" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Heroes "orc_train_blademaster1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_juggernaut" } } } "orc_train_far_seer1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_disruptor" } } } "orc_train_tauren_chieftain1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_elder_titan" } } } "orc_train_shadow_hunter1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // Passive version indicates that the hero has already been trained, stopping the next rank of that hero "orc_train_blademaster_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_far_seer_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_tauren_chieftain_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_shadow_hunter_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Version 2 costs 450g and 100lumber and requires to have upgraded the city level 2 "orc_train_blademaster2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_juggernaut" } } } "orc_train_far_seer2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_disruptor" } } } "orc_train_tauren_chieftain2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_elder_titan" } } } "orc_train_shadow_hunter2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // Version 3 costs the same but requires City Hall level 3 "orc_train_blademaster3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_juggernaut" } } } "orc_train_far_seer3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_disruptor" } } } "orc_train_tauren_chieftain3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_elder_titan" } } } "orc_train_shadow_hunter3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // Disabled Versions //Ranks 2 "orc_train_blademaster2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_far_seer2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_tauren_chieftain2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_shadow_hunter2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Ranks 3 "orc_train_blademaster3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_far_seer3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_tauren_chieftain3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "orc_train_shadow_hunter3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Revival, one ability for each level to scale the gold and channel time (volvo pls) // 180 30 "orc_train_blademaster_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 225 35 "orc_train_blademaster_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 270 40 "orc_train_blademaster_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 315 45 "orc_train_blademaster_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 360 50 "orc_train_blademaster_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 405 60 "orc_train_blademaster_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 450 70 "orc_train_blademaster_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 495 80 "orc_train_blademaster_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 540 90 "orc_train_blademaster_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 585 100 "orc_train_blademaster_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_blademaster" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_juggernaut" } } } // 180 30 "orc_train_far_seer_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 225 35 "orc_train_far_seer_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 270 40 "orc_train_far_seer_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 315 45 "orc_train_far_seer_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 360 50 "orc_train_far_seer_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 405 60 "orc_train_far_seer_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 450 70 "orc_train_far_seer_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 495 80 "orc_train_far_seer_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 540 90 "orc_train_far_seer_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 585 100 "orc_train_far_seer_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_far_seer" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_disruptor" } } } // 180 30 "orc_train_tauren_chieftain_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 225 35 "orc_train_tauren_chieftain_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 270 40 "orc_train_tauren_chieftain_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 315 45 "orc_train_tauren_chieftain_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 360 50 "orc_train_tauren_chieftain_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 405 60 "orc_train_tauren_chieftain_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 450 70 "orc_train_tauren_chieftain_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 495 80 "orc_train_tauren_chieftain_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 540 90 "orc_train_tauren_chieftain_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 585 100 "orc_train_tauren_chieftain_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren_chieftain" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_elder_titan" } } } // 180 30 "orc_train_shadow_hunter_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 225 35 "orc_train_shadow_hunter_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 270 40 "orc_train_shadow_hunter_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 315 45 "orc_train_shadow_hunter_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 360 50 "orc_train_shadow_hunter_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 405 60 "orc_train_shadow_hunter_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 450 70 "orc_train_shadow_hunter_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 495 80 "orc_train_shadow_hunter_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 540 90 "orc_train_shadow_hunter_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // 585 100 "orc_train_shadow_hunter_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shadow_hunter" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_shadow_shaman" } } } // Affects all ground units (except for builders, which have their inventories filled with items) "orc_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MUTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Enable" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } "OnDeath" { // Item drops when unit is killed "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "BackpackDrop" } } } } } "orc_backpack_disabled" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack_disabled" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Disable" } } } } } "orc_research_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "DisableResearch" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_backpack_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Great Hall -> Stronghold "orc_train_stronghold" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_stronghold" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "315" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "190" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "orc_stronghold" } } } // Requires Altar "orc_train_fortress_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_fortress" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Stronghold -> Fortress "orc_train_fortress" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_fortress" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "325" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "325" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "190" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "orc_fortress" } } } // Orc Buildings // orc_barracks - No requirements // orc_beastiary - Requires orc_stronghold // orc_spirit_lodge - Requires orc_stronghold // orc_watch_tower - Requires orc_war_mill // orc_tauren_totem - Requires orc_fortress and orc_war_mill // Item Abilities // orc_burrow - No requirements // orc_great_hall - No requirements // orc_stronghold - Upgrade // orc_fortress - Upgrade, requires orc_altar_of_storms // orc_altar_of_storms - No requirements // orc_vodoo_lounge - No requirements // orc_war_mill - No requirements "orc_build_barracks" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_barracks" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityCastPoint" "0" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "UnitName" "orc_barracks" "AbilityCooldown" "0" "AbilityGoldCost" "180" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "orc_build_beastiary_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_beastiary" "MaxLevel" "0" } "orc_build_beastiary" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_beastiary" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ModelRotation" "45.0" "UnitName" "orc_beastiary" "AbilityCooldown" "0" "AbilityGoldCost" "145" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "145" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "140" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "orc_build_spirit_lodge_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_spirit_lodge" "MaxLevel" "0" } "orc_build_spirit_lodge" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_spirit_lodge" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "UnitName" "orc_spirit_lodge" "AbilityCooldown" "0" "AbilityGoldCost" "150" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "orc_build_watch_tower_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_watch_tower" "MaxLevel" "0" } "orc_build_watch_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_watch_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ModelRotation" "135.0" "UnitName" "orc_watch_tower" "AbilityCooldown" "0" "AbilityGoldCost" "110" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "110" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "80" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "orc_build_tauren_totem_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_tauren_totem" "MaxLevel" "0" } "orc_build_tauren_totem" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_build_tauren_totem" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "BuilderInside" "1" //bool "ModelRotation" "45.0" "UnitName" "orc_tauren_totem" "AbilityCooldown" "0" "AbilityGoldCost" "135" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "155" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "orc_gather" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_gather" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_TREE | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "CastFilterRejectCaster" "1" // Gatherer Key Values "LumberGainInterval" "1" "LumberPerInterval" "1" "DamageTree" "1" "GoldGainInterval" "0.5" "GoldPerInterval" "10" "GoldMineInside" "1" "DamageMine" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "gold_capacity" "10" } "02" { "var_type" "FIELD_INTEGER" "lumber_capacity" "10" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } "RunScript" { "ScriptFile" "units/repair.lua" "Function" "Repair" } } } "orc_return_resources" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_return_resources" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" //Fake Toggle // When the ability is active, it means there are resources left to return (else it will be hidden) "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "ReturnResources" } } } // • Great Hall / Stronghold / Fortress "orc_research_pillage" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pillage" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_pillage_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pillage" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Barracks "orc_research_berserker_strength" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_berserker_strength" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_berserker_strength_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_berserker_strength" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_berserker_upgrade" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_berserker_upgrade" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_berserker_upgrade_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_berserker_upgrade" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_troll_regeneration" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_troll_regeneration" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "35" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_troll_regeneration_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_troll_regeneration" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_burning_oil" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_burning_oil" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_burning_oil_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_burning_oil" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Spirit Lodge "orc_research_shaman_training1" //lightning shield { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_shaman_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_shaman_training2" //bloodlust { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_shaman_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_witch_doctor_training1" //stasis trap { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_witch_doctor_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_witch_doctor_training2" //healing ward { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_witch_doctor_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_spirit_walker_training1" //disenchant { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_spirit_walker_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_spirit_walker_training2" //ancestral spirit { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_spirit_walker_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Beastiary "orc_research_ensnare" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ensnare" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_ensnare_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ensnare" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_improved_war_drums" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_improved_war_drums" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } // Apply the level update on all current kodo beasts "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "UpgradeWarDrums" } } } "orc_research_improved_war_drums_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_improved_war_drums" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_envenomed_spears" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_envenomed_spears" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_envenomed_spears_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_envenomed_spears" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_liquid_fire" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_liquid_fire" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "125" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_liquid_fire_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_liquid_fire" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Tauren Totem "orc_research_pulverize" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pulverize" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "250" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_pulverize_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_pulverize" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • War Mill "orc_research_melee_weapons1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_melee_weapons1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_melee_weapons2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_melee_weapons2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_melee_weapons3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_melee_weapons3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_melee_weapons3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_unit_armor1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_unit_armor1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_unit_armor2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "225" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "225" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_unit_armor2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_unit_armor3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "300" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "300" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_unit_armor3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_unit_armor3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_ranged_weapons1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_ranged_weapons1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_ranged_weapons2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_ranged_weapons2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_ranged_weapons3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "300" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_ranged_weapons3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_ranged_weapons3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_spiked_barricades1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "25" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "25" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_spiked_barricades1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_spiked_barricades2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "175" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_spiked_barricades2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_spiked_barricades3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_spiked_barricades3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spiked_barricades3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_research_reinforced_defenses" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_reinforced_defenses" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "orc_research_reinforced_defenses_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_reinforced_defenses" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_peon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_peon" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "15.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_peon" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_grunt" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_grunt" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_grunt" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_troll_headhunter" //berserker takes 2 more seconds { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_troll_headhunter" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "135" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "20.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "SpawnUnit" "UnitName" "orc_troll_headhunter" } } } "orc_train_troll_headhunter_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_troll_headhunter" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_demolisher" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_demolisher" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "220" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "220" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_demolisher" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_demolisher_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_demolisher" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_shaman" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_shaman" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "135" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "135" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_shaman" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_troll_witch_doctor" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_troll_witch_doctor" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "145" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "145" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_troll_witch_doctor" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_spirit_walker" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_spirit_walker" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "195" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "38.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "195" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "35" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_spirit_walker" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_raider" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_raider" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "180" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "40" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_raider" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_kodo_beast" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_kodo_beast" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "255" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "255" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "60" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_kodo_beast" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyWarDrumsUpgrade" } } } } } "orc_train_kodo_beast_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_kodo_beast" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_wind_rider" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_wind_rider" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "265" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "265" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "40" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_wind_rider" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_wind_rider_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_wind_rider" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_troll_batrider" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_troll_batrider" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "160" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "160" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "40" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_troll_batrider" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "orc_train_troll_batrider_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_troll_batrider" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "orc_train_tauren" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_train_tauren" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "280" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "44.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "280" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "80" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "orc_tauren" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } //berserker_strength //troll_regeneration //reinforced_defenses //shaman_training1/2 //witch_doctor_training1/2 //spirit_walker_training1/2 //steel_melee_weapons1/2/3 //steel_ranged_weapons1/2/3 //steel_unit_armor1/2/3 //spiked_barricades1/2/3 // Improves the fighting capabilities of Grunts with a 100 hit point increase, and 3 bonus attack damage. "orc_berserker_strength" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_berserker_strength" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "3" } } "Modifiers" { "modifier_berserker_strength" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" } } } } "orc_troll_regeneration" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_troll_regeneration" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health_regen" "1.25" } } "Modifiers" { "modifier_troll_regeneration" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%bonus_health_regen" } } } } // Upgrades Burrows and Watch Towers so that they have Fortified armor. "orc_reinforced_defenses" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_reinforced_defenses" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "Modifiers" { "modifier_reinforced_defenses" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ReinforcedDefenses" } } } } } "orc_shaman_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_shaman_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } "orc_shaman_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_shaman_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_shaman_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } "orc_witch_doctor_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_witch_doctor_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } "orc_witch_doctor_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_witch_doctor_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_witch_doctor_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } "orc_spirit_walker_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "150" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "40" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "60" } } "Modifiers" { "modifier_spirit_walker_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } "orc_spirit_walker_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "orc_research_spirit_walker_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "300" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "80" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "120" } } "Modifiers" { "modifier_spirit_walker_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "5" //Set the creature to this level } } "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } // Grunts get 2.5 // Raiders get 3 // Taurens get 4 "orc_melee_weapons1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_melee_weapons1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "grunt_damage" "2 5 7" } "02" { "var_type" "FIELD_INTEGER" "raider_damage" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "tauren_damage" "4 6 12" } } "Modifiers" { "modifier_melee_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_grunt_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%grunt_damage" } } "modifier_raider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%raider_damage" } } "modifier_tauren_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%tauren_damage" } } } } "orc_melee_weapons2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_melee_weapons2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "grunt_damage" "2 5 7" } "02" { "var_type" "FIELD_INTEGER" "raider_damage" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "tauren_damage" "4 6 12" } } "Modifiers" { "modifier_melee_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_grunt_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%grunt_damage" } } "modifier_raider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%raider_damage" } } "modifier_tauren_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%tauren_damage" } } } } "orc_melee_weapons3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_melee_weapons3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "1 3 5" } "02" { "var_type" "FIELD_INTEGER" "raider_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "tauren_damage" "10 20 30" } } "Modifiers" { "modifier_melee_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_raider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%raider_damage" } } "modifier_tauren_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%tauren_damage" } } } } // Grunts, Raiders, Troll Batriders, Tauren, Troll Headhunters, Troll Berserkers, Wind Riders, and Demolishers 2/4/6 "orc_unit_armor1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_unit_armor1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unit_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "orc_unit_armor2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_unit_armor2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unit_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "orc_unit_armor3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_unit_armor3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unit_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } // Troll Headhunters, Troll Berserkers, Wind Riders get 3 // Troll Batriders 2 // Demolishers 9 "orc_ranged_weapons1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_ranged_weapons1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 9" } "02" { "var_type" "FIELD_INTEGER" "batrider_damage" "2 4 6" } "03" { "var_type" "FIELD_INTEGER" "demolisher_damage" "9 18 27" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_batrider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%batrider_damage" } } "modifier_demolisher_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%demolisher_damage" } } } } "orc_ranged_weapons2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_ranged_weapons2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 9" } "02" { "var_type" "FIELD_INTEGER" "batrider_damage" "2 4 6" } "03" { "var_type" "FIELD_INTEGER" "demolisher_damage" "9 18 27" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_batrider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%batrider_damage" } } "modifier_demolisher_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%demolisher_damage" } } } } "orc_ranged_weapons3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_ranged_weapons3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 10" } "03" { "var_type" "FIELD_INTEGER" "batrider_damage" "2 4 6" } "04" { "var_type" "FIELD_INTEGER" "demolisher_damage" "6 12 18" } } "Modifiers" { "modifier_ranged_weapons" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_batrider_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%batrider_damage" } } "modifier_demolisher_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%demolisher_damage" } } } } "orc_spiked_barricades1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_spiked_barricades1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_attackers" "4 10 16" } } "Modifiers" { "modifier_spiked_barricades" { "Passive" "1" "IsHidden" "0" "OnAttacked" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "SpikedBarricadeDamage" } } "OnCreated" { "AttachEffect" { "EffectName" "particles/items_fx/blademail_b.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } } } } "orc_spiked_barricades2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_spiked_barricades2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_attackers" "4 10 16" } } "Modifiers" { "modifier_spiked_barricades" { "Passive" "1" "IsHidden" "0" "OnAttacked" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "SpikedBarricadeDamage" } } "OnCreated" { "AttachEffect" { "EffectName" "particles/items_fx/blademail_b.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } } } } "orc_spiked_barricades3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "orc_research_spiked_barricades3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_to_attackers" "4 10 16" } } "Modifiers" { "modifier_spiked_barricades" { "Passive" "1" "IsHidden" "0" "OnAttacked" { "RunScript" { "ScriptFile" "units/orc/orc_upgrades.lua" "Function" "SpikedBarricadeDamage" } } "OnCreated" { "AttachEffect" { "EffectName" "particles/items_fx/blademail_b.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } } } } //================================================================================= // Ability: Cannibalize // Description: "Consumes a nearby corpse to heal hit points per second." //================================================================================= "undead_cannibalize" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_cannibalize" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityChannelTime" "33" "AbilityCastRange" "50" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilityMultiOrder" "1" "RequiresCorpsesAround" "800" "RequiresHealthDeficit" "self" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "33" } "02" { "var_type" "FIELD_INTEGER" "health_per_second" "10" //TODO: 15 on abominations } "03" { "var_type" "FIELD_INTEGER" "search_radius" "800" } // The unit'll find the nearest corpse in this radius. // According to classic.battle.net, they'll also eat corpses from Meat Wagons. The most injured units will be prioritized should you order a group to cannibalize. } "precache" { "particle" "particles/items2_fx/soul_ring_blood.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/ghoul.lua" "Function" "CannibalizeStart" } } "Modifiers" { "modifier_cannibalize" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%health_per_second" } } "modifier_cannibalize_properties" { "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "units/undead/ghoul.lua" "Function" "CannibalizeEnd" } } "Properties" { "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" } } } } //================================================================================= // Ability: Ghoul Frenzy // Description: "Increases the attack rate of Ghouls by %, and increases their movement speed." //================================================================================= "undead_ghoul_frenzy" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_ghoul_frenzy" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "base_attack_time" "1.05" } "02" { "var_type" "FIELD_INTEGER" "movement_speed_bonus" "80" } } "Modifiers" { "modifier_ghoul_frenzy" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%movement_speed_bonus" "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "%base_attack_time" } } } } //================================================================================= // Ability: Web // Description: "Binds a target enemy air unit in webbing, forcing it to the ground. Webbed units can be hit as though they were land units. |nLasts seconds." //================================================================================= "undead_web" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_web" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "air" "AbilityCastRange" "400" "AbilityCastPoint" "0" "AbilityCooldown" "12" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "12" } } "precache" { //target particle "particle" "particles/econ/courier/courier_trail_hw_2012/courier_trail_hw_2012_webs.vpcf" //caster projectile particle "particle" "particles/units/heroes/hero_broodmother/broodmother_spin_web_cast.vpcf" } "OnSpellStart" { "RunScript" { "Target" "TARGET" "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web" } "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "Interrupt" } "FireEffect" { "EffectName" "particles/units/heroes/hero_broodmother/broodmother_spin_web_cast.vpcf" "Target" "CASTER" "EffectAttachType" "attach_hitloc" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "Modifiers" { "modifier_web" { "IsDebuff" "1" "EffectName" "particles/econ/courier/courier_trail_hw_2012/courier_trail_hw_2012_webs.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web_Destroy" } "RemoveModifier" { "ModifierName" "modifier_truesight" "Target" "TARGET" } } "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_web_autocast" { "IsHidden" "1" "Passive" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Web_AutoCast" } } } } } //================================================================================= // Ability: Burrow // Description: "The Crypt Fiend digs into the ground, becomes invisible, and gains a regeneration rate of hit points per second. |nThe Crypt Fiend cannot attack while burrowed." //================================================================================= "undead_burrow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "crypt_lord_beetle_burrow" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "regeneration" "5" } } "precache" { // set models "model" "models/heroes/nerubian_assassin/mound.vmdl" "model_folder" "models/heroes/weaver" // burrow particles "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_burrow_exit.vpcf" "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_burrow.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "BurrowStart" } } "Modifiers" { "modifier_burrowing" //transition { "IsHidden" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/crypt_fiend.lua" "Function" "Burrow" } } } "modifier_crypt_fiend_burrow" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%regeneration" "MODIFIER_PROPERTY_DISABLE_TURNING" "1" } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } } } //================================================================================= // Ability: Stone Form // Description: "Transforms the Gargoyle into a statue that is immune to spells, gains additional armor and has a regeneration rate of hit points per second. |nThe Gargoyle cannot attack in this form." //================================================================================= "undead_stone_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_stone_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "regeneration" "8" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "12" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_visage.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/gargoyle.lua" "Function" "StoneForm" } } "Modifiers" { "modifier_stone_form_order" { "IsHidden" "1" "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_stone_form_transform" { "IsHidden" "1" "Duration" "0.7" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/undead/gargoyle.lua" "Function" "StoneFormStart" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_stone_form" "Target" "TARGET" } } } "modifier_stone_form_transform_end" { "IsHidden" "1" "Duration" "0.5" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/gargoyle.lua" "Function" "StoneFormEnd" } } } "modifier_stone_form" { "OnCreated" { "FireSound" { "EffectName" "Visage_Familar.StoneForm.Cast" "Target" "TARGET" } } "StatusEffectName" "particles/status_fx/status_effect_medusa_stone_gaze.vpcf" "StatusEffectPriority" "5" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%regeneration" "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "1" "MODIFIER_PROPERTY_DISABLE_TURNING" "1" } } } } //================================================================================= // Ability: Disease Cloud // Description: "Infects nearby enemy living units with Disease Cloud. Disease Cloud deals damage per second. |nLasts seconds." //================================================================================= "undead_disease_cloud" { "BaseClass" "ability_lua" "ScriptFile" "units/undead/abomination.lua" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "%radius" "MaxLevel" "1" "AbilityTextureName" "pudge_rot" "TargetsAllowed" "ground,organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_FLOAT" "damage_per_second" "1" } "03" { "var_type" "FIELD_FLOAT" "debuff_duration" "120" } } } //================================================================================= // Ability: Disease Cloud // Description: "Infects nearby enemy living units with Disease Cloud. Disease Cloud deals damage per second. |nLasts seconds." //================================================================================= "undead_meat_wagon_disease_cloud" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "pudge_rot" "TargetsAllowed" "ground,organic" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "10" } } "Modifiers" { "modifier_disease_orb" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "UnlockDiseaseCloud" } } } } } //================================================================================= // Ability: Get Corpse // Description: "Picks up a nearby corpse for later use." //================================================================================= "undead_get_corpse" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_get_corpse" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "600" //Range from a corpse "AbilityCastPoint" "0" "AbilityCooldown" "0.5" "AbilityManaCost" "0" "RequiresCorpsesAround" "600" "CorpseFlag" "NotMeatWagon" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "search_radius" "600" } "02" { "var_type" "FIELD_INTEGER" "max_corpses" "8" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "GetCorpse" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "DropAllCorpses" } } "Modifiers" { "modifier_corpses" { "Passive" "1" } "modifier_get_corpse_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "GetCorpse_Autocast" } } } } } //================================================================================= // Ability: Drop Corpse // Description: "Drops all corpses for immediate use." //================================================================================= "undead_drop_corpse" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_drop_corpse" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "DropCorpse" } } "Modifiers" { "modifier_dropping_corpses" { "IsHidden" "1" "OnOrder" { "RemoveModifier" { "ModifierName" "modifier_dropping_corpses" "Target" "CASTER" } } } } } //================================================================================= // Ability: Exhume Corpses // Description: "Gives Meat Wagons the ability to generate corpses." //================================================================================= "undead_exhume_corpses" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_exhume_corpses" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "interval" "15" } } "Modifiers" { "modifier_exhume_corpse" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "%interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/meat_wagon.lua" "Function" "ExhumeCorpse" } } } } } //================================================================================= // Ability: Raise Dead // Description: "Raises skeletons from a corpse." //================================================================================= "undead_raise_dead" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_raise_dead" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "AbilityCastRange" "900 900" "AbilityCastPoint" "0 0" "AbilityCooldown" "8 8" "AbilityManaCost" "75 75" "RequiresCorpsesAround" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "40 40" } "02" { "var_type" "FIELD_INTEGER" "radius" "900 900" } // It raises 2 melee skeletons at level one then 1 melee skeleton, 1 ranged skeleton at level two. // Can be autocasted to automatically raise corpses in the 600 radius. } "precache" { "model" "models/creeps/neutral_creeps/n_creep_troll_skeleton/n_creep_skeleton_melee.vmdl" "model" "models/items/wraith_king/regalia_of_the_bonelord_cape.vmdl" "model" "models/items/pugna/ashborn_horns/ashborn_horns.vmdl" "model_folder" "models/heroes/pugna" // particle precaches "particle" "particles/neutral_fx/skeleton_spawn.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_base_attack.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/necromancer.lua" "Function" "RaiseDead" } } "Modifiers" { "modifier_raise_dead_autocast" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/necromancer.lua" "Function" "RaiseDead_AutoCast" } } } } } //================================================================================= // Ability: Unholy Frenzy // Description: "Increases the attack rate of a target unit by %, but drains hit points per second. |nLasts seconds." //================================================================================= "undead_unholy_frenzy" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_unholy_frenzy" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "3" "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "45" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_increase" "75" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "4" } } "precache" { "soundfile" "sounds/items/mask_of_madness.vsnd" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_unholy_frenzy" "Target" "TARGET" "Duration" "%duration" } "FireSound" { "EffectName" "DOTA_Item.MaskOfMadness.Activate" "Target" "TARGET" } } "Modifiers" { "modifier_unholy_frenzy" { "EffectName" "particles/items_fx/armlet.vpcf" "EffectAttachType" "follow_origin" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_increase" } "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Damage" "%damage_per_second" "Type" "DAMAGE_TYPE_PURE" } } } } } //================================================================================= // Ability: Cripple // Description: "Reduces movement speed by %, attack rate by %, and damage by % of a target enemy unit. |nLasts seconds." //================================================================================= "undead_cripple" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_cripple" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_4" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0.3" "AbilityCooldown" "10" "AbilityManaCost" "175" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "creep_duration" "60" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "10" } "03" { "var_type" "FIELD_INTEGER" "attack_speed_reduction" "-50" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_reduction" "-75" } "05" { "var_type" "FIELD_INTEGER" "damage_reduction" "-50" } } "precache" { "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "soundfile" "sounds/items/rod_of_atos.vsnd" } "OnSpellStart" { "FireSound" { "EffectName" "DOTA_Item.RodOfAtos.Activate" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_cripple" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%creep_duration" } } "Modifiers" { "modifier_cripple" { "IsPurgable" "1" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_reduction" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT_SECONDARY" "%attack_speed_reduction" } } } } //================================================================================= // Ability: Skeletal Longevity // Description: "Increases the duration of raised Skeleton Warriors and Skeletal Mages by seconds." //================================================================================= "undead_skeletal_longevity" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_longevity" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_duration" "15" } } "Modifiers" { "modifier_skeletal_longevity" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "SkeletalLongevity" } } } } } //================================================================================= // Ability: Skeletal Mastery // Description: "Causes one of the two skeletons created by Raise Dead to be a Skeletal Mage." //================================================================================= "undead_skeletal_mastery" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_skeletal_mastery" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // This basically upgrade the previous Raise Dead spell to level two. } //================================================================================= // Ability: Curse // Description: "Curses a target enemy unit, causing it to have a % chance to miss on an attack. |nLasts seconds." //================================================================================= "undead_curse" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_curse" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1" "TargetsAllowed" "organic" "AbilityCastRange" "700" "AbilityCastPoint" "0.1" "AbilityCooldown" "1" "AbilityManaCost" "40" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "unit_duration" "120" } "02" { "var_type" "FIELD_INTEGER" "hero_duration" "60" } "03" { "var_type" "FIELD_INTEGER" "miss_chance" "33" } } "precache" { // target particle "particle" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_meld_focal_overhead.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_undead_curse" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%hero_duration" } "ApplyModifier" { "ModifierName" "modifier_undead_curse" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%unit_duration" } } "Modifiers" { "modifier_undead_curse" { "EffectName" "particles/econ/items/templar_assassin/templar_assassin_focal/templar_meld_focal_overhead.vpcf" "EffectAttachType" "follow_overhead" "IsPurgable" "1" "TextureName" "undead_curse" "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_chance" } } "modifier_undead_curse_autocast" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "CurseAutocast" } } } } } //================================================================================= // Ability: Anti-magic Shell // Description: "Creates a barrier that stops points of spell damage from affecting a target unit. |nLasts seconds." //================================================================================= "undead_anti_magic_shell" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_anti_magic_shell" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "500" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "75" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "90" } "02" { "var_type" "FIELD_INTEGER" "spell_absorption" "300" } } "precache" { "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_oldbase.vpcf" } "OnSpellStart" { "RemoveModifier" { "ModifierName" "modifier_anti_magic_shell" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_anti_magic_shell" "Target" "TARGET" "Duration" "%duration" } "RunScript" { "Target" "TARGET" "ScriptFile" "units/undead/banshee.lua" "Function" "ResetAntiMagicShell" } } "Modifiers" { "modifier_anti_magic_shell" { "EffectName" "particles/units/heroes/hero_medusa/medusa_mana_shield_oldbase.vpcf" "EffectAttachType" "follow_origin" "IsPurgable" "1" } } } //================================================================================= // Ability: Possession // Description: "Stuns a target unit and the Banshee for seconds, during which the Banshee takes extra damage from attacks. She then displaces the soul of the enemy, giving you permanent control of it, but destroying the caster's body. |nPossession cannot be used on flying units, Heroes, or creeps above level ." //================================================================================= "undead_possession" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_possession" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "TargetsAllowed" "ground,organic" "MaxCreepLevel" "5" "AbilityChannelTime" "4" "AbilityCastRange" "350" "AbilityCastPoint" "0.3" "AbilityCooldown" "0" "AbilityManaCost" "250" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AnimationPlaybackRate" "0.1" "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_model.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_excorcism_attack_impact_death.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spiritsiphon.vpcf" "particle" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_increase_while_channeling" "66" } "02" { "var_type" "FIELD_INTEGER" "channel_range" "350" } "03" { "var_type" "FIELD_INTEGER" "duration" "4" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "PossessionStart" } } "OnChannelInterrupted" { "RemoveModifier" { "ModifierName" "modifier_possession_target" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_possession_caster" "Target" "CASTER" } } "OnChannelSucceeded" { "RunScript" { "ScriptFile" "units/undead/banshee.lua" "Function" "PossessionEnd" } } "Modifiers" { "modifier_possession_target" { "EffectName" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" "EffectAttachType" "follow_origin" "OverrideAnimation" "ACT_DOTA_DISABLED" "TextureName" "undead_possession" "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_possession_caster" { "EffectName" "particles/units/heroes/hero_pugna/pugna_ward_orientedrunes.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_increase_while_channeling" } "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } } } //================================================================================= // Ability: Freezing Breath // Description: "When used on a building, temporarily stops all building activities. |nLasts seconds." //================================================================================= "undead_freezing_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_freezing_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "5" } "02" { "var_type" "FIELD_INTEGER" "radius" "100" } "03" { "var_type" "FIELD_FLOAT" "movement_speed_reduction" "-25" } } "precache" { // unit freeze particles "particle" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" // building freeze particle "particle" "particles/units/heroes/hero_winter_wyvern/wyvern_cold_embrace_buff_model.vpcf" } "Modifiers" { "modifier_freezing_breath_passive" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/frost_wyrm.lua" "Function" "FreezingBreathUnlock" } } "OnAttackLanded" { "RunScript" { "ScriptFile" "units/undead/frost_wyrm.lua" "Function" "FreezingAttack" } } } "modifier_frozen" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/units/heroes/hero_winter_wyvern/wyvern_cold_embrace_buff_model.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/undead/frost_wyrm.lua" "Function" "Freeze" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/frost_wyrm.lua" "Function" "UnFreeze" } } } } } //================================================================================= // Ability: Frost Breath - HIDDEN // 10 second slow splash, innate of frost wyrms and other blue dragons //================================================================================= "undead_frost_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_frost_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "10" } "02" { "var_type" "FIELD_INTEGER" "radius" "100" } "03" { "var_type" "FIELD_FLOAT" "movement_speed_reduction" "-25" } } "precache" { // unit freeze particles "particle" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" } "Modifiers" { "modifier_frost_breath_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_freezing_attack" "Duration" "%duration" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } } "modifier_freezing_attack" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" } } } } //================================================================================= // Ability: True Sight // Description: "Reveals nearby invisible units." //================================================================================= "undead_true_sight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_true_sight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityCastRange" "900" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_bane/bane_slime_trail_b.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } } "Modifiers" { "modifier_shade" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/units/heroes/hero_bane/bane_slime_trail_b.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_true_sight_aura" "Target" "TARGET" } } } } } //================================================================================= // Ability: Frost Attack // Description: "Adds a cold effect to this unit's attacks that slows enemy units' movement speed." //================================================================================= "undead_frost_attack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_frost_attack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "5" } "02" { "var_type" "FIELD_FLOAT" "movement_speed_reduction" "-50" } } "precache" { "particle" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "particle" "particles/status_fx/status_effect_frost_lich.vpcf" } "Modifiers" { "modifier_frost_attack_passive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_frost_attack" "Duration" "%duration" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } } "modifier_frost_attack" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/econ/courier/courier_roshan_frost/courier_roshan_frost_steam.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_reduction" } } } } //================================================================================= // Ability: Essence of Blight // Description: "Restores hit points to nearby friendly units." //================================================================================= "undead_essence_of_blight" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_replenish_health" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0" //1 second backswing "AbilityCooldown" "1" "AbilityManaCost" "10" //2 min used, 10 max "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_restore" "10" } "02" { "var_type" "FIELD_INTEGER" "max_unit" "6" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "Heal" } } "Modifiers" { "modifier_essence_of_blight" { "OnCreated" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "EssenceOfBlight" } } } "modifier_essence_of_blight_autocast" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "HealAutocast" } } } } } //================================================================================= // Ability: Spirit Touch // Description: "Restores mana to nearby friendly units." //================================================================================= "undead_spirit_touch" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_replenish_mana" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetsAllowed" "organic" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "1" "AbilityManaCost" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_restore" "3" } "02" { "var_type" "FIELD_INTEGER" "max_unit" "6" } } "precache" { "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_shatter.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_essence_effect.vpcf" "particle" "particles/items_fx/healing_clarity.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "Mana" } } "Modifiers" { "modifier_spirit_touch" { "OnCreated" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "SpiritTouch" } } } "modifier_spirit_touch_autocast" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "ManaAutocast" } } } } } //================================================================================= // Ability: Destroyer Form //================================================================================= "undead_destroyer_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_destroyer_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityMultiOrder" "1" "precache" { "model_folder" "models/heroes/obsidian_destroyer" "particle" "particles/siege_fx/siege_bad_death_01.vpcf" // destroyer projectile "particle" "particles/units/heroes/hero_bane/bane_projectile.vpcf" } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_destroyer_morph" } } "Modifiers" { "modifier_destroyer_morph" { "IsHidden" "1" "Duration" "1.1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "DestroyerMorph" } } } } } //================================================================================= // Ability: Absorb Mana // Description: "Takes all mana from one of your units and gives it to the Destroyer." //================================================================================= "undead_absorb_mana" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_absorb_mana" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "CastFilterRejectCaster" "1" "RequiresTargetMana" "1" "RequiresManaDeficit" "self" "AbilityCastRange" "900" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_base_attack.vpcf" "soundfile" "sounds/weapons/hero/terrorblade/sunder_target.vsnd" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "AbsorbMana" } "FireSound" { "EffectName" "Hero_Terrorblade.Sunder.Target" "Target" "TARGET" } } } //================================================================================= // Ability: Devour Magic // Description: "Consumes all magical buffs from units in an area. Each unit that is devoured of magic gives the Destroyer hit points and mana. |n|cffffcc00Deals damage to summoned units.|r" //================================================================================= "undead_devour_magic" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_devour_magic" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_2" "AbilityCastRange" "600" "AbilityCastPoint" "0" "AbilityCooldown" "7" "AbilityManaCost" "0" "AOERadius" "200" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "health_restore" "50" } "03" { "var_type" "FIELD_INTEGER" "mana_restore" "75" } // The restoration is per UNIT AFFECTED, not per BUFF DEVOURED. "04" { "var_type" "FIELD_INTEGER" "summoned_unit_damage" "180" } // This IGNORES friendly buffs. } "precache" { // target particle "particle" "particles/generic_gameplay/generic_purge.vpcf" // caster particle "particle" "particles/econ/items/antimage/antimage_weapon_basher_ti5/antimage_manavoid_ti_5.vpcf" // point particle "particle" "particles/units/heroes/hero_dark_seer/dark_seer_vacuum_shockwave.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_anti_mage.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "DevourMagic" "Target" "POINT" } } } //================================================================================= // Ability: Orb of Annihilation // Description: "Adds bonus damage to the Destroyer's attack and causes his attacks to do area of effect damage." //================================================================================= "undead_orb_of_annihilation" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_orb_of_annihilation" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" //Must be able to cast on buildings, but not on other magic immune units "AbilityCastRange" "450" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "25" "AOERadius" "150" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "150" } "02" { "var_type" "FIELD_INTEGER" "damage_bonus" "20" } } "precache" { // orb projectile "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_arcane_orb.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_obsidian_destroyer.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "OrbManualCast" } } "Modifiers" { "modifier_magic_orb" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "mechanics/abilities.lua" "Function" "ToggleOnAutocast" } } "OnAttackStart" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "OrbStart" } } "OnAttack" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "OrbFire" } } "OnAttackLanded" { "RunScript" { "ScriptFile" "units/undead/destroyer.lua" "Function" "OrbDamage" } } } } } //================================================================================= // Ability: Unsummon Building // Description: "Unsummons your building to regain % of the spent resources." // The Acolyte casts it on a building and that building gets its health reduced slowly over time until it's destroyed and the resources are received. //================================================================================= "undead_unsummon_building" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_unsummon_building" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityCastRange" "300" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "accumulation_step" "50" } // The amount of resources you're supposed to regain has to be equal to or larger than 50 in order for you to regain it. "02" { "var_type" "FIELD_INTEGER" "salvage_cost_ratio" "0.5" } } "precache" { "particle" "particles/base_destruction_fx/gbm_lvl3_glow.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "unsummon" } } } //================================================================================= // Ability: Sacrifice // Description: "Target an Acolyte to sacrifice it and turn it into a Shade. Shades are invisible spirits that can see invisible units. |nShades cannot attack." //================================================================================= "undead_train_shade" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_sacrifice" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "0" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" "AbilityChannelTime" "15" "OnSpellStart" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "Sacrifice" } } "OnChannelSucceeded" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "CreateShade" } } "Modifiers" { "modifier_sacrificing" { "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "StopSacrifice" } } } } } //================================================================================= // Ability: Sacrifice // Description: "Target a Sacrificial Pit to sacrifice the Acolyte and turn it into a Shade. Shades are invisible spirits that can see invisible units. |nShades cannot attack." //================================================================================= "undead_sacrifice_acolyte" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_sacrifice" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "0" "AbilityCastPoint" "0" "AbilityCooldown" "0" "AbilityManaCost" "0" // The unit will walk towards the targeted Sacrificial Pit and the Shade creation begins. } "undead_graveyard_create_corpses" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_graveyard_create_corpses" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "15" "OnIntervalThink" { "RunScript" { "ScriptFile" "units/undead/graveyard.lua" "Function" "ExhumeCorpse" } } } } } "undead_cannibalize_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_cannibalize" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_ghoul_frenzy_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_ghoul_frenzy" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_stone_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_stone_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_burrow_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_burrow" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_web_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_web" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_unholy_frenzy_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_unholy_frenzy" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_cripple_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_cripple" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_anti_magic_shell_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_anti_magic_shell" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_possession_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_possession" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_skeletal_longevity_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_longevity" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_duration" "15" } } } "undead_skeletal_mastery_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_mastery" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_disease_cloud_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_disease_cloud" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_meat_wagon_disease_cloud_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_disease_cloud" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_destroyer_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_destroyer_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_exhume_corpses_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_exhume_corpses" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_freezing_breath_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_freezing_breath" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Heroes "undead_train_death_knight1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_abaddon" } } } "undead_train_dread_lord1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_night_stalker" } } } "undead_train_lich1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_lich" } } } "undead_train_crypt_lord1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "0" // First hero is free "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "0" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // Passive version indicates that the hero has already been trained, stopping the next rank of that hero "undead_train_death_knight_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_dread_lord_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_lich_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_crypt_lord_acquired" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Version 2 costs 450g and 100lumber and requires to have upgraded the city level 2 "undead_train_death_knight2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_abaddon" } } } "undead_train_dread_lord2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_night_stalker" } } } "undead_train_lich2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_lich" } } } "undead_train_crypt_lord2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // Version 3 costs the same but requires City Hall level 3 "undead_train_death_knight3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_abaddon" } } } "undead_train_dread_lord3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_night_stalker" } } } "undead_train_lich3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_lich" } } } "undead_train_crypt_lord3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "450" "AbilityUpgradeGoldCost" "0" "AbilityChannelTime" "55" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "55.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "100" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "UpgradeAltarAbilities" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "BuildHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // Disabled Versions //Ranks 2 "undead_train_death_knight2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_dread_lord2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_lich2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_crypt_lord2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Ranks 3 "undead_train_death_knight3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_dread_lord3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_lich3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } "undead_train_crypt_lord3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "0" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Revival, one ability for each level to scale the gold and channel time (volvo pls) // 180 30 "undead_train_death_knight_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 225 35 "undead_train_death_knight_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 270 40 "undead_train_death_knight_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 315 45 "undead_train_death_knight_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 360 50 "undead_train_death_knight_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 405 60 "undead_train_death_knight_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 450 70 "undead_train_death_knight_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 495 80 "undead_train_death_knight_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 540 90 "undead_train_death_knight_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 585 100 "undead_train_death_knight_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_death_knight" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_abaddon" } } } // 180 30 "undead_train_dread_lord_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 225 35 "undead_train_dread_lord_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 270 40 "undead_train_dread_lord_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 315 45 "undead_train_dread_lord_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 360 50 "undead_train_dread_lord_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 405 60 "undead_train_dread_lord_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 450 70 "undead_train_dread_lord_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 495 80 "undead_train_dread_lord_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 540 90 "undead_train_dread_lord_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 585 100 "undead_train_dread_lord_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_dread_lord" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_night_stalker" } } } // 180 30 "undead_train_lich_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 225 35 "undead_train_lich_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 270 40 "undead_train_lich_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 315 45 "undead_train_lich_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 360 50 "undead_train_lich_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 405 60 "undead_train_lich_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 450 70 "undead_train_lich_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 495 80 "undead_train_lich_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 540 90 "undead_train_lich_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 585 100 "undead_train_lich_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_lich" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_lich" } } } // 180 30 "undead_train_crypt_lord_revive1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "1" "AbilityGoldCost" "180" "AbilityChannelTime" "30" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "180" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 225 35 "undead_train_crypt_lord_revive2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "2" "AbilityGoldCost" "225" "AbilityChannelTime" "35" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "225" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 270 40 "undead_train_crypt_lord_revive3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "3" "AbilityGoldCost" "270" "AbilityChannelTime" "40" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "270" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 315 45 "undead_train_crypt_lord_revive4" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "4" "AbilityGoldCost" "315" "AbilityChannelTime" "45" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "315" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 360 50 "undead_train_crypt_lord_revive5" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "5" "AbilityGoldCost" "360" "AbilityChannelTime" "50" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "50.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "360" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 405 60 "undead_train_crypt_lord_revive6" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "6" "AbilityGoldCost" "405" "AbilityChannelTime" "60" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "405" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 450 70 "undead_train_crypt_lord_revive7" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "7" "AbilityGoldCost" "450" "AbilityChannelTime" "70" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "450" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 495 80 "undead_train_crypt_lord_revive8" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "8" "AbilityGoldCost" "495" "AbilityChannelTime" "80" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "80.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "495" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 540 90 "undead_train_crypt_lord_revive9" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "9" "AbilityGoldCost" "540" "AbilityChannelTime" "90" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "90.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "540" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // 585 100 "undead_train_crypt_lord_revive10" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_lord" "MaxLevel" "10" "AbilityGoldCost" "585" "AbilityChannelTime" "100" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "revive_time" "100.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "585" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "5" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "HideReviveAbility" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/altar.lua" "Function" "ReviveHero" "Hero" "npc_dota_hero_nyx_assassin" } } } // Affects all ground units (except for builders, which have their inventories filled with items) "undead_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack" { "Passive" "1" "IsHidden" "1" "States" { "MODIFIER_STATE_MUTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Enable" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "HideAbility" } } "OnDeath" { // Item drops when unit is killed "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "BackpackDrop" } } } } } "undead_backpack_disabled" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_backpack_disabled" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "Backpack" "Action" "Disable" } } } } } "undead_research_backpack" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "25" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "DisableResearch" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_backpack_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "research_backpack" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // All undead buildings generate Blight and require blight to be built except for Necropolis and Haunted Gold Mine "undead_blight_regen" { "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityTextureName" "undying_decay" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "Modifiers" { "modifier_blight_thinker" { "ThinkInterval" "0.5" "IsHidden" "1" "Passive" "1" "OnIntervalThink" { "RunScript" { "ScriptFile" "mechanics/blight.lua" "Function" "BlightRegen" } } } "modifier_blight_regen" { "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "2" } } } } // Necropolis -> Halls of the Dead "undead_train_halls_of_the_dead" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_halls_of_the_dead" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "320" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "320" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "210" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "undead_halls_of_the_dead" } } } // Requires Altar "undead_train_black_citadel_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_black_citadel" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // Halls of the Dead -> Black Citadel "undead_train_black_citadel" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_black_citadel" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "325" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "120.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "325" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "230" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "undead_black_citadel" } } } // Ziggurat -> Nerubian Tower "undead_train_nerubian_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_nerubian_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "undead_nerubian_tower" } } } // Ziggurat -> Spirit Tower // Requires graveyard "undead_train_spirit_tower_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_spirit_tower" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_spirit_tower" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_spirit_tower" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "145" "AbilityChannelTime" "%build_time" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "145" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "40" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" "Action" "StartUpgrade" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "UpgradeBuilding" "UnitName" "undead_spirit_tower" } } } // Undead Buildings // undead_crypt - No requirements // undead_temple_of_the_damned - Requires undead_graveyard and undead_halls_of_the_dead // undead_slaughterhouse - Requires undead_graveyard and undead_halls_of_the_dead // undead_sacrificial_pit - Requires undead_halls_of_the_dead // undead_boneyard - Requires undead_sacrificial_pit and undead_black_citadel // Item Abilities // undead_altar_of_darkness - No requirements // undead_haunted_gold_mine - No requirements // undead_graveyard - No requirements // undead_necropolis - No requirements // undead_halls_of_the_dead - Upgrade // undead_black_citadel - Upgrade, Requires undead_altar_of_darkness // undead_ziggurat - No requirements // undead_nerubian_tower - Upgrade // undead_spirit_tower - Upgrade, Requires undead_graveyard // undead_tomb_of_relics - No requirements "undead_build_crypt" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_crypt" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "UnitName" "undead_crypt" "AbilityCooldown" "0" "AbilityGoldCost" "200" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "undead_build_temple_of_the_damned_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_temple_of_the_damned" "MaxLevel" "0" } "undead_build_temple_of_the_damned" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_temple_of_the_damned" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "UnitName" "undead_temple_of_the_damned" "AbilityCooldown" "0" "AbilityGoldCost" "155" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "155" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "140" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "undead_build_slaughterhouse_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_slaughterhouse" "MaxLevel" "0" } "undead_build_slaughterhouse" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_slaughterhouse" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "60.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "UnitName" "undead_slaughterhouse" "AbilityCooldown" "0" "AbilityGoldCost" "140" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "60.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "140" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "135" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "undead_build_sacrificial_pit_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_sacrificial_pit" "MaxLevel" "0" } "undead_build_sacrificial_pit" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_sacrificial_pit" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "45.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "UnitName" "undead_sacrificial_pit" "AbilityCooldown" "0" "AbilityGoldCost" "75" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } "undead_build_boneyard_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_boneyard" "MaxLevel" "0" } "undead_build_boneyard" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_build_boneyard" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // BuildingHelper info "Building" "1" //bool "BuildTime" "70.0" "AbilityCastRange" "200" "Scale" "0" //bool "PlayerCanControl" "1" //bool "ModelRotation" "135.0" "UnitName" "undead_boneyard" "AbilityCooldown" "0" "AbilityGoldCost" "175" // End of BuildingHelper info "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "build_time" "70.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "175" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "units/builder.lua" "Function" "Build" } } } // Acolyte Only "undead_gather_gold" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_gather_gold" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "CastFilterRejectCaster" "1" "GoldMineBuilding" "undead_haunted_gold_mine" "GoldGainInterval" "5" "GoldPerInterval" "10" "DamageMine" "10" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "gold_interval" "5" } "02" { "var_type" "FIELD_INTEGER" "gold_per_interval" "10" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } "RunScript" { "ScriptFile" "units/repair.lua" "Function" "Repair" } } //"modifier_gathering_gold" //"OverrideAnimation" "ACT_DOTA_CHANNEL_ABILITY_3" //"MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" //"MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } // Ghoul Only "undead_gather_lumber" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_gather_lumber" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "CastFilterRejectCaster" "1" "LumberGainInterval" "1" "LumberPerInterval" "2" "DamageTree" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "lumber_capacity" "20" //Can be upgraded } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "Gather" } } } "undead_return_resources" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_return_resources" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" //Fake Toggle // When the ability is active, it means there are resources left to return (else it will be hidden) "OnSpellStart" { "RunScript" { "ScriptFile" "units/gather.lua" "Function" "ReturnResources" } } } // Effects on the undead_haunted_gold_mine "undead_haunt_mine" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_haunt_mine" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "precache" { "model" "models/props_magic/bad_sigil_ancient001.vmdl" } "Modifiers" { "modifier_haunted_mine" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "HideGoldMine" } } "OnDestroy" { "RunScript" { "ScriptFile" "units/undead/acolyte.lua" "Function" "ShowGoldMine" } } } // Mine "behind" the entangled is unselectable "modifier_unselectable_mine" { "IsHidden" "0" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "undead_obsidian_statue_model" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "MaxLevel" "1" "Modifiers" { "modifier_obsidian_statue_model" { "Passive" "1" "IsHidden" "1" "OverrideAnimation" "ACT_DOTA_LOADOUT" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/obsidian_statue.lua" "Function" "Model" } } } "modifier_disable_statue" { "IsHidden" "1" "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } // • Crypt "undead_research_cannibalize" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_cannibalize" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_cannibalize_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_cannibalize" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_web" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_web" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_web_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_web" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_ghoul_frenzy" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_ghoul_frenzy" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_ghoul_frenzy_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_ghoul_frenzy" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_stone_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_stone_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "40" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_stone_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_stone_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_burrow" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_burrow" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_burrow_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_burrow" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Temple of the Damned "undead_research_necromancer_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_necromancer_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_necromancer_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_necromancer_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_banshee_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_banshee_training1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_banshee_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_banshee_training2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_skeletal_longevity" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_longevity" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "50" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "15" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "50" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_skeletal_longevity_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_longevity" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_skeletal_mastery" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_mastery" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "30" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_skeletal_mastery_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_skeletal_mastery" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Slaughterhouse "undead_research_disease_cloud" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_disease_cloud" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "100" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "45" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "100" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_disease_cloud_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_disease_cloud" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_destroyer_form" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_destroyer_form" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_destroyer_form_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_destroyer_form" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_exhume_corpses" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_exhume_corpses" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_exhume_corpses_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_exhume_corpses" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Boneyard "undead_research_freezing_breath" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_freezing_breath" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_freezing_breath_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_freezing_breath" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } // • Graveyard "undead_research_unholy_strength1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_strength1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_unholy_strength2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_strength2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_unholy_strength3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "275" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "275" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_strength3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_strength3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_unholy_armor1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "125" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "125" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_armor1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_unholy_armor2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_armor2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_unholy_armor3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "275" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "275" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_unholy_armor3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_unholy_armor3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_attack1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_attack1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_attack2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "20" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "125" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_attack2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_attack3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_attack3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_attack3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_carapace1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "150" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "60" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "150" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_carapace1_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace1" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_carapace2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace2" "MaxLevel" "2" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "75" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_carapace2_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace2" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_research_creature_carapace3" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace3" "MaxLevel" "3" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "250" "AbilityChannelTime" "%research_time" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "research_time" "90" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "250" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "275" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } // Add Upgrade and Swap the ability for the next upgrade if there is one "RunScript" { "ScriptFile" "buildings/research.lua" "Function" "ResearchComplete" } } } "undead_research_creature_carapace3_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_creature_carapace3" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_acolyte" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_acolyte" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "75" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "15.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "75" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_acolyte" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_ghoul" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_ghoul" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "120" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "18.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "120" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "0" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_ghoul" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_crypt_fiend" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_fiend" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "215" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "30.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "215" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "40" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_crypt_fiend" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_crypt_fiend_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_crypt_fiend" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_gargoyle" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_gargoyle" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "185" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "35.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "185" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_gargoyle" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_gargoyle_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_gargoyle" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_abomination" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_abomination" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "240" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "40.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "240" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "70" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_abomination" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_abomination_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_abomination" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_meat_wagon" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_meat_wagon" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "230" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "230" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "50" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "4" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_meat_wagon" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_obsidian_statue" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_obsidian_statue" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "200" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "45.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "200" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "35" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "3" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_obsidian_statue" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_obsidian_statue_disabled" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_obsidian_statue" "MaxLevel" "0" "OnUpgrade" { "RunScript" { "ScriptFile" "buildings/upgrades.lua" "Function" "SetLevel0" } } } "undead_train_necromancer" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_necromancer" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "145" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "24.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "145" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "20" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_necromancer" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_banshee" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_banshee" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "155" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "28.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "155" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "30" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "2" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_banshee" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } "undead_train_frost_wyrm" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_train_frost_wyrm" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityGoldCost" "385" // From "GoldCost" "AbilityChannelTime" "%train_time" // From "BuildTime" "AbilityMultiOrder" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "train_time" "65.0" } "02" { "var_type" "FIELD_INTEGER" "gold_cost" "385" } "03" { "var_type" "FIELD_INTEGER" "lumber_cost" "120" } "04" { "var_type" "FIELD_INTEGER" "food_cost" "7" } } "OnSpellStart" { "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "EnqueueUnit" } } "OnChannelSucceeded" { // Consume the first item in the queue "RunScript" { "ScriptFile" "buildings/queue.lua" "Function" "NextQueue" } "SpawnUnit" { "UnitName" "undead_frost_wyrm" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "buildings/rally_point.lua" "Function" "GetInitialRallyPoint" "Target" "CASTER" "Count" "1" } } "UnitCount" "1" "UnitLimit" "0" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "buildings/rally_point.lua" "Function" "MoveToRallyPoint" } } } } } //undead_unholy_strength //undead_unholy_armor //undead_creature_attack //undead_creature_carapace //undead_necromancer_training //undead_banshee_training "undead_unholy_strength1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_strength1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "1 3 5" } "02" { "var_type" "FIELD_INTEGER" "abomination_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "meat_wagon_damage" "10 20 30" } } "Modifiers" { "modifier_unholy_strength" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_abomination_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%abomination_damage" } } "modifier_meat_wagon_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%meat_wagon_damage" } } } } "undead_unholy_strength2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_strength2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "1 3 5" } "02" { "var_type" "FIELD_INTEGER" "abomination_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "meat_wagon_damage" "10 20 30" } } "Modifiers" { "modifier_unholy_strength" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_abomination_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%abomination_damage" } } "modifier_meat_wagon_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%meat_wagon_damage" } } } } "undead_unholy_strength3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_strength3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "1 3 5" } "02" { "var_type" "FIELD_INTEGER" "abomination_damage" "4 8 12" } "03" { "var_type" "FIELD_INTEGER" "meat_wagon_damage" "10 20 30" } } "Modifiers" { "modifier_unholy_strength" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_abomination_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%abomination_damage" } } "modifier_meat_wagon_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%meat_wagon_damage" } } } } "undead_unholy_armor1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_armor1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unholy_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "undead_unholy_armor2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_armor2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unholy_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "undead_unholy_armor3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_unholy_armor3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_unholy_armor" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } // Crypt Fiends gain 3.5 // Gargoyles gain 2.5 ground, 5.5 air // Wyrms gain 6.5 ground, 6 air // Destroyers gain 2 "undead_creature_attack1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_attack1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 10" } "02" { "var_type" "FIELD_INTEGER" "destroyer_damage" "2 4 6" } "03" { "var_type" "FIELD_INTEGER" "frost_wyrm_damage" "6 12 18" } } "Modifiers" { "modifier_creature_attack" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_destroyer_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%destroyer_damage" } } "modifier_frost_wyrm_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%frost_wyrm_damage" } } } } "undead_creature_attack2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_attack2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 10" } "02" { "var_type" "FIELD_INTEGER" "destroyer_damage" "2 4 6" } "03" { "var_type" "FIELD_INTEGER" "frost_wyrm_damage" "6 12 18" } } "Modifiers" { "modifier_creature_attack" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_destroyer_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%destroyer_damage" } } "modifier_frost_wyrm_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%frost_wyrm_damage" } } } } "undead_creature_attack3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_attack3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "3 6 10" } "02" { "var_type" "FIELD_INTEGER" "destroyer_damage" "2 4 6" } "03" { "var_type" "FIELD_INTEGER" "frost_wyrm_damage" "6 12 18" } } "Modifiers" { "modifier_creature_attack" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/undead/undead_upgrades.lua" "Function" "ApplyModifierUpgrade" } } } "modifier_bonus_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_destroyer_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%destroyer_damage" } } "modifier_frost_wyrm_damage" { "Passive" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%frost_wyrm_damage" } } } } "undead_creature_carapace1" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_carapace1" "MaxLevel" "1" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_creature_carapace" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "undead_creature_carapace2" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_carapace2" "MaxLevel" "2" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_creature_carapace" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } "undead_creature_carapace3" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "undead_research_creature_carapace3" "MaxLevel" "3" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } } "Modifiers" { "modifier_creature_carapace" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } } } //Necromancer Adept Training //ncreases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives them the ability to cast Unholy Frenzy. "undead_necromancer_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_necromancer_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Necromancer Master Training //Further increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives them the ability to cast Cripple. "undead_necromancer_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_necromancer_training2" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_necromancer_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Banshee Master Training //Increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives them the ability to cast Anti-magic Shell. "undead_banshee_training1" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training1" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "100" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "30" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "40" } } "Modifiers" { "modifier_banshee_training2" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "3" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } //Banshee Adept Training //Further increases mana capacity by 100, mana regeneration rate by 30%, hit points by 40, and gives them the ability to cast Possession "undead_banshee_training2" { "BaseClass" "ability_datadriven" "AbilityTextureName" "undead_research_banshee_training2" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_mana" "200" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana_regen_pct" "60" } "03" { "var_type" "FIELD_INTEGER" "bonus_health" "80" } } "Modifiers" { "modifier_banshee_training1" { "Passive" "1" "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "units/upgrades.lua" "Function" "ApplyTraining" "LevelUp" "4" //Set the creature to this level } } "Properties" { //"MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" //"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health" "MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE" "%bonus_mana_regen_pct" } } } } }