"DOTAAbilities" { "ability_base_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NONE" "OnCastbar" "1" "OnLearnbar" "1" "FightRecapLevel" "0" "AbilityTextureName" "ability_base" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastRangeBuffer" "250" "AbilityCastPoint" "0.0 0.0 0.0 0.0" "AbilityChannelTime" "0.0 0.0 0.0 0.0" "AbilityCooldown" "0.0 0.0 0.0 0.0" "AbilityDuration" "0.0 0.0 0.0 0.0" "AbilitySharedCooldown" "" "AbilityDamage" "0 0 0 0" "AbilityManaCost" "0 0 0 0" "AbilityModifierSupportValue" "1.0" // for stats tracking. "AbilityModifierSupportBonus" "0" // for stats tracking. // Item Info //------------------------------------------------------------------------------------------------------------- "ItemCost" "0" "ItemInitialCharges" "0" "ItemCombinable" "1" "ItemPermanent" "1" "ItemStackable" "0" "ItemRecipe" "0" "ItemDroppable" "1" "ItemPurchasable" "1" "ItemSellable" "1" "ItemRequiresCharges" "0" "ItemKillable" "1" "ItemDisassemblable" "0" "ItemShareability" "ITEM_NOT_SHAREABLE" "ItemDeclaresPurchase" "0" } "abyssal_underlord_atrophy_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "damage_reduction_pct" "18 26 34 42" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage_from_creep" "5" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage_from_hero" "30" } "05" { "var_type" "FIELD_FLOAT" "bonus_damage_duration" "30.0 35.0 40.0 45.0" } } } "abyssal_underlord_cancel_dark_rift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" } "abyssal_underlord_dark_rift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "AbilityCastRange" "0" "AbilityCastPoint" "0.6" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "130.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 150 225" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "450" } "02" { "var_type" "FIELD_FLOAT" "teleport_delay" "5.0 4.0 3.0" } } } "abyssal_underlord_firestorm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "750" "AbilityCastPoint" "0.6" "FightRecapLevel" "1" "AbilityTextureName" "abyssal_underlord_firestorm" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 110 120 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400" } "02" { "var_type" "FIELD_FLOAT" "wave_duration" "7.0" } "03" { "var_type" "FIELD_INTEGER" "wave_count" "6" } "04" { "var_type" "FIELD_INTEGER" "wave_damage" "25 40 55 70" } "05" { "var_type" "FIELD_FLOAT" "wave_interval" "1.0" } "06" { "var_type" "FIELD_INTEGER" "burn_damage" "5 10 15 20" } "07" { "var_type" "FIELD_FLOAT" "burn_interval" "1.0" } "08" { "var_type" "FIELD_FLOAT" "burn_duration" "2.0" } "09" { "var_type" "FIELD_FLOAT" "first_wave_delay" "0.9" } } } "abyssal_underlord_pit_of_malice_datadriven" { // General //----------------------------------------------------------------------------------------------------------- -- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTarget" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityTextureName" "pitlord_pit" "AbilityCastPoint" "0.6" "AbilityCastAnimation" "ACT_DOTA_ATTACK" "AbilityCastRange" "750" "AbilityCooldown" "24.0 21.0 18.0 15.0" "AbilityManaCost" "100 115 130 145" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275" } "02" { "var_type" "FIELD_FLOAT" "pit_duration" "7.0" } "03" { "var_type" "FIELD_FLOAT" "pit_interval" "0.5" } "04" { "var_type" "FIELD_INTEGER" "pit_damage" "100" } "05" { "var_type" "FIELD_FLOAT" "ensnare_duration" "1.0 1.5 2.0 2.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_abyssal_underlord/pit_of_malice.vpcf" } "OnSpellStart" { "CreateThinker" { "ModifierName" "pit_thinker" "Target" "POINT" } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "ApplyModifier" { "ModifierName" "rooted" "Duration" "%ensnare_duration" "Target" "TARGET" } } } } "Modifiers" { "pit_thinker" { "Aura" "pit_think" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "Duration" "%pit_duration" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_abyssal_underlord/pit_of_malice.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius 1 1" "15" "25 150 25" "16" "1 0 0" } } } } "pit_think" { "IsDebuff" "1" "ThinkInterval" "%pit_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%pit_damage" } } } "rooted" { "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "alpha_wolf_command_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "30" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "alpha_wolf_critical_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_chance" "20" } "02" { "var_type" "FIELD_INTEGER" "crit_mult" "200" } } } "arc_warden_flux" { "BaseClass" "ability_lua" "ScriptFile" "heroes/hero_arc_warden/arc_warden_flux_lua.lua" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastPoint" "0.3" "AbilityCastRange" "600 700 800 900" "AbilityManaCost" "75" "AbilityCooldown" "20" "AbilitySpecial" { "1" { "var_type" "FIELD_FLOAT" "flux_damage_per_second" "15 30 45 60" } "2" { "var_type" "FIELD_FLOAT" "flux_duration" "6" } "3" { "var_type" "FIELD_INTEGER" "flux_mute_radius" "225" } "4" { "var_type" "FIELD_FLOAT" "flux_tick_interval" "0.5" } "05" { "var_type" "FIELD_INTEGER" "slow" "-50" } } "precache" { "particle" "particles/units/heroes/hero_zuus/zuus_static_field_b.vpcf" "particle" "particles/status_fx/status_effect_disruptor_kinetic_fieldslow.vpcf" } } "arc_warden_magnetic_field" { "BaseClass" "ability_lua" "ScriptFile" "heroes/hero_arc_warden/arc_warden_magnetic_field_lua.lua" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityRadius" "275" "AbilityCastPoint" "0.3" "AbilityCastRange" "900" "AbilityManaCost" "110" "AbilityCooldown" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "field_duration" "3.5 4 4.5 5" } "02" { "var_type" "FIELD_INTEGER" "evasion" "100" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "50 60 70 80" } "04" { "var_type" "FIELD_INTEGER" "radius" "275" } } "precache" { "particle" "particles/units/heroes/hero_disruptor/disruptor_static_storm.vpcf" } } "arc_warden_spark_wraith" { "BaseClass" "ability_lua" "ScriptFile" "heroes/hero_arc_warden/arc_warden_spark_wraith_lua.lua" "AbilityName" "arc_warden_spark_wraith" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityDamage" "150 200 250 300" "AbilityCastPoint" "0.3" "AbilityCastRange" "2000" "AbilityManaCost" "50" "AbilityCooldown" "4" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "50" } "02" { "var_type" "FIELD_INTEGER" "startup_time" "3" } "03" { "var_type" "FIELD_INTEGER" "speed" "400" } "04" { "var_type" "FIELD_INTEGER" "search_radius" "375" } "05" { "var_type" "FIELD_INTEGER" "vision_radius" "300" } } "precache" { "particle" "particles/units/heroes/hero_disruptor/disruptor_thunder_strike_buff_sphere.vpcf" "particle" "particles/units/heroes/hero_disruptor/disruptor_thunder_strike_buff_sphere3.vpcf" "particle" "particles/units/heroes/hero_zuus/zuus_base_attack_sparkles.vpcf" "particle" "particles/units/heroes/hero_zuus/zuus_base_attack.vpcf" } } "arc_warden_tempest_double" { "BaseClass" "ability_lua" "ScriptFile" "heroes/hero_arc_warden/arc_warden_tempest_double_lua.lua" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityCastPoint" "0.3" "AbilityCooldown" "65 60 55" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "20" } "02" { "var_type" "FIELD_INTEGER" "health_cost" "30 15 0" } "03" { "var_type" "FIELD_INTEGER" "mana_cost" "30 15 0" } } "precache" { "particle" "particles/status_fx/status_effect_ancestral_spirit.vpcf" } } "attribute_bonus_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ATTRIBUTES" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "attribute_bonus_per_level" "2.0" } } } "attr_damage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "backdoor_protection_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_FLOAT" "activation_time" "15.0" } "03" { "var_type" "FIELD_INTEGER" "regen_rate" "90" } } } "backdoor_protection_in_base_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "activation_time" "15.0" } "02" { "var_type" "FIELD_INTEGER" "regen_rate" "90" } } } "batrider_firefly_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0 40.0 40.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "20 40 60 80" } "02" { "var_type" "FIELD_INTEGER" "radius" "200 200 200 200" } "03" { "var_type" "FIELD_FLOAT" "duration" "18.0 18.0 18.0 18.0" } "04" { "var_type" "FIELD_FLOAT" "tick_interval" "0.5 0.5 0.5 0.5" } "05" { "var_type" "FIELD_INTEGER" "tree_radius" "100 100 100 100" } } } "batrider_flamebreak_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "batrider_flamebreak" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "1.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "75 150 225 300" } "02" { "var_type" "FIELD_INTEGER" "explosion_radius" "375 375 375 375" } "03" { "var_type" "FIELD_INTEGER" "collision_radius" "100 100 100 100" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "0.5 0.5 0.5 0.5" } "05" { "var_type" "FIELD_INTEGER" "speed" "900 900 900 900" } "06" { "var_type" "FIELD_FLOAT" "knockback_max_distance" "400" } "07" { "var_type" "FIELD_INTEGER" "knockback_height" "100 100 100 100" } "08" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.25 0.25 0.25 0.25" } } } "batrider_flaming_lasso_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "batrider_flaming_lasso" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "100" "AbilityCooldown" "90.0 75.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "225" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.5 4.0" } "02" { "var_type" "FIELD_INTEGER" "drag_distance" "300 300 300" } "03" { "var_type" "FIELD_INTEGER" "break_distance" "400 400 400" } } } "batrider_sticky_napalm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "3.0 3.0 3.0 3.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "20 20 20 20" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Works by boosting damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "10 15 20 25" } "02" { "var_type" "FIELD_INTEGER" "radius" "375 375 375 375" } "03" { "var_type" "FIELD_FLOAT" "duration" "8.0 8.0 8.0 8.0" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_pct" "-3 -5 -7 -9" } "05" { "var_type" "FIELD_INTEGER" "turn_rate_pct" "-70 -70 -70 -70" } "06" { "var_type" "FIELD_INTEGER" "max_stacks" "10 10 10 10" } } } "beastmaster_boar_poison_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attack_speed" "-20" } "02" { "var_type" "FIELD_INTEGER" "movement_speed" "-20" } "03" { "var_type" "FIELD_FLOAT" "duration" "3.0" } } } "beastmaster_greater_boar_poison_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attack_speed" "-35" } "02" { "var_type" "FIELD_INTEGER" "movement_speed" "-35" } "03" { "var_type" "FIELD_FLOAT" "duration" "3.0" } } } "beastmaster_hawk_invisibility_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fade_time" "1.0" } "02" { "var_type" "FIELD_FLOAT" "idle_invis_delay" "3.0" // This plus the fade time equal the total time before the hawk goes invis. } } } "beastmaster_wild_axes_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "beastmaster_wild_axes" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1300" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0 13.0 13.0 13.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "70 100 130 160" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "140 140 140 140" } "02" { "var_type" "FIELD_INTEGER" "spread" "353 353 353 353" } "03" { "var_type" "FIELD_INTEGER" "range" "1300 1300 1300 1300" } } } "big_thunder_lizard_frenzy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" "AbilityCooldown" "8.0" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attackspeed_bonus" "75" } "02" { "var_type" "FIELD_FLOAT" "duration" "8.0" } } } "big_thunder_lizard_slam_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" "AbilityCooldown" "6.0" "AbilityDamage" "70" "AbilityManaCost" "90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-25" } "03" { "var_type" "FIELD_INTEGER" "attack_slow_tooltip" "-25" } "04" { "var_type" "FIELD_FLOAT" "non_hero_duration" "4.0" } "05" { "var_type" "FIELD_FLOAT" "hero_duration" "2.0" } } } "black_dragon_splash_attack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "range_close" "50" } "02" { "var_type" "FIELD_FLOAT" "damage_percent_close" "100.0" } "03" { "var_type" "FIELD_INTEGER" "range_mid" "150" } "04" { "var_type" "FIELD_FLOAT" "damage_percent_mid" "50.0" } "05" { "var_type" "FIELD_INTEGER" "range_far" "250" } "06" { "var_type" "FIELD_FLOAT" "damage_percent_far" "25.0" } } } "blue_dragonspawn_overseer_devotion_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "3" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "blue_dragonspawn_overseer_evasion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "evasion_chance_pct" "15" } } } "blue_dragonspawn_sorcerer_evasion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "evasion_chance_pct" "15" } } } "brewmaster_earth_hurl_boulder_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityCastRange" "800 800 800 800" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 7.0 7.0 7.0" "AbilityCastPoint" "0.4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "100 100 100 100" } "02" { "var_type" "FIELD_FLOAT" "duration" "2.0 2.0 2.0 2.0" } "03" { "var_type" "FIELD_INTEGER" "speed" "800 800 800 800" } } } "brewmaster_earth_pulverize_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_inner" "40 40 40 40" } "02" { "var_type" "FIELD_INTEGER" "radius_inner" "150 150 150 150" } "03" { "var_type" "FIELD_INTEGER" "damage_outer" "20 20 20 20" } "04" { "var_type" "FIELD_INTEGER" "radius_outer" "250 250 250 250" } "05" { "var_type" "FIELD_INTEGER" "chance" "20 20 20 20" } } } "brewmaster_earth_spell_immunity_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "brewmaster_fire_permanent_immolation_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "15 30 45" } "02" { "var_type" "FIELD_INTEGER" "radius" "220 220 220" } } } "brewmaster_storm_cyclone_datadriven" { // 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" "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 20.0 20.0 20.0" } } } "brewmaster_storm_dispel_magic_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityCastRange" "500 500 500 500" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" "AbilityCastPoint" "0.4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "200 200 200 200" } "02" { "var_type" "FIELD_INTEGER" "radius" "200 200 200 200" } } } "brewmaster_storm_wind_walk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 7.0 7.0 7.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "100 100 100 100" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speeed" "50 50 50 50" } "03" { "var_type" "FIELD_FLOAT" "duration" "20.0 20.0 20.0 20.0" } "04" { "var_type" "FIELD_FLOAT" "fade_time" "0.6 0.6 0.6 0.6" } } } "broodmother_poison_sting_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "6.0" } "02" { "var_type" "FIELD_FLOAT" "duration_hero" "2.0" } "03" { "var_type" "FIELD_INTEGER" "damage_per_second" "8" } "04" { "var_type" "FIELD_INTEGER" "movement_speed" "-15" } } } "broodmother_spawn_spiderite_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "spiderite_duration" "60.0" } "02" { "var_type" "FIELD_FLOAT" "buff_duration" "2.0" } } } "centaur_great_fortitude_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "centaur_khan_endurance_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "15" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "centaur_khan_war_stomp_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" "AbilityCooldown" "20.0" "AbilityDamage" "25" "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_FLOAT" "non_hero_stun_duration" "3.0" } "03" { "var_type" "FIELD_FLOAT" "hero_stun_duration" "2.0" } } } "courier_burst_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "02" { "var_type" "FIELD_INTEGER" "movement_speed" "650" } "03" { "var_type" "FIELD_FLOAT" "damage_absorb" "250" } } "MaxLevel" "1" } "courier_go_to_secretshop_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "1" } "courier_morph_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.1" "AbilityCastRange" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } "MaxLevel" "1" } "courier_return_stash_items_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "handoff_distance" "400" } } "MaxLevel" "1" } "courier_return_to_base_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "1" } "courier_shield_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "7.0" } } "MaxLevel" "1" } "courier_take_stash_items_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "stash_pickup_distance" "250" } } "MaxLevel" "1" } "courier_transfer_items_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "handoff_distance" "400" } } "MaxLevel" "1" } "dark_troll_warlord_ensnare_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" "AbilityCastPoint" "0.5" "AbilityCooldown" "20.0" "AbilityManaCost" "150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "1.75" } } } "dark_troll_warlord_raise_dead_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" "AbilityCooldown" "25.0" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0" } } } "default_attack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "disruptor_glimpse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "disruptor_glimpse" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.05 0.05 0.05 0.05" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "65.0 50.0 35.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "160 130 100 70" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 1000 1400 1800" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "backtrack_time" "4.0 4.0 4.0 4.0" } "02" { "var_type" "FIELD_INTEGER" "cast_range" "600 1000 1400 1800" } } } "disruptor_kinetic_field_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "disruptor_kinetic_field" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.05 0.05 0.05 0.05" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14 13 12 11" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 70 70 70" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900 900 900 900" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "325" } "02" { "var_type" "FIELD_FLOAT" "formation_time" "1.2 1.2 1.2 1.2" } "03" { "var_type" "FIELD_FLOAT" "duration" "2.5 3.0 3.5 4.0" } } } "disruptor_static_storm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "disruptor_static_storm" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.05 0.05 0.05 0.05" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "85.0 85.0 85.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 175 225" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800 800 800 800" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "450" } "02" { "var_type" "FIELD_INTEGER" "pulses" "20" } "03" { "var_type" "FIELD_INTEGER" "damage_max" "200 250 300" } "04" { "var_type" "FIELD_FLOAT" "duration" "5.0" } "05" { "var_type" "FIELD_FLOAT" "duration_scepter" "7.0" } "06" { "var_type" "FIELD_INTEGER" "pulses_scepter" "28" } } } "disruptor_thunder_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "disruptor_thunder_strike" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.05 0.05 0.05 0.05" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 16.0 16.0 16.0" "AbilityDuration" "6.0 6.0 6.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "130 130 130 130" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800 800 800 800" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "40 60 80 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "240 240 240 240" } "02" { "var_type" "FIELD_INTEGER" "strikes" "4 4 4 4" } "03" { "var_type" "FIELD_FLOAT" "strike_interval" "2.0 2.0 2.0 2.0" } "04" { "var_type" "FIELD_FLOAT" "duration" "6.0 6.0 6.0 6.0" } } } "dragon_knight_frost_breath_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-30" } "02" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "-20" } "03" { "var_type" "FIELD_FLOAT" "duration" "3.0" } } } "earthshaker_aftershock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "0.6 0.9 1.2 1.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 75 100 125" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "aftershock_range" "300" } "02" { "var_type" "FIELD_FLOAT" "tooltip_duration" "0.6 0.9 1.2 1.5" } } } "earthshaker_echo_slam_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "earthshaker_echo_slam" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "150.0 130.0 110.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "160 210 270" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "145 205 265" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "echo_slam_damage_range" "575" } "02" { "var_type" "FIELD_INTEGER" "echo_slam_echo_search_range" "575" } "03" { "var_type" "FIELD_INTEGER" "echo_slam_echo_range" "575" } "04" { "var_type" "FIELD_INTEGER" "echo_slam_echo_damage" "40 55 70" } } } "earthshaker_enchant_totem_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.69 0.69 0.69 0.69" "FightRecapLevel" "1" "AbilityTextureName" "earthshaker_enchant_totem" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0" "AbilityDuration" "14.0 14.0 14.0 14.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "totem_damage_percentage" "100 200 300 400" } "02" { "var_type" "FIELD_FLOAT" "tooltip_duration" "14.0 14.0 14.0 14.0" } } } "earthshaker_fissure_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "earthshaker_fissure" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1400" "AbilityCastPoint" "0.69 0.69 0.69 0.69" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityDuration" "1.0 1.25 1.5 1.75" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "125 175 225 275" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 140 155 170" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "fissure_range" "1400" } "02" { "var_type" "FIELD_FLOAT" "fissure_duration" "8.0" } "03" { "var_type" "FIELD_INTEGER" "fissure_radius" "225" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0 1.25 1.5 1.75" } } } "earth_spirit_boulder_smash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlag" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "earth_spirit_boulder_smash" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22.0 18.0 14.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_INTEGER" "rock_search_aoe" "200" } "03" { "var_type" "FIELD_INTEGER" "rock_damage" "125" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "0.75 1.25 1.75 2.25" } "05" { "var_type" "FIELD_INTEGER" "speed" "1200" } "06" { "var_type" "FIELD_FLOAT" "silence_duration" "3.5 4.0 4.5 5.0" } "07" { "var_type" "FIELD_FLOAT" "unit_distance" "500.0 600.0 700.0 800.0" } "08" { "var_type" "FIELD_FLOAT" "rock_distance" "2000.0" } "09" { "var_type" "FIELD_INTEGER" "remnant_smash_radius_tooltip" "200" } } } "earth_spirit_geomagnetic_grip_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "earth_spirit_geomagnetic_grip" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1100" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "180" } "02" { "var_type" "FIELD_INTEGER" "rock_damage" "50 125 200 275" } "03" { "var_type" "FIELD_INTEGER" "speed" "800" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0 1.5 2.0 2.5" } "05" { "var_type" "FIELD_FLOAT" "silence_duration" "2.5 3 3.5 4" } "06" { "var_type" "FIELD_FLOAT" "pull_units_per_second" "1000" } "07" { "var_type" "FIELD_FLOAT" "pull_units_per_second_heroes" "600" } "08" { "var_type" "FIELD_FLOAT" "total_pull_distance" "1400" } } } "earth_spirit_magnetize_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "earth_spirit_magnetize" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cast_radius" "300" } "02" { "var_type" "FIELD_INTEGER" "damage_per_second" "50 75 100" } "03" { "var_type" "FIELD_FLOAT" "damage_duration" "6.0" } "04" { "var_type" "FIELD_INTEGER" "rock_search_radius" "400" } "05" { "var_type" "FIELD_INTEGER" "rock_explosion_radius" "600" } "06" { "var_type" "FIELD_FLOAT" "damage_interval" "1.0" } "07" { "var_type" "FIELD_FLOAT" "rock_explosion_delay" "8.0" } "08" { "var_type" "FIELD_FLOAT" "silence_duration" "5.0" } "09" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0" } } } "earth_spirit_petrify_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "FightRecapLevel" "1" "AbilityTextureName" "earth_spirit_petrify" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3" } "02" { "var_type" "FIELD_FLOAT" "damage" "300" } "03" { "var_type" "FIELD_FLOAT" "aoe" "300" } } } "earth_spirit_rolling_boulder_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "3000" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 12.0 8.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "150" } "02" { "var_type" "FIELD_INTEGER" "speed" "800" } "03" { "var_type" "FIELD_INTEGER" "rock_speed" "1600" } "04" { "var_type" "FIELD_FLOAT" "distance" "800.0" } "05" { "var_type" "FIELD_FLOAT" "rock_distance" "1600.0" } "06" { "var_type" "FIELD_FLOAT" "delay" "0.6" } "07" { "var_type" "FIELD_INTEGER" "damage" "90" } "08" { "var_type" "FIELD_INTEGER" "rock_damage" "135" } "09" { "var_type" "FIELD_INTEGER" "move_slow" "80" } "10" { "var_type" "FIELD_INTEGER" "attack_slow" "80" } "11" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0" } } } "earth_spirit_stone_caller_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1100" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_charges" "6" } "02" { "var_type" "FIELD_FLOAT" "charge_restore_time" "30.0" } "03" { "var_type" "FIELD_FLOAT" "duration" "120.0" } } } "elder_titan_ancestral_spirit_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastRange" "1200" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 16.0 16.0 16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 110 110 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275" } "02" { "var_type" "FIELD_INTEGER" "pass_damage" "60 100 140 180" } "03" { "var_type" "FIELD_FLOAT" "spirit_duration" "8.0" } "04" { "var_type" "FIELD_FLOAT" "buff_duration" "9.0" } "05" { "var_type" "FIELD_INTEGER" "speed" "600" } "06" { "var_type" "FIELD_INTEGER" "move_pct_creeps" "1" } "07" { "var_type" "FIELD_INTEGER" "move_pct_heroes" "5" } "08" { "var_type" "FIELD_INTEGER" "damage_creeps" "3 6 9 12" } "09" { "var_type" "FIELD_INTEGER" "damage_heroes" "10 20 30 40" } "10" { "var_type" "FIELD_INTEGER" "move_pct_cap" "30" } } } "elder_titan_earth_splitter_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "elder_titan_earth_splitter" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2400" "AbilityCastPoint" "0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "100.0 100.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "175 175 175" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "crack_time" "3.14" } "02" { "var_type" "FIELD_INTEGER" "crack_width" "300" } "03" { "var_type" "FIELD_INTEGER" "crack_distance" "2400" } "04" { "var_type" "FIELD_INTEGER" "slow_pct" "30 40 50" } "05" { "var_type" "FIELD_FLOAT" "slow_duration" "3.0 4.0 5.0" } "06" { "var_type" "FIELD_INTEGER" "speed" "910" } "07" { "var_type" "FIELD_INTEGER" "damage_pct" "35" } "08" { "var_type" "FIELD_INTEGER" "vision_width" "500" } "09" { "var_type" "FIELD_FLOAT" "vision_interval" "0.22" } "10" { "var_type" "FIELD_FLOAT" "vision_duration" "4.0" } "11" { "var_type" "FIELD_INTEGER" "vision_step" "200" } "12" { "var_type" "FIELD_INTEGER" "total_steps" "12" } "13" { "var_type" "FIELD_FLOAT" "slow_duration_scepter" "4.0 5.0 6.0" } } } "elder_titan_echo_stomp_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "elder_titan_echo_stomp" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityChannelTime" "1.4 1.4 1.4 1.4" "AbilityManaCost" "100" "AbilityCastRange" "475" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "cast_time" "1.4" } "02" { "var_type" "FIELD_INTEGER" "radius" "475" } "03" { "var_type" "FIELD_FLOAT" "sleep_duration" "2.0 3.0 4.0 5.0" } "04" { "var_type" "FIELD_INTEGER" "stomp_damage" "80 90 100 110" } "05" { "var_type" "FIELD_FLOAT" "initial_stun_duration" "0.65" } } } "elder_titan_echo_stomp_spirit_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "FightRecapLevel" "1" "AbilityTextureName" "elder_titan_echo_stomp_spirit" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityChannelTime" "1.4 1.4 1.4 1.4" "AbilityManaCost" "0 0 0 0" "AbilityCastRange" "475" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "cast_time" "1.4" } "02" { "var_type" "FIELD_INTEGER" "radius" "475" } "03" { "var_type" "FIELD_FLOAT" "sleep_duration" "2.0 3.0 4.0 5.0" } "04" { "var_type" "FIELD_INTEGER" "stomp_damage" "80 90 100 110" } } } "elder_titan_natural_order_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "02" { "var_type" "FIELD_INTEGER" "armor_reduction_pct" "40 60 80 100" } "03" { "var_type" "FIELD_INTEGER" "magic_resistance_pct" "12 19 26 33" } } } "elder_titan_return_spirit_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" } "enchantress_enchant_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 25.0 20.0 15.0" "AbilityDuration" "5.5 5.5 5.5 5.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "65 65 65 65" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-20 -30 -40 -50" } "02" { "var_type" "FIELD_FLOAT" "dominate_duration" "80.0" } "03" { "var_type" "FIELD_FLOAT" "tooltip_duration" "5.5 5.5 5.5 5.5" } } } "enchantress_impetus_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "FightRecapLevel" "1" "AbilityTextureName" "enchantress_impetus" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" "AbilityCastPoint" "0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" "AbilityDuration" "1.5 1.5 1.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "55 60 65" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "distance_damage_pct" "15.0 20.0 25.0" } "02" { "var_type" "FIELD_INTEGER" "distance_damage_cap" "375 500 625" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_range_scepter" "190 190 190" } } } "enchantress_natures_attendants_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45.0 45.0 45.0 45.0" "AbilityDuration" "11.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 140 155 170" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "heal_interval" "1.0 1.0 1.0 1.0" } "02" { "var_type" "FIELD_FLOAT" "heal" "10.0 10.0 10.0 10.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "04" { "var_type" "FIELD_INTEGER" "wisp_count" "3 5 7 9" } } } "enchantress_untouchable_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityDuration" "4" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-30 -60 -90 -120" } "02" { "var_type" "FIELD_INTEGER" "slow_duration" "4" } } } "enraged_wildkin_tornado_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.75" "AbilityCooldown" "70.0" "AbilityChannelTime" "40.0" "AbilityManaCost" "200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" // Only for tooltip, redundant with AbilityChannelTime { "var_type" "FIELD_FLOAT" "duration" "40.0" } } } "enraged_wildkin_toughness_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "3" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "forest_troll_high_priest_heal_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_AUTOCAST" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350" "AbilityCastPoint" "0.5" "AbilityCooldown" "0.5" "AbilityManaCost" "5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health" "15" } } } "forest_troll_high_priest_mana_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_regen" "2" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } // Next free ID 5523 "fountain_buyback_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "fountain_glyph_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } // Rewrite of Furion Force of Nature // Author: Noya // Date: April 5, 2015 // The original version lets you cast it in a position where no trees will be spawned, change check_trees_precast to 1 to avoid this "furion_force_of_nature_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityTextureName" "furion_force_of_nature" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityCooldown" "37 37 37 37" "AbilityManaCost" "160 160 160 160" "AOERadius" "%area_of_effect" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "area_of_effect" "150 225 300 375" } "02" { "var_type" "FIELD_INTEGER" "max_treants" "2 3 4 5" } "03" { "var_type" "FIELD_FLOAT" "duration" "60 60 60 60" } // If this is set to 1, the spell wont go on cooldown and waste mana if cast on a position with no trees "04" { "var_type" "FIELD_INTEGER" "check_trees_precast" "0" } } "precache" { "particle" "particles/units/heroes/hero_furion/furion_force_of_nature_cast.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_furion.vsndevts" "model" "models/heroes/furion/treant.vmdl" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_furion/force_of_nature.lua" "Function" "CheckTrees" "Target" "POINT" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_furion/force_of_nature.lua" "Function" "ForceOfNature" "Target" "POINT" "UnitName" "npc_dota_furion_treant" } "DestroyTrees" { "Target" "POINT" "Radius" "%area_of_effect" } "FireSound" { "EffectName" "Hero_Furion.ForceOfNature" "Target" "CASTER" } } } "furion_sprout_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "FightRecapLevel" "1" "AbilityTextureName" "furion_sprout" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityCooldown" "11 10 9 8" "AbilityManaCost" "100 120 140 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "vision_range" "1000" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.75 4.5 5.25" } } } // Rewrite of Furion Teleportation // Author: Noya // Date: April 5, 2015 // TODO: Check all sort of cancelling shenanigans "furion_teleportation_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityTextureName" "furion_teleportation" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" // ?? global "AbilityCastPoint" "3 3 3 3" "AbilityCooldown" "50 40 30 20" "AbilityManaCost" "50 50 50 50" "precache" { "particle" "particles/units/heroes/hero_furion/furion_teleport_end.vpcf" "particle" "particles/units/heroes/hero_furion/furion_teleport_end_team.vpcf" "particle" "particles/units/heroes/hero_furion/furion_teleport.vpcf" "particle" "particles/units/heroes/hero_furion/furion_teleport_e.vpcf" //Endcap if canceled "soundfile" "soundevents/game_sounds_heroes/game_sounds_furion.vsndevts" } "OnAbilityPhaseStart" { "ApplyModifier" { "ModifierName" "modifier_teleportation" "Target" "CASTER" "Duration" "3" } "FireSound" { "EffectName" "Hero_Furion.Teleport_Grow" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_furion/teleportation.lua" "Function" "CreateTeleportParticles" "Target" "POINT" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Furion.Teleport_Disappear" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_furion/teleportation.lua" "Function" "Teleport" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Furion.Teleport_Appear" "Target" "CASTER" } } "Modifiers" { "modifier_teleportation" { "IsHidden" "0" "EffectName" "particles/units/heroes/hero_furion/furion_teleport.vpcf" "EffectAttachType" "follow_origin" "OnOrder" { "FireSound" { "EffectName" "Hero_Furion.Teleport_Disappear" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_furion/teleportation.lua" "Function" "EndTeleport" } "RemoveModifier" { "ModifierName" "modifier_teleportation" "Target" "CASTER" } } } } } // Rewrite of Furion Wrath of Nature // Author: Noya // Date: April 5, 2015 "furion_wrath_of_nature_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "furion_wrath_of_nature" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.5 0.5 0.5" "AbilityCooldown" "90 75 60" "AbilityManaCost" "175 225 275" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_targets" "16 16 16" } "02" { "var_type" "FIELD_INTEGER" "damage" "140 180 225" } "03" { "var_type" "FIELD_INTEGER" "damage_percent_add" "7" } "04" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25" } "05" { "var_type" "FIELD_INTEGER" "max_targets_scepter" "18 18 18" } "06" { "var_type" "FIELD_INTEGER" "damage_scepter" "155 210 275" } } "precache" { "particle" "particles/units/heroes/hero_furion/furion_wrath_of_nature.vpcf" "particle" "particles/units/heroes/hero_furion/furion_wrath_of_nature_cast.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_furion.vsndevts" } "OnAbilityPhaseStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_furion/furion_wrath_of_nature_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_hitloc" //attach_weapon in furion.vmdl } } "FireSound" { "EffectName" "Hero_Furion.WrathOfNature_Cast.Self" "Target" "CASTER" } } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_wrath_of_nature_thinker" "Target" "POINT" } } "Modifiers" { "modifier_wrath_of_nature_thinker" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_furion/wrath_of_nature.lua" "Function" "WrathOfNature" } } } } } "ghost_frost_attack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-20" } "02" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-20" } "03" { "var_type" "FIELD_FLOAT" "duration" "1.5" } } } "giant_wolf_critical_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_chance" "20" } "02" { "var_type" "FIELD_INTEGER" "crit_mult" "200" } } } "gnoll_assassin_envenomed_weapon_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "2" } "02" { "var_type" "FIELD_FLOAT" "non_hero_duration" "20.0" } "03" { "var_type" "FIELD_FLOAT" "hero_duration" "10.0" } } } "greevil_black_hole_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "250" "AbilityCastPoint" "0.3 0.3 0.3" "AbilityChannelTime" "3.0 3.0 3.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_pull_radius" "200" } "02" { "var_type" "FIELD_INTEGER" "pull_speed" "40" } "03" { "var_type" "FIELD_INTEGER" "customval_far_radius" "200" } "04" { "var_type" "FIELD_INTEGER" "near_radius" "150" } "05" { "var_type" "FIELD_INTEGER" "customval_far_damage" "10 13 16" } "06" { "var_type" "FIELD_INTEGER" "customval_near_damage" "30 35 40" } "07" { "var_type" "FIELD_FLOAT" "tick_rate" "0.1" } "08" { "var_type" "FIELD_FLOAT" "duration" "3.0" } "09" { "var_type" "FIELD_INTEGER" "vision_radius" "800" } } } "greevil_blade_fury_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "blade_fury_damage_tick" "0.2" } "02" { "var_type" "FIELD_FLOAT" "duration" "5.0" } "03" { "var_type" "FIELD_INTEGER" "blade_fury_radius" "250" } "04" { "var_type" "FIELD_INTEGER" "customval_damage" "28 33 38" } } } "greevil_bloodlust_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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 | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "20" } "02" { "var_type" "FIELD_FLOAT" "modelscale" "25" } "03" { "var_type" "FIELD_INTEGER" "customval_bonus_movement_speed" "12 14 16" } "04" { "var_type" "FIELD_INTEGER" "customval_bonus_attack_speed" "18 23 28" } } } "greevil_cold_snap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.3" "AbilityCooldown" "10" "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0" } "02" { "var_type" "FIELD_INTEGER" "customval_initial_damage" "25 30 35" } "03" { "var_type" "FIELD_FLOAT" "freeze_duration" "0.4" } "04" { "var_type" "FIELD_FLOAT" "freeze_cooldown" "0.7" } "05" { "var_type" "FIELD_INTEGER" "customval_damage" "10 15 20" } "06" { "var_type" "FIELD_FLOAT" "damage_trigger" "10.0" } } } "greevil_decrepify_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_spell_damage_pct" "-15 -20 -25" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-50" } "03" { "var_type" "FIELD_FLOAT" "customval_duration" "1.0 1.5 2.0" } } } "greevil_diabolic_edict_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "num_explosions" "20" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_INTEGER" "customval_damage" "8 13 18" } "04" { "var_type" "FIELD_FLOAT" "duration" "5.0" } } } "greevil_echo_slam_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "echo_slam_damage_range" "500" } "02" { "var_type" "FIELD_INTEGER" "echo_slam_echo_search_range" "550" } "03" { "var_type" "FIELD_INTEGER" "echo_slam_echo_range" "500" } "04" { "var_type" "FIELD_INTEGER" "customval_echo_damage" "14 17 20" } "05" { "var_type" "FIELD_INTEGER" "customval_damage" "30 40 50" } } } "greevil_fatal_bonds_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "count" "4" } "02" { "var_type" "FIELD_INTEGER" "customval_dmg_share_percentage" "6 9 12" } "03" { "var_type" "FIELD_FLOAT" "duration" "10.0" } "04" { "var_type" "FIELD_FLOAT" "search_aoe" "575" } } } "greevil_flesh_golem_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "8.0" } "02" { "var_type" "FIELD_INTEGER" "customval_bonus_damage" "12" } "03" { "var_type" "FIELD_INTEGER" "customval_armor_bonus" "3" } "04" { "var_type" "FIELD_INTEGER" "health_regen" "1" } "05" { "var_type" "FIELD_INTEGER" "radius" "700" } } } "greevil_hook_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700 900 1100 1300" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hook_speed" "1600.0" } "02" { "var_type" "FIELD_INTEGER" "hook_width" "100" } "03" { "var_type" "FIELD_INTEGER" "hook_distance" "1300" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "500 500 500 500" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "4.0 4.0 4.0 4.0" } "06" { "var_type" "FIELD_INTEGER" "customval_damage" "50" } } } "greevil_ice_wall_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "1" "HotKeyOverride" "G" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "customval_duration" "3.0 4.0 5.0" } "02" { "var_type" "FIELD_INTEGER" "slow" "-40" } "03" { "var_type" "FIELD_INTEGER" "customval_damage_per_second" "13 18 23" } "04" { "var_type" "FIELD_INTEGER" "wall_place_distance" "200" } "05" { "var_type" "FIELD_INTEGER" "num_wall_elements" "15" } "06" { "var_type" "FIELD_INTEGER" "wall_element_spacing" "80" } "07" { "var_type" "FIELD_INTEGER" "wall_element_radius" "105" } "08" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0" } } } "greevil_laguna_blade_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_damage" "80 105 130" } "02" { "var_type" "FIELD_FLOAT" "damage_delay" "0.25" } } } "greevil_leech_seed_datadriven" { "BaseClass" "ability_datadriven" "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" "AbilityCastRange" "350" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_interval" "0.75" } "02" { "var_type" "FIELD_INTEGER" "customval_leech_damage" "12 15 18" } "03" { "var_type" "FIELD_INTEGER" "movement_slow" "-24" } "04" { "var_type" "FIELD_INTEGER" "radius" "500" } "05" { "var_type" "FIELD_FLOAT" "duration" "3.0" } "06" { "var_type" "FIELD_INTEGER" "projectile_speed" "400" } } } "greevil_magic_missile_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "magic_missile_speed" "1250" } "02" { "var_type" "FIELD_FLOAT" "magic_missile_stun" "1.0" } "03" { "var_type" "FIELD_INTEGER" "customval_damage" "35 45 55" } } } "greevil_maledict_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_bonus_damage" "8 9 11" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage_threshold" "100" } "03" { "var_type" "FIELD_INTEGER" "radius" "150" } "04" { "var_type" "FIELD_INTEGER" "ticks" "3" } "05" { "var_type" "FIELD_FLOAT" "duration" "10.0" } } } "greevil_miniboss_black_brain_sap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" "AbilityCastRange" "600" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "200" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cast_animation" "1" } } } "greevil_miniboss_black_nightmare_datadriven" { // 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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "650" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0" "AbilityDuration" "6.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "nightmare_dot_interval" "1.0" } "02" { "var_type" "FIELD_FLOAT" "nightmare_invuln_time" "1.0" } "03" { "var_type" "FIELD_FLOAT" "duration" "7.0" } "04" { "var_type" "FIELD_FLOAT" "animation_rate" "0.2" } "05" { "var_type" "FIELD_INTEGER" "cast_animation" "0" } } } "greevil_miniboss_blue_cold_feet_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9.0" "AbilityDuration" "4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage" "75" } "02" { "var_type" "FIELD_INTEGER" "break_distance" "740" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "3.5" } "04" { "var_type" "FIELD_INTEGER" "cast_animation" "2" } } } "greevil_miniboss_blue_ice_vortex_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" "AbilityDuration" "6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275" } "02" { "var_type" "FIELD_INTEGER" "movement_speed_pct" "-30" } "03" { "var_type" "FIELD_INTEGER" "spell_resist_pct" "-25" } "04" { "var_type" "FIELD_INTEGER" "cast_animation" "3" } } } "greevil_miniboss_green_living_armor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityCastRange" "300" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_count" "6" } "02" { "var_type" "FIELD_INTEGER" "health_regen" "7" } "03" { "var_type" "FIELD_INTEGER" "damage_block" "40" } "04" { "var_type" "FIELD_FLOAT" "duration" "10.0" } "05" { "var_type" "FIELD_INTEGER" "cast_animation" "9" } } } "greevil_miniboss_green_overgrowth_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityCastRange" "500" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "625" } "03" { "var_type" "FIELD_INTEGER" "cast_animation" "10" } } } "greevil_miniboss_orange_dragon_slave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.45 0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9" "AbilityDuration" "0.6875 0.6875 0.6875 0.6875" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "170" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "dragon_slave_speed" "1200" } "02" { "var_type" "FIELD_INTEGER" "dragon_slave_width_initial" "275" } "03" { "var_type" "FIELD_INTEGER" "dragon_slave_width_end" "150" } "04" { "var_type" "FIELD_INTEGER" "dragon_slave_distance" "1075" } "05" { "var_type" "FIELD_INTEGER" "cast_animation" "11" } } } "greevil_miniboss_orange_light_strike_array_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityCastRange" "600" "AbilityCastPoint" "0.45 0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11" "AbilityDuration" "1.6 1.6 1.6 1.6" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "150" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "light_strike_array_aoe" "225" } "02" { "var_type" "FIELD_FLOAT" "light_strike_array_delay_time" "0.5" } "03" { "var_type" "FIELD_FLOAT" "light_strike_array_stun_duration" "1.6" } "04" { "var_type" "FIELD_INTEGER" "cast_animation" "12" } } } "greevil_miniboss_purple_plague_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "450" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "30.0" } "02" { "var_type" "FIELD_INTEGER" "ward_hp_tooltip" "200" } "03" { "var_type" "FIELD_INTEGER" "ward_damage_tooltip" "19" } "04" { "var_type" "FIELD_INTEGER" "cast_animation" "14" } } } "greevil_miniboss_purple_venomous_gale_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "10" } "02" { "var_type" "FIELD_INTEGER" "strike_damage" "50" } "03" { "var_type" "FIELD_INTEGER" "tick_damage" "30" } "04" { "var_type" "FIELD_FLOAT" "tick_interval" "2" } "05" { "var_type" "FIELD_INTEGER" "movement_slow" "-50" } "06" { "var_type" "FIELD_INTEGER" "radius" "125" } "07" { "var_type" "FIELD_INTEGER" "speed" "1200" } "08" { "var_type" "FIELD_INTEGER" "cast_animation" "13" } } } "greevil_miniboss_red_earthshock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6.0" "AbilityDuration" "4.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "240" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shock_radius" "385" } "02" { "var_type" "FIELD_INTEGER" "movement_slow" "-55" } "03" { "var_type" "FIELD_INTEGER" "cast_animation" "4" } } } "greevil_miniboss_red_overpower_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" "AbilityDuration" "15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_attacks" "5" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_bonus_pct" "300" } "03" { "var_type" "FIELD_INTEGER" "cast_animation" "5" } } } "greevil_miniboss_sight_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1000" } } } "greevil_miniboss_white_degen_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed_bonus" "-28" } "02" { "var_type" "FIELD_INTEGER" "radius" "315" } } } "greevil_miniboss_white_purification_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal" "360" } "02" { "var_type" "FIELD_INTEGER" "radius" "225" } "03" { "var_type" "FIELD_INTEGER" "cast_animation" "8" } } } "greevil_miniboss_yellow_ion_shell_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_INTEGER" "damage_per_second" "90" } "03" { "var_type" "FIELD_FLOAT" "duration" "20" } "04" { "var_type" "FIELD_INTEGER" "cast_animation" "6" } } } "greevil_miniboss_yellow_surge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "7.5" } "02" { "var_type" "FIELD_INTEGER" "cast_animation" "7" } } } "greevil_natures_attendants_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "heal_interval" "1.0" } "02" { "var_type" "FIELD_INTEGER" "customval_heal" "7 8 9" } "03" { "var_type" "FIELD_INTEGER" "radius" "275" } "04" { "var_type" "FIELD_INTEGER" "wisp_count" "4 5 6" } "05" { "var_type" "FIELD_FLOAT" "duration" "5.0" } } } "greevil_phantom_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000 1000 1000 1000" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "100" } "02" { "var_type" "FIELD_INTEGER" "customval_bonus_attacks" "3" } "03" { "var_type" "FIELD_INTEGER" "tooltip_range" "1000 1000 1000 1000" } } } "greevil_poison_nova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "830" } "02" { "var_type" "FIELD_INTEGER" "start_radius" "255" } "03" { "var_type" "FIELD_FLOAT" "duration" "10.0" } "04" { "var_type" "FIELD_INTEGER" "customval_damage" "11 14 17" } "05" { "var_type" "FIELD_INTEGER" "speed" "500" } } } "greevil_purification_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400 500 600 700" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_heal" "50 55 60" } "02" { "var_type" "FIELD_INTEGER" "radius" "225" } } } "greevil_rot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "rot_radius" "250" } "02" { "var_type" "FIELD_FLOAT" "rot_tick" "0.2" } "03" { "var_type" "FIELD_INTEGER" "rot_slow" "-20" } "04" { "var_type" "FIELD_INTEGER" "customval_damage" "20" } } } "greevil_shadow_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "customval_strike_damage" "20 25 30" } "02" { "var_type" "FIELD_INTEGER" "customval_duration_damage" "10 15 20" } "03" { "var_type" "FIELD_INTEGER" "movement_slow" "-40" } "04" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } "05" { "var_type" "FIELD_FLOAT" "duration" "6.0" } } } "greevil_shadow_wave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bounce_radius" "475" } "02" { "var_type" "FIELD_INTEGER" "damage_radius" "185" } "03" { "var_type" "FIELD_INTEGER" "max_targets" "4" } "04" { "var_type" "FIELD_INTEGER" "customval_damage" "28 33 38" } } } "greevil_time_lock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "1.0" } "02" { "var_type" "FIELD_INTEGER" "chance_pct" "10 15 20" } "04" { "var_type" "FIELD_INTEGER" "customval_bonus_damage" "7 11 15" } } } "gyrocopter_call_down_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "gyrocopter_call_down" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "55 50 45" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 125 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_duration_first" "2" } "02" { "var_type" "FIELD_INTEGER" "slow_duration_second" "3" } "03" { "var_type" "FIELD_INTEGER" "damage_first" "250 300 350" } "04" { "var_type" "FIELD_INTEGER" "damage_second" "100 150 200" } "05" { "var_type" "FIELD_FLOAT" "slow_first" "50" } "06" { "var_type" "FIELD_FLOAT" "slow_second" "20" } "07" { "var_type" "FIELD_INTEGER" "radius" "450" } "08" { "var_type" "FIELD_INTEGER" "range_scepter" "0" } "09" { "var_type" "FIELD_INTEGER" "damage_second_scepter" "175 225 275" } } } "gyrocopter_flak_cannon_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "gyrocopter_flak_cannon" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30 30 30 30" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" //Duration //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "15 15 15 15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1000" } "02" { "var_type" "FIELD_INTEGER" "max_attacks" "3 4 5 6" } "03" { "var_type" "FIELD_INTEGER" "projectile_speed" "800" } } } "gyrocopter_homing_missile_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "gyrocopter_homing_missile" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1050" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20 17 14 11" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 130 140 150" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "125 250 375 500" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hits_to_kill_tooltip" "3 3 4 5" } "02" { "var_type" "FIELD_INTEGER" "tower_hits_to_kill_tooltip" "6 6 8 10" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "2.2 2.4 2.6 2.8" } "04" { "var_type" "FIELD_INTEGER" "attack_speed_bonus_pct" "400 400 400 400" } "05" { "var_type" "FIELD_INTEGER" "min_damage" "50" } "06" { "var_type" "FIELD_INTEGER" "max_distance" "1500" } "07" { "var_type" "FIELD_INTEGER" "pre_flight_time" "3" } "08" { "var_type" "FIELD_INTEGER" "hero_damage" "34 34 26 21" } "09" { "var_type" "FIELD_FLOAT" "speed" "340" } "10" { "var_type" "FIELD_INTEGER" "acceleration" "20" } "11" { "var_type" "FIELD_INTEGER" "enemy_vision_time" "4" } } } "gyrocopter_rocket_barrage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "gyrocopter_rocket_barrage" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 6.5 6 5.5" "AbilityDuration" "3 3 3 3" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "11 15 19 23" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 90 90 90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400" } "02" { "var_type" "FIELD_INTEGER" "rockets_per_second" "10" } } } "harpy_storm_chain_lightning_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.5" "AbilityCooldown" "4.0" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "initial_damage" "140" } "02" { "var_type" "FIELD_INTEGER" "jump_range" "500" } "03" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25" } "04" { "var_type" "FIELD_FLOAT" "damage_percent_loss" "25.0" } "05" { "var_type" "FIELD_INTEGER" "max_targets" "4" } } } "healing_campfire_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" "AbilityDuration" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal_amount" "5" } "02" { "var_type" "FIELD_INTEGER" "healing_aura_radius" "500" } } } "juggernaut_blade_dance_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blade_dance_crit_mult" "200" } "02" { "var_type" "FIELD_INTEGER" "blade_dance_crit_chance" "15 20 25 35" } } } "juggernaut_blade_fury_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "juggernaut_blade_fury" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 26.0 22.0 18.0" "AbilityDuration" "5.0 5.0 5.0 5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 100 120 140" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 110 110 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "blade_fury_damage_tick" "0.2" } "02" { "var_type" "FIELD_INTEGER" "blade_fury_radius" "250" } } } "juggernaut_healing_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 60.0 60.0 60.0" "AbilityDuration" "25.0 25.0 25.0 25.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 100 120 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "healing_ward_heal_amount" "2 3 4 5" } "02" { "var_type" "FIELD_INTEGER" "healing_ward_aura_radius" "500" } } } "juggernaut_omni_slash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "FightRecapLevel" "2" "AbilityTextureName" "juggernaut_omni_slash" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "450" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "130.0 120.0 110.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 275 350" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // damage only // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "omni_slash_damage" "200 225" } "02" { "var_type" "FIELD_INTEGER" "omni_slash_jumps" "3 6 9" } "03" { "var_type" "FIELD_INTEGER" "omni_slash_radius" "425" } "04" { "var_type" "FIELD_FLOAT" "omni_slash_bounce_tick" "0.4" } "05" { "var_type" "FIELD_FLOAT" "omni_slash_cooldown_scepter" "70" } "06" { "var_type" "FIELD_INTEGER" "omni_slash_jumps_scepter" "6 9 12" } } } "kobold_taskmaster_speed_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "12" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "legion_commander_moment_of_courage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.9" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "trigger_chance" "16 18 20 22" } "02" { "var_type" "FIELD_FLOAT" "buff_duration" "1.0" } "03" { "var_type" "FIELD_INTEGER" "hp_leech_percent" "20 40 60 80" } } } "legion_commander_overwhelming_odds_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "legion_commander_overwhelming_odds" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "18.0 18.0 18.0 18.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "330" } "02" { "var_type" "FIELD_INTEGER" "damage" "40 80 120 160" } "03" { "var_type" "FIELD_INTEGER" "damage_per_unit" "14 16 18 20" } "04" { "var_type" "FIELD_INTEGER" "damage_per_hero" "20 35 50 65" } "05" { "var_type" "FIELD_INTEGER" "illusion_dmg_pct" "25" } "06" { "var_type" "FIELD_INTEGER" "bonus_speed_creeps" "3" } "07" { "var_type" "FIELD_INTEGER" "bonus_speed_heroes" "9" } "08" { "var_type" "FIELD_FLOAT" "duration" "7.0" } } } "legion_commander_press_the_attack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 15.0 14.0 13.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "3.0" // Value much higher than cost. // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5.0" } "02" { "var_type" "FIELD_INTEGER" "attack_speed" "60 80 100 120" } "03" { "var_type" "FIELD_INTEGER" "hp_regen" "30 40 50 60" } } } // Rewrite of the Lifestealer Consume ability // Author: jacklarnes, RcColes // Date: 08.07.2015. "life_stealer_consume_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_UNRESTRICTED" "FightRecapLevel" "1" "AbilityTextureName" "life_stealer_consume" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" "AbilityCastRange" "0" "OnSpellStart" // OnSpellStart as a Modifier Event, you can Apply it on a target to trigger any Actions. { "RunScript" { "ScriptFile" "heroes/hero_life_stealer/infest.lua" "Function" "infest_consume" } } } // Rewrite of the Lifestealer Feast ability // Author: jacklarnes, Pizzalol // Date: 07.04.2015. "life_stealer_feast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "life_stealer_feast" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_life_stealer.vsndevts" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_feast.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_leech_percent" "4 5 6 7" } } "Modifiers" { "modifier_feast_datadriven" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "OnAttackStart" // "%attack_damage" is set to the damage value before mitigation { "RemoveModifier" { "ModifierName" "modifier_feast_damage_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_life_stealer/feast.lua" "Function" "feast_attack" "feast_modifier" "modifier_feast_damage_datadriven" } } "OnAttack" { "FireEffect" { "EffectName" "particles/generic_gameplay/generic_lifesteal.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_life_stealer/feast.lua" "Function" "feast_heal" } } } "modifier_feast_damage_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_feast_damage_datadriven" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "1" } } } } // Rewrite of the Lifestealer Infest ability // Author: jacklarnes, RcColes // Date: 08.07.2015. "life_stealer_infest_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" //"AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "life_stealer_infest" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_life_stealer.vsndevts" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_infest_cast.vpcf" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_infest_emerge_bloody.vpcf" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_infested_unit_icon.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "100 100 100" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "700 700 700" } "02" { "var_type" "FIELD_INTEGER" "damage" "150 275 400" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/life_stealer/infest.lua" "Function" "infest_add_consume" } "LevelUpAbility" { "Target" "CASTER" "AbilityName" "life_stealer_consume_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LifeStealer.Infest" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_life_stealer/life_stealer_infest_cast.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_infest_hide" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_infest_buff" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_life_stealer/infest.lua" "Function" "infest_start" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_life_stealer/infest.lua" "Function" "infest_check_valid" } } "Modifiers" { "modifier_infest_hide" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "States" { "MODIFIER_STATE_DISARMED" "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_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_life_stealer/infest.lua" "Function" "infest_move_unit" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_life_stealer/life_stealer_infest_emerge_bloody.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_LifeStealer.consume" "Target" "TARGET" } } } "modifier_infest_buff" { //"EffectName" "particles/units/heroes/hero_life_stealer/life_stealer_infested_unit_icon.vpcf" //"EffectAttachType" "follow_overhead" "IsHidden" "0" "IsBuff" "1" "IsPurgeable" "0" "TextureName" "life_stealer_infest" } } } // Rewrite of the Lifestealer Open Wounds ability // Author: jacklarnes, Pizzalol // Date: 21.04.2015. // NOTE: This is an example on how to do it in pure Datadriven KV, it is possible to make it dynamic with Lua "life_stealer_open_wounds_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "life_stealer_open_wounds" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_life_stealer.vsndevts" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_open_wounds.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2" "AbilityCastRange" "200 300 400 500" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "24 20 16 12" //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "8 8 8 8" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 110 110 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_steps" "-70 -70 -60 -50 -30 -10 -10 -10" } "02" { "var_type" "FIELD_INTEGER" "heal_percent" "15 20 25 30" } "03" { "var_type" "FIELD_INTEGER" "slow_tooltip" "70" } "04" { "var_type" "FIELD_INTEGER" "duration" "8" } "05" { "var_type" "FIELD_INTEGER" "tooltip_range" "200 300 400 500" } // Extra "06" { "var_type" "FIELD_INTEGER" "slow_step70" "-70" } "07" { "var_type" "FIELD_INTEGER" "slow_step60" "-60" } "08" { "var_type" "FIELD_INTEGER" "slow_step50" "-50" } "09" { "var_type" "FIELD_INTEGER" "slow_step30" "-30" } "10" { "var_type" "FIELD_INTEGER" "slow_step10" "-10" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LifeStealer.OpenWounds.Cast" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_open_wounds" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_open_wounds" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "OnTakeDamage" { "Heal" { "Target" "ATTACKER" "HealAmount" "%attack_damage * %heal_percent / 100" } } "OnCreated" { "FireSound" { "EffectName" "Hero_LifeStealer.OpenWounds" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_life_stealer/life_stealer_open_wounds.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_open_wounds_70" "Target" "TARGET" "Duration" "2" } } } "modifier_open_wounds_70" { "IsHidden" "1" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_open_wounds_60" "Target" "TARGET" "Duration" "1" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_step70" } } "modifier_open_wounds_60" { "IsHidden" "1" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_open_wounds_50" "Target" "TARGET" "Duration" "1" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_step60" } } "modifier_open_wounds_50" { "IsHidden" "1" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_open_wounds_30" "Target" "TARGET" "Duration" "1" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_step50" } } "modifier_open_wounds_30" { "IsHidden" "1" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_open_wounds_10" "Target" "TARGET" "Duration" "3" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_step30" } } "modifier_open_wounds_10" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_step10" } } } } // Rewrite of the Lifestealer Rage ability // Author: jacklarnes // Date: 07.04.2015. "life_stealer_rage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "life_stealer_rage" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_life_stealer.vsndevts" "particle" "particles/units/heroes/hero_life_stealer/life_stealer_rage.vpcf" "particle" "particles/status_fx/status_effect_life_stealer_rage.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" "AbilityCastRange" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "19" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" "AbilityDuration" "3 4 5 6" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attack_speed_bonus" "30 45 60 80" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.0 5.0 6.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_LifeStealer.Rage" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_life_stealer/rage.lua" "Function" "rage_start" } "ApplyModifier" { "ModifierName" "modifier_rage_ability" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_rage_ability" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "StatusEffectName" "particles/status_fx/status_effect_life_stealer_rage.vpcf" "StatusEffectPriority" "10" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_life_stealer/life_stealer_rage.vpcf" "EffectAttachType" "attach_hitloc" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" } } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_bonus" } "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Lina Dragon Slave ability // Author: Pizzalol // Date: 29.12.2014. "lina_dragon_slave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "lina_dragon_slave" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lina.vsndevts" "particle" "particles/units/heroes/hero_lina/lina_spell_dragon_slave.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.45 0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.5 8.5 8.5 8.5" "AbilityDuration" "0.6875 0.6875 0.6875 0.6875" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 170 230 280" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 105 125 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "dragon_slave_speed" "1200" } "02" { "var_type" "FIELD_INTEGER" "dragon_slave_width_initial" "275" } "03" { "var_type" "FIELD_INTEGER" "dragon_slave_width_end" "200" } "04" { "var_type" "FIELD_INTEGER" "dragon_slave_distance" "1075" } } "OnSpellStart" { "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_lina/lina_spell_dragon_slave.vpcf" "MoveSpeed" "%dragon_slave_speed" "StartRadius" "%dragon_slave_width_initial" "StartPosition" "attach_origin" "EndRadius" "%dragon_slave_width_end" "FixedDistance" "%dragon_slave_distance" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_Lina.DragonSlave" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } "lina_fiery_soul_alt1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } // Rewrite of the Lina Fiery Soul ability // Author: Pizzalol // Date: 30.12.2014. // NOTE: Works with items "lina_fiery_soul_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "lina_fiery_soul" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "9" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "fiery_soul_attack_speed_bonus" "40 55 70 85" } "02" { "var_type" "FIELD_INTEGER" "fiery_soul_move_speed_bonus" "5 6 7 8" } "03" { "var_type" "FIELD_INTEGER" "fiery_soul_max_stacks" "3" } } "Modifiers" { "modifier_fiery_soul_datadriven" { "Passive" "1" "IsHidden" "1" "OnAbilityExecuted" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lina/fiery_soul.lua" "Function" "FierySoul" } } } "modifier_fiery_soul_buff_stack_datadriven" { "Duration" "%AbilityDuration" "IsBuff" "1" } "modifier_fiery_soul_buff_datadriven" { "IsHidden" "1" "Duration" "%AbilityDuration" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%fiery_soul_attack_speed_bonus" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%fiery_soul_move_speed_bonus" } } } } // Rewrite of the Lina Light Strike Array ability // Author: Pizzalol // Date: 30.12.2014. // Changed: 09.01.2015. // Reason: Changed the damage from delayed action to a modifier "lina_laguna_blade_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Changes dynamically with scepter "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "lina_laguna_blade" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lina.vsndevts" "particle" "particles/units/heroes/hero_lina/lina_spell_laguna_blade.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "70.0 60.0 50.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "280 420 680" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier just delays damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "450 675 950" } "02" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "900 900 900" } "03" { "var_type" "FIELD_FLOAT" "damage_delay" "0.25" } } "OnSpellStart" { "FireSound" { "EffectName" "Ability.LagunaBladeImpact" "Target" "TARGET" } "FireSound" { "EffectName" "Ability.LagunaBlade" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lina/lina_spell_laguna_blade.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" "TARGET" "attach_hitloc" } } "ApplyModifier" { "ModifierName" "modifier_laguna_blade_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_laguna_blade_datadriven" { "IsHidden" "1" "Duration" "%damage_delay" "OnDestroy" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } } } // Rewrite of the Lina Light Strike Array ability // Author: Pizzalol // Date: 29.12.2014. "lina_light_strike_array_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "lina_light_strike_array" "AbilityCastRange" "625" "AbilityCastPoint" "0.45 0.45 0.45 0.45" "AOERadius" "%light_strike_array_aoe" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lina.vsndevts" "particle" "particles/units/heroes/hero_lina/lina_spell_light_strike_array.vpcf" "particle" "particles/units/heroes/hero_lina/lina_spell_light_strike_array_ray_team.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 7.0 7.0 7.0" "AbilityDuration" "1.6 1.8 2.0 2.2" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "90 150 210 280" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "light_strike_array_aoe" "225" } "02" { "var_type" "FIELD_FLOAT" "light_strike_array_delay_time" "0.5" } "03" { "var_type" "FIELD_FLOAT" "light_strike_array_stun_duration" "1.6 1.8 2.0 2.2" } } "OnSpellStart" { "FireSound" { "EffectName" "Ability.PreLightStrikeArray" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lina/lina_spell_light_strike_array_ray_team.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%light_strike_array_aoe 0 0" "03" "0 0 0" } } "DelayedAction" { "Delay" "%light_strike_array_delay_time" "Action" { "FireSound" { "EffectName" "Ability.LightStrikeArray" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lina/lina_spell_light_strike_array.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "00" "POINT" "01" "%light_strike_array_aoe 0 0" "03" "0 0 0" } } "DestroyTrees" { "Target" "POINT" "Radius" "%light_strike_array_aoe" } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%light_strike_array_aoe" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_light_strike_array_datadriven" "Target" "TARGET" "Duration" "%light_strike_array_stun_duration" } } } } } } "Modifiers" { "modifier_light_strike_array_datadriven" { "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Lion Finger of Death ability // Author: Pizzalol // Date: 18.01.2015. "lion_finger_of_death_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "lion_finger_of_death" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_finger_of_death.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "160.0 100.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 420 650" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier just delays damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "600 725 850" } "02" { "var_type" "FIELD_INTEGER" "damage_scepter" "725 875 1025" } "03" { "var_type" "FIELD_INTEGER" "mana_cost_scepter" "200 420 625" } "04" { "var_type" "FIELD_FLOAT" "damage_delay" "0.25" } "05" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "100.0 60.0 20.0" } "06" { "var_type" "FIELD_FLOAT" "splash_radius_scepter" "200" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.FingerOfDeath" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Lion.FingerOfDeathImpact" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lion/lion_spell_finger_of_death.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" "TARGET" "attach_hitloc" } } "ApplyModifier" { "ModifierName" "modifier_finger_of_death_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_finger_of_death_datadriven" { "IsHidden" "1" "Duration" "%damage_delay" "OnDestroy" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } } } // Rewrite of the Lion Impale ability // Author: Pizzalol // Date: 18.01.2015. "lion_impale_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "lion_impale" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_impale.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 120 145 170" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 140 200 260" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "width" "125 125 125 125" } "02" { "var_type" "FIELD_FLOAT" "duration" "1.02 1.52 2.02 2.52" } "03" { "var_type" "FIELD_INTEGER" "length" "825" } "04" { "var_type" "FIELD_INTEGER" "speed" "1600 1600 1600 1600" } // Extra variables "05" { "var_type" "FIELD_FLOAT" "air_time" "0.52" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.Impale" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_lion/lion_spell_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" "FireSound" { "EffectName" "Hero_Lion.ImpaleHitTarget" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_knockback" "Target" "TARGET" } "Knockback" { "Target" "TARGET" "Center" "CASTER" "Distance" "0" "Duration" "%air_time" "Height" "200" "IsFixedDistance" "1" } "DelayedAction" { "Delay" "%air_time" "Action" { "FireSound" { "EffectName" "Hero_Lion.ImpaleTargetLand" "Target" "TARGET" } "Stun" { "Target" "TARGET" "Duration" "%duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } } } // Rewrite of the Lion Mana Drain ability // Author: Pizzalol // Date: 18.01.2015. "lion_mana_drain_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "lion_mana_drain" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lion.vsndevts" "particle" "particles/units/heroes/hero_lion/lion_spell_mana_drain.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "850" "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityChannelTime" "5.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 15.0 10.0 5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "10 10 10 10" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "5.0" // better then the mana cost implies // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5.0" } "02" { "var_type" "FIELD_INTEGER" "mana_per_second" "20 40 60 120" } "03" { "var_type" "FIELD_INTEGER" "break_distance" "1200" } "04" { "var_type" "FIELD_FLOAT" "illusion_kill_time" "0.25" } "05" { "var_type" "FIELD_FLOAT" "tick_interval" "0.25" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lion.ManaDrain" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_mana_drain_datadriven" "Target" "TARGET" } } "OnChannelInterrupted" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lion/mana_drain.lua" "Function" "mana_drain_stop_sound" "sound" "Hero_Lion.ManaDrain" } "RemoveModifier" { "ModifierName" "modifier_mana_drain_datadriven" "Target" "TARGET" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lion/mana_drain.lua" "Function" "mana_drain_stop_sound" "sound" "Hero_Lion.ManaDrain" } "RemoveModifier" { "ModifierName" "modifier_mana_drain_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_mana_drain_datadriven" { "IsDebuff" "1" "Duration" "%duration" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_lion/lion_spell_mana_drain.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "CASTER" "attach_hitloc" } } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lion/mana_drain.lua" "Function" "mana_drain" } } } } } // Rewrite of the Lion Voodoo ability // Author: Pizzalol // Date: 27.09.2015. "lion_voodoo_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "lion_voodoo" // Precache //------------------------------------------------------------------------------------------------------------- "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" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 24.0 18.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 150 175 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.5 3 3.5 4" } "02" { "var_type" "FIELD_INTEGER" "movespeed" "140" } } "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" } "RunScript" { "ScriptFile" "heroes/hero_lion/voodoo.lua" "Function" "voodoo_start" "Target" "TARGET" } } } // Rewrite of Lone Druid Rabid // Author: Noya // Date: 15.01.2015. // Notes: If you wish to buff all player controlled units, change the unit_name value to "npc_", it checks if the unit names contain that string. "lone_druid_rabid_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "FightRecapLevel" "1" "AbilityTextureName" "lone_druid_rabid" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 30.0 30.0 30.0" "AbilityDuration" "10.0 10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "10 20 30 40" } "02" { "var_type" "FIELD_INTEGER" "bonus_move_speed" "5 10 15 20" } "03" { "var_type" "FIELD_FLOAT" "rabid_duration" "10.0 10.0 10.0 10.0" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_rabid_buff.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_rabid_buff_speed_ring.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/rabid.lua" "Function" "Rabid" "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "unit_name" "npc_dota_lone_druid_bear" } "FireSound" { "EffectName" "Hero_LoneDruid.Rabid" "Target" "CASTER" } } "Modifiers" { "modifier_rabid" { "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_rabid_buff_speed_ring.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_rabid_buff.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" "ControlPointEntities" { "TARGET" "follow_overhead" "TARGET" "follow_overhead" "TARGET" "follow_overhead" } } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_move_speed" } } } } // Rewrite of Lone Druid Spirit Bear // Author: Noya // Date: 14.01.2015. // Notes: The unit spawned are taken directly from npc_units txt files, if you wish another unit change the unit_name value without the level number. // Bear doesn't show in the hero UI "lone_druid_spirit_bear_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "DisplayAdditionalHeroes" "1" "AbilityTextureName" "lone_druid_spirit_bear" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "180.0 160.0 140.0 120.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { // This Values are mostly for tooltips, the unit stats are not affected "01" { "var_type" "FIELD_INTEGER" "bear_hp" "1400 1800 2300 2700" } "02" { "var_type" "FIELD_INTEGER" "bear_regen_tooltip" "2 3 4 5" } "03" { "var_type" "FIELD_FLOAT" "bear_bat" "1.75 1.65 1.55 1.45" } "04" { "var_type" "FIELD_INTEGER" "bear_armor" "3 4 5 6" } "05" { "var_type" "FIELD_FLOAT" "backlash_damage" "10.0" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "particle" "particles/units/heroes/hero_lone_druid/lone_druid_bear_spawn.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" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/spirit_bear.lua" "Function" "SpiritBearLevel" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/spirit_bear.lua" "Function" "SpiritBearSpawn" "unit_name" "npc_dota_lone_druid_bear" } "FireSound" { "EffectName" "Hero_LoneDruid.SpiritBear.Cast" "Target" "CASTER" } } "Modifiers" { "modifier_spirit_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" "TARGET" "EffectName" "particles/units/heroes/hero_lone_druid/lone_druid_spirit_bear_death.vpcf" "EffectAttachType" "follow_origin" } "RunScript" { "ScriptFile" "heroes/hero_lone_druid/spirit_bear.lua" "Function" "SpiritBearDeath" } } } } } "lone_druid_spirit_bear_demolish_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "spell_resistance" "33" } "02" { "var_type" "FIELD_INTEGER" "bonus_building_damage" "40" } } } "lone_druid_spirit_bear_entangle_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "60" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "entangle_chance" "20" } "02" { "var_type" "FIELD_FLOAT" "hero_duration" "3.0" } "03" { "var_type" "FIELD_FLOAT" "creep_duration" "9.0" } } } "lone_druid_spirit_bear_return_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "return_damage_cooldown" "3" } } } // Rewrite of Lone Druid Synergy // Author: Noya // Date: 16.01.2015. // Note: This ability doesn't do anything by itself, it's just used by other abilities to get bonus from it and apply/remove modifiers. "lone_druid_synergy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "lone_druid_synergy" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bear_bonus_damage" "10 20 30 40" } "02" { "var_type" "FIELD_INTEGER" "bear_bonus_speed" "10 20 30 40" } "03" { "var_type" "FIELD_FLOAT" "rabid_duration_bonus" "10.0 20.0 30.0 40.0" } "04" { "var_type" "FIELD_INTEGER" "true_form_hp_bonus" "100 200 300 400" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/synergy.lua" "Function" "SynergyLevel" "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "unit_name" "npc_dota_lone_druid_bear" } } "Modifiers" { "modifier_bear_synergy" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bear_bonus_damage" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bear_bonus_speed" } } "modifier_true_form_synergy" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS" "%true_form_hp_bonus" } } } } "lone_druid_true_form_battle_cry_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_TYPE_ULTIMATE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "3" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 30.0 30.0" "AbilityDuration" "50.0 50.0 50.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "20 40 60" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 4 6" } "03" { "var_type" "FIELD_FLOAT" "cry_duration" "8.0 8.0 8.0" } "04" { "var_type" "FIELD_FLOAT" "range" "1000" } } } // Rewrite of Lone Druid True Form // Author: Noya // Date: 16.01.2015. // Notes: Armor is added as +Green because there is no way to currently add Base Armor. // NOTE2: Its important to include // SendToServerConsole("dota_combine_models 0") // SendToConsole("dota_combine_models 0") // in your addon, check barebones.lua in CaptureGameMode() to see how its done "lone_druid_true_form_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "lone_druid_true_form" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "base_attack_time" "1.5 1.5 1.5" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "4 6 8" } "03" { "var_type" "FIELD_INTEGER" "bonus_hp" "250 400 600" } "04" { "var_type" "FIELD_INTEGER" "speed_loss" "-45" } "05" { "var_type" "FIELD_FLOAT" "transformation_time" "1.933" } } "precache" { "particle" "particles/units/heroes/hero_lone_druid/lone_druid_true_form.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts" "model" "models/heroes/lone_druid/true_form.vmdl" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_true_form_transform" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_LoneDruid.TrueForm.Cast" "Target" "CASTER" } "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 } } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/true_form.lua" "Function" "LevelUpAbility" "ability_name" "lone_druid_true_form_druid_datadriven" } } "Modifiers" { "modifier_true_form_transform" { "IsHidden" "1" "Duration" "%transformation_time" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_true_form" "Target" "CASTER" } } } "modifier_true_form" { "IsHidden" "0" "Properties" { "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "%base_attack_time" "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" "MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_hp" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%speed_loss" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/true_form.lua" "Function" "TrueFormStart" "model" "models/heroes/lone_druid/true_form.vmdl" "sub_ability_name" "lone_druid_true_form_druid_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_lone_druid/true_form.lua" "Function" "HideWearables" } } } } } // Rewrite of Alchemist Unstable Concoction Throw (Sub-Ability) // Author: Noya // Date: 10.1.2015. // Notes: Used together with "lone_druid_true_form_datadriven", hero needs both abilities (this one starts hidden) // NOTE2: Its important to include // SendToServerConsole("dota_combine_models 0") // SendToConsole("dota_combine_models 0") // in your addon, check barebones.lua in CaptureGameMode() to see how its done "lone_druid_true_form_druid_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "lone_druid_true_form_druid" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "transformation_time" "1.933" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_druid_transform" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_LoneDruid.TrueForm.Recast" "Target" "CASTER" } "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 } } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_lone_druid/true_form.lua" "Function" "LevelUpAbility" "ability_name" "lone_druid_true_form_datadriven" } } "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" "heroes/hero_lone_druid/true_form.lua" "Function" "TrueFormEnd" "main_ability_name" "lone_druid_true_form_datadriven" "remove_modifier_name" "modifier_true_form" } "RunScript" { "ScriptFile" "heroes/hero_lone_druid/true_form.lua" "Function" "ShowWearables" } } } } } // Rewrite of the Luna Eclipse ability // Author: jacklarnes // Date: 03.04.2015. "luna_eclipse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "luna_eclipse" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_luna.vsndevts" "particle" "particles/units/heroes/hero_luna/luna_eclipse_impact.vpcf" "particle" "particles/units/heroes/hero_luna/luna_eclipse.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.6 0.6 0.6" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "160.0 150.0 140.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 200 250" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "675 675 675" } "02" { "var_type" "FIELD_FLOAT" "beam_interval" "0.6 0.6 0.6" } "03" { "var_type" "FIELD_INTEGER" "beams" "4 7 10" } "04" { "var_type" "FIELD_INTEGER" "hit_count" "4 4 4" } "05" { "var_type" "FIELD_FLOAT" "duration_tooltip" "1.8 3.6 5.4" } "06" { "var_type" "FIELD_INTEGER" "beams_scepter" "4 8 12" } "07" { "var_type" "FIELD_INTEGER" "hit_count_scepter" "4 8 12" } "08" { "var_type" "FIELD_FLOAT" "duration_tooltip_scepter" "1.8 4.2 6.6" } // Extra "09" { "var_type" "FIELD_FLOAT" "night_duration" "10" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Luna.Eclipse.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_luna/luna_eclipse.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_luna/eclipse.lua" "Function" "eclipse_start" } } } // Rewrite of the Luna Lucent Beam ability // Author: jacklarnes // Date: 03.04.2015. "luna_lucent_beam_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "luna_lucent_beam" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_luna.vsndevts" "particle" "particles/units/heroes/hero_luna/luna_lucent_beam.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.6 0.6 0.6 0.6" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6.0 6.0 6.0 6.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Mostly about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stun_duration" "0.6 0.6 0.6 0.6" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_luna/luna_lucent_beam.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" } } "FireSound" { "EffectName" "Hero_Luna.LucentBeam.Target" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_lucent_beam_datadriven" "Target" "TARGET" "Duration" "%stun_duration" } } "Modifiers" { "modifier_lucent_beam_datadriven" { "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Luna Lunar Blessing ability // Author: jacklarnes // Date: 03.04.2015. "luna_lunar_blessing_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "luna_lunar_blessing" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_luna/luna_ambient_lunar_blessing.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900 900 900 900" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "14 22 30 38" } "03" { "var_type" "FIELD_INTEGER" "bonus_night_vision" "1000 1000 1000 1000" } } "Modifiers" { "modifier_lunar_blessing_aura" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "EffectName" "particles/units/heroes/hero_luna/luna_ambient_lunar_blessing.vpcf" "EffectAttachType" "follow_origin" "Aura" "modifier_lunar_blessing_damage_effect" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Properties" { "MODIFIER_PROPERTY_BONUS_NIGHT_VISION" "%bonus_night_vision" } } "modifier_lunar_blessing_damage_effect" { "IsDebuff" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" } } } } // Rewrite of the Luna Moon Glaive ability // Author: jacklarnes, Pizzalol // Date: 29.09.2015. // NOTE: ------------------- THIS ABILITY REQUIRES luna_moon_glaive_dummy_datadriven TO WORK ---------------- "luna_moon_glaive_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "luna_moon_glaive" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_luna.vsndevts" "particle" "particles/units/heroes/hero_luna/luna_base_attack.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "range" "500 500 500 500" } "02" { "var_type" "FIELD_INTEGER" "bounces" "1 2 3 5" } "03" { "var_type" "FIELD_INTEGER" "damage_reduction_percent" "35 30 25 20" } } "Modifiers" { "modifier_moon_glaive" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_luna/moon_glaive.lua" "Function" "moon_glaive_start_create_dummy" } } } } } // Rewrite of the Luna Moon Glaive ability // Author: jacklarnes, Pizzalol // Date: 29.09.2015. // NOTE: ------------------- THIS ABILITY REQUIRES luna_moon_glaive_datadriven TO WORK ---------------- "luna_moon_glaive_dummy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_Luna.MoonGlaive.Impact" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_luna/moon_glaive.lua" "Function" "moon_glaive_bounce" } } "Modifiers" { "modifier_moon_glaive_dummy_unit" { "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" } } } } // Rewrite of the Lycan Feral Impulse // Author: chrislotix, Pizzalol // Date: 24.03.2015. "lycan_feral_impulse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "lycan_feral_impulse" // Casting "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900 900 900 900" } "02" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "15 20 25 30" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "15 20 25 30" } // Extra "04" { "var_type" "FIELD_FLOAT" "think_interval" "0.5" } } "Modifiers" { "modifier_feral_impulse_datadriven" { "Passive" "1" "OnCreated" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/feral_impulse.lua" "Function" "FeralImpulse" "modifier" "modifier_feral_impulse_unit_datadriven" } } } } "ThinkInterval" "%think_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/feral_impulse.lua" "Function" "FeralImpulse" "modifier" "modifier_feral_impulse_unit_datadriven" } } } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%bonus_damage" } } "modifier_feral_impulse_unit_datadriven" { "IsBuff" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%bonus_damage" } } } } // Rewrite of the Lycan Howl // Author: chrislotix, Pizzalol // Date: 24.03.2015. "lycan_howl_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityTextureName" "lycan_howl" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_howl_cast.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_howl_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50 45 40 35" "AbilityDuration" "10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15 20 25 30" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "howl_duration" "10.0" } "02" { "var_type" "FIELD_INTEGER" "hero_bonus_damage" "14 26 38 50" } "03" { "var_type" "FIELD_INTEGER" "unit_bonus_damage" "5 10 15 20" } // Extra "04" { "var_type" "FIELD_INTEGER" "aura_radius" "9000" } "05" { "var_type" "FIELD_FLOAT" "think_interval" "0.5" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lycan.Howl" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_howl_cast.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" } } "ApplyModifier" { "ModifierName" "modifier_howl_datadriven" "Target" "CASTER" "Duration" "%howl_duration" } } "Modifiers" { "modifier_howl_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Aura" "modifier_howl_hero_datadriven" "Aura_Radius" "%aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NONE" "Aura_ApplyToCaster" "1" "OnCreated" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%aura_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/howl.lua" "Function" "Howl" "modifier" "modifier_howl_unit_datadriven" } } } } "ThinkInterval" "%think_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%aura_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/howl.lua" "Function" "Howl" "modifier" "modifier_howl_unit_datadriven" } } } } } "modifier_howl_hero_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_lycan/lycan_howl_buff.vpcf" "EffectAttachType" "attach_attack" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%hero_bonus_damage" } } "modifier_howl_unit_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_lycan/lycan_howl_buff.vpcf" "EffectAttachType" "attach_attack" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%unit_bonus_damage" } } } } // Rewrite of the Lycan Shapeshift ability // Author: Pizzalol // Date: 26.09.2015. "lycan_shapeshift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "lycan_shapeshift" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_shapeshift_buff.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_shapeshift_cast.vpcf" "particle" "particles/units/heroes/hero_lycan/lycan_shapeshift_revert.vpcf" "model" "models/heroes/lycan/lycan_wolf.vmdl" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120.0 90.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "18.0 18.0 18.0" } "02" { "var_type" "FIELD_INTEGER" "speed" "650" } "03" { "var_type" "FIELD_INTEGER" "bonus_night_vision" "1000" } "04" { "var_type" "FIELD_INTEGER" "crit_chance" "30 30 30" } "05" { "var_type" "FIELD_INTEGER" "crit_damage" "170 170 170" } "06" { "var_type" "FIELD_FLOAT" "transformation_time" "1.5" } // Extra "07" { "var_type" "FIELD_FLOAT" "aura_interval" "0.1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lycan.Shapeshift.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_shapeshift_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_shapeshift_transform_datadriven" "Target" "CASTER" "Duration" "%transformation_time" } } "Modifiers" { "modifier_shapeshift_transform_datadriven" { "IsBuff" "1" "IsPurgable" "0" "ThinkInterval" "%transformation_time" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_shapeshift_datadriven" "Target" "TARGET" "Duration" "%duration" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_shapeshift_datadriven" { "IsBuff" "1" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_PERMANENT" "OnCreated" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/shapeshift.lua" "Function" "ShapeshiftHaste" } } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_shapeshift_buff.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_lycan/shapeshift.lua" "Function" "ShapeshiftStart" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_shapeshift_revert.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_DEAD" } } } "ThinkInterval" "%aura_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_lycan/shapeshift.lua" "Function" "ShapeshiftHaste" } } } } "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_shapeshift_crit_datadriven" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_LYCAN_CRIT" "OnSuccess" { "ApplyModifier" { "ModifierName" "modifier_shapeshift_crit_datadriven" "Target" "CASTER" } } } } "Properties" { "MODIFIER_PROPERTY_BONUS_NIGHT_VISION" "%bonus_night_vision" } } "modifier_shapeshift_crit_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnAttackLanded" // "%attack_damage" is set to the damage value before mitigation { "RemoveModifier" { "ModifierName" "modifier_shapeshift_crit_datadriven" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_damage" } } } } "lycan_summon_wolves_critical_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_chance" "30" } "02" { "var_type" "FIELD_INTEGER" "crit_damage" "170" } } } // Rewrite of the Lycan Summon Wolves // Author: chrislotix // Date: 15.01.2015. "lycan_summon_wolves_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityTextureName" "lycan_summon_wolves" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts" "particle" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 30.0 30.0 30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "145" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "wolf_index" "1 2 3 4" } "02" { "var_type" "FIELD_FLOAT" "wolf_duration" "55.0 55.0 55.0 55.0" } "03" { "var_type" "FIELD_FLOAT" "wolf_bat" "1.25 1.2 1.15 1.1" } "04" { "var_type" "FIELD_INTEGER" "wolf_damage" "18 29 37 46" } "05" { "var_type" "FIELD_INTEGER" "wolf_hp" "200 240 280 320" } "06" // Extra variables for "SpawnUnit" to decide which level of wolves will be used { "var_type" "FIELD_INTEGER" "wolf_1_count" "2 0 0 0" } "07" { "var_type" "FIELD_INTEGER" "wolf_2_count" "0 2 0 0" } "08" { "var_type" "FIELD_INTEGER" "wolf_3_count" "0 0 2 0" } "09" { "var_type" "FIELD_INTEGER" "wolf_4_count" "0 0 0 2" } "10" { "var_type" "FIELD_INTEGER" "spawn_distance" "150" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lycan.SummonWolves" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_summon_wolves_cast.vpcf" "EffectName" "start_at_customorigin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "KillWolves" } "SpawnUnit" { "UnitName" "npc_dota_lycan_wolf1" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "GetSummonPoints" "Target" "CASTER" "Count" "2" "distance" "%spawn_distance" } } "Duration" "%wolf_duration" "UnitCount" "%wolf_1_count / 2" "UnitLimit" "2" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_summon_wolves_datadriven" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_lycan_wolf2" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "GetSummonPoints" "Target" "CASTER" "Count" "2" "distance" "%spawn_distance" } } "Duration" "%wolf_duration" "UnitCount" "%wolf_2_count / 2" "UnitLimit" "2" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_summon_wolves_datadriven" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_lycan_wolf3" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "GetSummonPoints" "Target" "CASTER" "Count" "2" "distance" "%spawn_distance" } } "Duration" "%wolf_duration" "UnitCount" "%wolf_3_count / 2" "UnitLimit" "2" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_summon_wolves_datadriven" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_lycan_wolf4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "GetSummonPoints" "Target" "CASTER" "Count" "2" "distance" "%spawn_distance" } } "Duration" "%wolf_duration" "UnitCount" "%wolf_4_count / 2" "UnitLimit" "2" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_lycan/summon_wolves.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_summon_wolves_datadriven" "Target" "TARGET" "Duration" "%duration" } } } } "Modifiers" { "modifier_summon_wolves_datadriven" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_lycan/lycan_summon_wolves_spawn.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } } } } "lycan_summon_wolves_invisibility_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fade_time" "0.0 0.0 0.0" } "02" { "var_type" "FIELD_FLOAT" "fade_delay" "1.7" } } } "magnataur_empower_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "30 40 50 60" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Easy to spam // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "empower_duration" "40.0 40.0 40.0 40.0" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "20 30 40 50" } "03" { "var_type" "FIELD_INTEGER" "cleave_damage_pct" "20 30 40 50" } "04" { "var_type" "FIELD_INTEGER" "cleave_radius" "200" } } } "magnataur_reverse_polarity_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "magnataur_reverse_polarity" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" "AbilityCooldown" "120 110 100" "AbilityManaCost" "200 250 300" "AbilityCastRange" "410 410 410" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "pull_radius" "410" } "02" { "var_type" "FIELD_INTEGER" "polarity_damage" "50 125 200" } "03" { "var_type" "FIELD_FLOAT" "hero_stun_duration" "2.25 3.0 3.75" } "04" { "var_type" "FIELD_FLOAT" "creep_stun_duration" "3.0 4.0 5.0" } "05" { "var_type" "FIELD_FLOAT" "pull_duration" "0.0 0.0 0.0" } } } "magnataur_shockwave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "magnataur_shockwave" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1150" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 9.0 8.0 7.0" "AbilityDuration" "0.6875 0.6875 0.6875 0.6875" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 90 90 90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shock_speed" "1050" } "02" { "var_type" "FIELD_INTEGER" "shock_width" "150" } "03" { "var_type" "FIELD_INTEGER" "shock_distance" "1150" } "04" { "var_type" "FIELD_INTEGER" "shock_damage" "75 150 225 300" } } } "magnataur_skewer_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "magnataur_skewer" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 30.0 30.0 30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 80 80 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "skewer_speed" "950" } "02" { "var_type" "FIELD_INTEGER" "range" "750 900 1050 1200" } "03" { "var_type" "FIELD_INTEGER" "slow_pct" "40 40 40 40" } "04" { "var_type" "FIELD_INTEGER" "skewer_radius" "125" } "05" { "var_type" "FIELD_FLOAT" "slow_duration" "2.5" } "06" { "var_type" "FIELD_INTEGER" "skewer_damage" "70 140 210 280" } "07" { "var_type" "FIELD_INTEGER" "tree_radius" "200" } } } // Rewrite of the Medusa Mana Shield ability // Author: Pizzalol, Noya // Date: 04.03.2015. // NOTE: This is a POST DAMAGE REDUCTION Mana Shield "medusa_mana_shield_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "medusa_mana_shield" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_cast.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_end.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mana_shield_impact.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_mana" "1.6 1.9 2.2 2.5" } "02" { "var_type" "FIELD_FLOAT" "absorption_tooltip" "60" } } "OnToggleOn" { "FireSound" { "EffectName" "Hero_Medusa.ManaShield.On" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_mana_shield_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_mana_shield_datadriven" "Target" "CASTER" } } "OnToggleOff" { "FireSound" { "EffectName" "Hero_Medusa.ManaShield.Off" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_mana_shield_end.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_mana_shield_datadriven" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } "Modifiers" { "modifier_mana_shield_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "EffectName" "particles/units/heroes/hero_medusa/medusa_mana_shield.vpcf" "EffectAttachType" "follow_origin" "OnTakeDamage" // "%attack_damage" is set to the damage value after mitigation { "FireSound" { "EffectName" "Hero_Medusa.ManaShield.Proc" "Target" "UNIT" } "RunScript" { "ScriptFile" "heroes/hero_medusa/mana_shield.lua" "Function" "ManaShield" "Damage" "%attack_damage" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_medusa/mana_shield.lua" "Function" "ManaShieldHealth" } } } } } // Rewrite of the Medusa Mystic Snake ability // Author: Pizzalol // Date: 07.03.2015. // NOTE: Uses a global counter for all snakes cast by the same caster "medusa_mystic_snake_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "medusa_mystic_snake" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" "particle" "particles/units/heroes/hero_medusa/medusa_mystic_snake_cast.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mystic_snake_impact_return_front.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mystic_snake_projectile.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_mystic_snake_impact.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11.0 11.0 11.0 11.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140 150 160 170" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "475 475 475 475" } "02" { "var_type" "FIELD_INTEGER" "snake_jumps" "3 4 5 6" } "03" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25 0.25 0.25 0.25" } "04" { "var_type" "FIELD_INTEGER" "snake_damage" "80 120 160 200" } "05" { "var_type" "FIELD_INTEGER" "snake_mana_steal" "20 35 50 65" } "06" { "var_type" "FIELD_INTEGER" "snake_scale" "25" } "07" { "var_type" "FIELD_INTEGER" "initial_speed" "800" } "08" { "var_type" "FIELD_INTEGER" "return_speed" "800" } // Extra "09" { "var_type" "FIELD_INTEGER" "vision_radius" "100" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Medusa.MysticSnake.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_mystic_snake_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_medusa/mystic_snake.lua" "Function" "MysticSnakeInitialize" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_medusa/medusa_mystic_snake_projectile.vpcf" "Dodgeable" "0" "ProvidesVision" "1" "VisionRadius" "%vision_radius" "MoveSpeed" "%initial_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "heroes/hero_medusa/mystic_snake.lua" "Function" "MysticSnake" "sound_friendly" "Hero_Medusa.MysticSnake.Return" "sound_enemy" "Hero_Medusa.MysticSnake.Target" "mystic_snake_projectile" "particles/units/heroes/hero_medusa/medusa_mystic_snake_projectile.vpcf" "particle_impact_enemy" "particles/units/heroes/hero_medusa/medusa_mystic_snake_impact.vpcf" "particle_impact_friendly" "particles/units/heroes/hero_medusa/medusa_mystic_snake_impact_return_front.vpcf" } } } // Rewrite of the Medusa Split Shot ability // Author: Pizzalol // Date: 04.03.2015. "medusa_split_shot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL" "AbilityUnitTargetFlag" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "medusa_split_shot" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" "particle" "particles/units/heroes/hero_medusa/medusa_bow_split_shot_cast.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_base_attack.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_modifier" "-20" } "02" { "var_type" "FIELD_INTEGER" "damage_modifier_tooltip" "80" } "03" { "var_type" "FIELD_INTEGER" "arrow_count" "1 2 3 4" } "04" { "var_type" "FIELD_INTEGER" "total_arrow_count" "2 3 4 5" } "05" { "var_type" "FIELD_INTEGER" "range" "700" } "06" { "var_type" "FIELD_INTEGER" "projectile_speed" "1200" } } "OnToggleOn" { "FireEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_bow_split_shot_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_split_shot_datadriven" "Target" "CASTER" } } "OnToggleOff" { "FireEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_bow_split_shot_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_split_shot_datadriven" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_Medusa.AttackSplit" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_medusa/split_shot.lua" "Function" "SplitShotDamage" } } "Modifiers" { "modifier_split_shot_datadriven" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_medusa/split_shot.lua" "Function" "SplitShotLaunch" "split_shot_projectile" "particles/units/heroes/hero_medusa/medusa_base_attack.vpcf" } } "Properties" { "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "%damage_modifier" } } } } // Rewrite of the Medusa Stone Gaze ability // Author: Pizzalol // Date: 07.03.2015. "medusa_stone_gaze_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "medusa_stone_gaze" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts" "particle" "particles/units/heroes/hero_medusa/medusa_stone_gaze_active.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_stone_gaze_debuff.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_stone_gaze_facing.vpcf" "particle" "particles/units/heroes/hero_medusa/medusa_stone_gaze_debuff_stoned.vpcf" "particle" "particles/status_fx/status_effect_medusa_stone_gaze.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4" "AbilityCastRange" "1000 1000 1000" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90.0 90.0 90.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 200 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1000 1000 1000" } "02" { "var_type" "FIELD_FLOAT" "duration" "6.0 6.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "slow" "-50" } "04" { "var_type" "FIELD_FLOAT" "stone_duration" "3.0 3.0 3.0" } "05" { "var_type" "FIELD_FLOAT" "face_duration" "2.0 2.0 2.0" } "06" { "var_type" "FIELD_FLOAT" "vision_cone" "85" // 85 degree cone } "07" { "var_type" "FIELD_INTEGER" "bonus_physical_damage" "30 40 50" } // Extra "08" { "var_type" "FIELD_FLOAT" "bonus_magic_resist" "100" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Medusa.StoneGaze.Cast" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_stone_gaze_datadriven" "Target" "CASTER" "Duration" "%duration" } "RunScript" { "ScriptFile" "heroes/hero_medusa/stone_gaze.lua" "Function" "StoneGazeStart" } } "Modifiers" { "modifier_stone_gaze_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_stone_gaze_active.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "follow_hitloc" "TARGET" "follow_hitloc" } } } "ThinkInterval" "0.03" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_medusa/stone_gaze.lua" "Function" "StoneGaze" "modifier_slow" "modifier_stone_gaze_slow_datadriven" "modifier_facing" "modifier_stone_gaze_facing_datadriven" } } } } } "modifier_stone_gaze_slow_datadriven" { "IsDebuff" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_medusa/stone_gaze.lua" "Function" "StoneGazeSlow" "modifier_caster" "modifier_stone_gaze_datadriven" "modifier_target" "modifier_stone_gaze_slow_datadriven" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow" "MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE" "%slow" } } "modifier_stone_gaze_facing_datadriven" { "IsHidden" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_stone_gaze_debuff.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_stone_gaze_facing.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_medusa/medusa_stone_gaze_debuff_stoned.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_medusa/stone_gaze.lua" "Function" "StoneGazeFacing" "modifier_stone" "modifier_stone_gaze_stone_datadriven" } } } "modifier_stone_gaze_stone_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "StatusEffectName" "particles/status_fx/status_effect_medusa_stone_gaze.vpcf" "StatusEffectPriority" "10" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%bonus_magic_resist" "MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_PERCENTAGE" "%bonus_physical_damage" } } } } "meepo_divided_we_stand_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "DisplayAdditionalHeroes" "1" "LevelsBetweenUpgrades" "7" "RequiredLevel" "3" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "tooltip_clones" "1 2 3" } "02" { "var_type" "FIELD_INTEGER" "tooltip_share_percentage" "30" } "03" { "var_type" "FIELD_INTEGER" "tooltip_share_percentage_scepter" "100" } "04" { "var_type" "FIELD_FLOAT" "respawn" "0.1 0.2 0.3" } "05" { "var_type" "FIELD_INTEGER" "tooltip_respawn" "10 20 30" } } } "meepo_earthbind_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "meepo_earthbind" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500 750 1000 1250" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20 16 12 8" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "220" } "03" { "var_type" "FIELD_INTEGER" "speed" "857" } "04" { "var_type" "FIELD_INTEGER" "tooltip_range" "500 750 1000 1250" } } } "meepo_geostrike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityDamage" "7 14 21 28" "AbilityDuration" "2" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow" "-5 -10 -15 -20" } "02" { "var_type" "FIELD_FLOAT" "duration_tooltip" "2.0" } } } "meepo_poof_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "meepo_poof" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "1.5" "AbilityChannelTime" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12 10 8 6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80" "AbilityDamage" "80 100 120 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "375" } } } // Rewrite of the Mirana Sacred Arrow ability // Author: Pizzalol // Date: 26.09.2015. "mirana_arrow_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "mirana_arrow" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" "particle" "particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "3000" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "17.0" "AbilityDuration" "3.11 3.11 3.11 3.11" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 140 230 320" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "arrow_speed" "857.0" } "02" { "var_type" "FIELD_INTEGER" "arrow_width" "115" } "03" { "var_type" "FIELD_INTEGER" "arrow_range" "3000" } "04" { "var_type" "FIELD_INTEGER" "arrow_max_stunrange" "1500" } "05" { "var_type" "FIELD_FLOAT" "arrow_min_stun" "0.01" } "06" { "var_type" "FIELD_FLOAT" "arrow_max_stun" "5.0" } "07" { "var_type" "FIELD_INTEGER" "arrow_bonus_damage" "140" } "08" { "var_type" "FIELD_INTEGER" "arrow_vision" "650" } "09" { "var_type" "FIELD_INTEGER" "arrow_max_damagerange" "1500" } "10" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Mirana.ArrowCast" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf" "MoveSpeed" "%arrow_speed" "StartRadius" "%arrow_width" "StartPosition" "attach_origin" "EndRadius" "%arrow_width" "FixedDistance" "%arrow_range" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "0" "ProvidesVision" "1" "VisionRadius" "%arrow_vision" } "RunScript" { "ScriptFile" "heroes/hero_mirana/arrow.lua" "Function" "LaunchArrow" "Target" "POINT" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Mirana.ArrowImpact" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "RunScript" { "ScriptFile" "heroes/hero_mirana/arrow.lua" "Function" "ArrowHit" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_mirana/arrow.lua" "Function" "ArrowVision" } } "OnProjectileFinish" { "RunScript" { "ScriptFile" "heroes/hero_mirana/arrow.lua" "Function" "ArrowVision" } } } // Rewrite of the Mirana Moonlight Shadow ability // Author: Pizzalol // Date: 04.01.2015. // Changed: 11.01.2015. // Reason: Fixed radius to be global "mirana_invis_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "FightRecapLevel" "2" "AbilityTextureName" "mirana_invis" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_cast.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_moonlight_ray.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0 120.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fade_delay" "2.5 2.0 1.5" } "02" { "var_type" "FIELD_FLOAT" "duration" "15.0" } } "OnAbilityPhaseStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } } "OnSpellStart" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_moonlight_duration_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_moonlight_fade_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_ray.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } } "FireSound" { "EffectName" "Ability.MoonlightShadow" "Target" "CASTER" } } "Modifiers" { "modifier_moonlight_duration_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_mirana/mirana_moonlight_owner.vpcf" "EffectAttachType" "follow_overhead" "OnAttack" { "ApplyModifier" { "ModifierName" "modifier_moonlight_fade_datadriven" "Target" "ATTACKER" } } "OnAbilityExecuted" { "ApplyModifier" { "ModifierName" "modifier_moonlight_fade_datadriven" "Target" "UNIT" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_moonlight_fade_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "RemoveModifier" { "ModifierName" "modifier_moonlight_invis_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } } "modifier_moonlight_fade_datadriven" { "Duration" "%fade_delay" "OnCreated" { "RemoveModifier" { "ModifierName" "modifier_moonlight_invis_datadriven" "Target" "TARGET" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_moonlight_invis_datadriven" "Target" "TARGET" } } } "modifier_moonlight_invis_datadriven" { "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Mirana Leap ability // Author: Pizzalol // Date: 26.09.2015. "mirana_leap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityTextureName" "mirana_leap" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 26.0 22.0 18.0" "AbilityDuration" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40 35 30 20" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "leap_distance" "600 700 800 900" } "02" { "var_type" "FIELD_FLOAT" "leap_speed" "1600.0" } "03" { "var_type" "FIELD_FLOAT" "leap_acceleration" "7000.0" } "04" { "var_type" "FIELD_INTEGER" "leap_radius" "775" } "05" { "var_type" "FIELD_INTEGER" "leap_speedbonus" "4 8 12 16" } "06" { "var_type" "FIELD_INTEGER" "leap_speedbonus_as" "8 16 24 32" } "07" { "var_type" "FIELD_FLOAT" "leap_duration" "10.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Ability.Leap" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_mirana/leap.lua" "Function" "Leap" } "ApplyMotionController" // For this: gfycat.com/BraveHideousGiantschnauzer -> check: bit.ly/1KWulqA { "Target" "CASTER" "ScriptFile" "heroes/hero_mirana/leap.lua" "HorizontalControlFunction" "LeapHorizonal" "VerticalControlFunction" "LeapVertical" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%leap_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "ApplyModifier" { "ModifierName" "modifier_leap_datadriven" "Target" "TARGET" "Duration" "%leap_duration" } } } } "Modifiers" { "modifier_leap_datadriven" { "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%leap_speedbonus_as" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%leap_speedbonus" } } } } // Rewrite of the Mirana Starfall ability // Author: Pizzalol // Date: 04.01.2015. "mirana_starfall_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "mirana_starfall" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts" "particle" "particles/units/heroes/hero_mirana/mirana_starfall_attack.vpcf" "particle" "particles/units/heroes/hero_mirana/mirana_starfall_circle.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" "AbilityDuration" "10.0 10.0 10.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 120 140 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "starfall_radius" "625" } "02" { "var_type" "FIELD_INTEGER" "starfall_secondary_radius" "175" } "03" { "var_type" "FIELD_FLOAT" "starfall_delay" "0.57" } "04" { "var_type" "FIELD_FLOAT" "starfall_secondary_damage_pct" "0.75" } "05" { "var_type" "FIELD_INTEGER" "starfall_secondary_targets" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Ability.Starfall" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_starfall_circle.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%starfall_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_starfall_attack.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "DelayedAction" { "Delay" "%starfall_delay" "Action" { "FireSound" { "EffectName" "Ability.StarfallImpact" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } } } // Secondary starfall "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%starfall_secondary_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "MaxTargets" "%starfall_secondary_targets" "Random" "1" } "Action" { "DelayedAction" { "Delay" "%starfall_delay" "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_mirana/mirana_starfall_attack.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "DelayedAction" { "Delay" "%starfall_delay" "Action" { "FireSound" { "EffectName" "Ability.StarfallImpact" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage * %starfall_secondary_damage_pct" } } } } } } } } } "modifier_buyback_gold_penalty_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "modifier_illusion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "modifier_invulnerable_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "modifier_magicimmune_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "morphling_adaptive_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "morphling_adaptive_strike" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 700 800 900" "AbilityCastPoint" "0.25" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_base" "20.0 40.0 60.0 80.0" } "02" { "var_type" "FIELD_FLOAT" "damage_min" "0.25 0.25 0.25 0.25" } "03" { "var_type" "FIELD_FLOAT" "damage_max" "0.50 1.0 1.5 2.0" } "04" { "var_type" "FIELD_FLOAT" "stun_min" "0.25 0.25 0.25 0.25" } "05" { "var_type" "FIELD_FLOAT" "stun_max" "0.75 1.5 2.25 3.0" } "06" { "var_type" "FIELD_INTEGER" "knockback_min" "100" } "07" { "var_type" "FIELD_INTEGER" "knockback_max" "300" } "08" { "var_type" "FIELD_FLOAT" "range_tooltip" "600 700 800 900" } } } // Rewrite of Morphling's Morph (Agility) // Author: Rook // Date: January 28, 2015 "morphling_morph_agi_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityTextureName" "morphling_morph_agi" "FightRecapLevel" "1" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" "precache" { "particle" "particles/units/heroes/hero_morphling/morphling_morph_agi.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_morphling.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_cost_per_second" "30 30 30 30" } "02" { "var_type" "FIELD_INTEGER" "points_per_tick" "2 2 2 2" } "03" { "var_type" "FIELD_FLOAT" "shift_rate" "1.0 0.5 0.33 0.2" } "04" { "var_type" "FIELD_INTEGER" "bonus_agility" "3 4 5 6" } } "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_agi.lua" "Function" "morphling_morph_agi_datadriven_on_toggle_on" } } "OnToggleOff" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_agi.lua" "Function" "morphling_morph_agi_datadriven_on_toggle_off" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_agi.lua" "Function" "morphling_morph_agi_datadriven_on_upgrade" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_agi.lua" "Function" "morphling_morph_agi_datadriven_on_owner_died" } } "Modifiers" { "modifier_morphling_morph_agi_datadriven" { "Passive" "1" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%bonus_agility" } } "modifier_morphling_morph_agi_datadriven_toggled_on" { "Passive" "0" "IsHidden" "0" "EffectName" "particles/units/heroes/hero_morphling/morphling_morph_agi.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%shift_rate" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_agi.lua" "Function" "modifier_morphling_morph_agi_datadriven_on_interval_think" "PointsPerTick" "%points_per_tick" "ManaCostPerSecond" "%mana_cost_per_second" "ShiftRate" "%shift_rate" } } } } } "morphling_morph_replicate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150" "AbilityCastPoint" "0.25" } // Rewrite of Morphling's Morph (Strength) // Author: Rook // Date: January 28, 2015 "morphling_morph_str_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityTextureName" "morphling_morph_str" "FightRecapLevel" "1" "AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" "precache" { "particle" "particles/units/heroes/hero_morphling/morphling_morph_str.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_morphling.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_cost_per_second" "30 30 30 30" } "02" { "var_type" "FIELD_INTEGER" "points_per_tick" "2 2 2 2" } "03" { "var_type" "FIELD_FLOAT" "shift_rate" "1.0 0.5 0.33 0.2" } "04" { "var_type" "FIELD_INTEGER" "bonus_strength" "3 4 5 6" } } "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_str.lua" "Function" "morphling_morph_str_datadriven_on_toggle_on" } } "OnToggleOff" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_str.lua" "Function" "morphling_morph_str_datadriven_on_toggle_off" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_str.lua" "Function" "morphling_morph_str_datadriven_on_upgrade" } } "OnOwnerDied" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_str.lua" "Function" "morphling_morph_str_datadriven_on_owner_died" } } "Modifiers" { "modifier_morphling_morph_str_datadriven" { "Passive" "1" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS" "%bonus_strength" } } "modifier_morphling_morph_str_datadriven_toggled_on" { "Passive" "0" "IsHidden" "0" "EffectName" "particles/units/heroes/hero_morphling/morphling_morph_str.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%shift_rate" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_morphling/morph_str.lua" "Function" "modifier_morphling_morph_str_datadriven_on_interval_think" "PointsPerTick" "%points_per_tick" "ManaCostPerSecond" "%mana_cost_per_second" "ShiftRate" "%shift_rate" } } } } } "morphling_replicate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700 1100 1500" "AbilityCastPoint" "0.25" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0 80.0 80.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "30.0 45.0 60.0" } "02" { "var_type" "FIELD_FLOAT" "illusion_damage_out_pct" "-50 -50 -50" } "03" { "var_type" "FIELD_FLOAT" "tooltip_illusion_damage_out_pct" "50 50 50" } "04" { "var_type" "FIELD_INTEGER" "illusion_incoming_dmg_pct_tooltip" "100 100 100" } "05" { "var_type" "FIELD_INTEGER" "illusion_damage_in_pct" "0 0 0" } "06" { "var_type" "FIELD_INTEGER" "tooltip_cast_range" "700 1100 1500" } } } "morphling_waveform_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "morphling_waveform" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.25" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11.0 11.0 11.0 11.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 250 325" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140 155 160 165" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed" "1250" } "02" { "var_type" "FIELD_INTEGER" "width" "200" } } } "naga_siren_ensnare_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "naga_siren_ensnare" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.65" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0 14.0 14.0 14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "650 650 650 650" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.0 3.0 4.0 5.0" } "02" { "var_type" "FIELD_INTEGER" "net_speed" "1500 1500 1500 1500" } "03" { "var_type" "FIELD_INTEGER" "fake_ensnare_distance" "900 900 900 900" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" "particle" "particles/units/heroes/hero_siren/siren_net.vpcf" "particle" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/ensnare.lua" "Function" "Ensnare_PlayFakeAnimation" "Target" "TARGET" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_siren/siren_net_projectile.vpcf" "Dodgeable" "1" "ProvidesVision" "1" "VisionRadius" "0" "MoveSpeed" "%net_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_NagaSiren.Ensnare.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_naga_siren/ensnare.lua" "Function" "Ensnare_CastFakeNets" "Target" "TARGET" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_NagaSiren.Ensnare.Target" "Target" "TARGET" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_ensnare_datadriven" } } "Modifiers" { "modifier_ensnare_datadriven" { "IsHidden" "0" "IsDebuff" "1" "IsPurgable" "0" "Duration" "%duration" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" } "EffectName" "particles/units/heroes/hero_siren/siren_net.vpcf" "EffectAttachType" "follow_origin" } "modifier_ensnare_fake_datadriven" { "IsHidden" "1" // "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_2" "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_1" } } } "naga_siren_mirror_image_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityTextureName" "naga_siren_mirror_image" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.65" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0 40.0 40.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 80 90 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "illusion_duration" "30.0 30.0 30.0 30.0" } "02" { "var_type" "FIELD_INTEGER" "outgoing_damage" "-80 -75 -70 -65" } "03" { "var_type" "FIELD_INTEGER" "outgoing_damage_tooltip" "20 25 30 35" } "04" { "var_type" "FIELD_INTEGER" "incoming_damage" "500 400 300 200" } "05" { "var_type" "FIELD_INTEGER" "tooltip_incoming_damage_total_pct" "600 500 400 300" } "06" { "var_type" "FIELD_INTEGER" "images_count" "3 3 3 3" } "07" { "var_type" "FIELD_FLOAT" "invuln_duration" "0.3" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" "particle" "particles/units/heroes/hero_siren/naga_siren_mirror_image.vpcf" } "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" "Hero_NagaSiren.MirrorImage" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/mirror_image.lua" "Function" "MirrorImage" } } } } } "naga_siren_rip_tide_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "naga_siren_rip_tide" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "130 160 190 220" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_reduction" "-2 -3 -4 -5" } "02" { "var_type" "FIELD_INTEGER" "radius" "320" } "03" { "var_type" "FIELD_FLOAT" "duration" "8.0 8.0 8.0 8.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" "particle" "particles/units/heroes/hero_siren/naga_siren_riptide.vpcf" "particle" "particles/units/heroes/hero_siren/naga_siren_riptide_debuff.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/rip_tide.lua" "Function" "RipTide" } } "Modifiers" { "modifier_rip_tide_dummy_datadriven" { "IsHidden" "1" "OnCreated" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Type" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/rip_tide.lua" "Function" "RipTide_MarkAsVictim" } } } } } "modifier_rip_tide_datadriven" { "IsHidden" "0" "IsDebuff" "1" "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } } } } "naga_siren_song_of_the_siren_cancel_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "MaxLevel" "1" "AbilityTextureName" "naga_siren_song_of_the_siren_cancel" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.0 1.0 1.0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/song_of_the_siren.lua" "Function" "CancelSinging" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_song_of_the_siren_caster_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_song_of_the_siren_aura_datadriven" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_siren/naga_siren_siren_song_end.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/song_of_the_siren.lua" "Function" "LevelUpAbility" "ability_name" "naga_siren_song_of_the_siren_datadriven" } } } "naga_siren_song_of_the_siren_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "naga_siren_song_of_the_siren" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.8" "AbilityCastRange" "1250 1250 1250" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "180.0 120.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1250 1250 1250" } "02" { "var_type" "FIELD_FLOAT" "duration" "7.0 7.0 7.0" } "03" { "var_type" "FIELD_FLOAT" "animation_rate" "0.55 0.55 0.55" } // Extra variables "04" { "var_type" "FIELD_FLOAT" "linger_duration" "0.5 0.5 0.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_naga_siren.vsndevts" "particle" "particles/units/heroes/hero_siren/naga_siren_siren_song_cast.vpcf" "particle" "particles/units/heroes/hero_siren/naga_siren_siren_song_end.vpcf" "particle" "particles/units/heroes/hero_siren/naga_siren_song_aura.vpcf" "particle" "particles/units/heroes/hero_siren/naga_siren_song_debuff.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/song_of_the_siren.lua" "Function" "StartSinging" "sub_ability_name" "naga_siren_song_of_the_siren_cancel_datadriven" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_siren/naga_siren_siren_song_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_song_of_the_siren_caster_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_song_of_the_siren_aura_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/song_of_the_siren.lua" "Function" "LevelUpAbility" "ability_name" "naga_siren_song_of_the_siren_cancel_datadriven" } } "Modifiers" { "modifier_song_of_the_siren_caster_datadriven" { "IsBuff" "1" "Duration" "%duration" "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_naga_siren/song_of_the_siren.lua" "Function" "EndSinging" "sub_ability_name" "naga_siren_song_of_the_siren_cancel_datadriven" } } "EffectName" "particles/units/heroes/hero_siren/naga_siren_song_aura.vpcf" "EffectAttachType" "attach_mouth" // "EffectAttachType" "follow_overhead" // If the caster has no attach_mouth bone. "EffectRadius" "%radius" } "modifier_song_of_the_siren_aura_datadriven" { "IsHidden" "1" "Duration" "%duration" "Aura" "modifier_song_of_the_siren_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_MECHANICAL" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "modifier_song_of_the_siren_datadriven" { "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "IsDebuff" "1" "OnCreated" { "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_song_of_the_siren_linger_datadriven" } } "OnDestroy" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_song_of_the_siren_linger_datadriven" } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE" "%animation_rate" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/units/heroes/hero_siren/naga_siren_song_debuff.vpcf" "EffectAttachType" "follow_origin" } "modifier_song_of_the_siren_linger_datadriven" { "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "IsHidden" "0" "IsDebuff" "1" "Duration" "%linger_duration" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE" "%animation_rate" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/units/heroes/hero_siren/naga_siren_song_debuff.vpcf" "EffectAttachType" "follow_origin" } } } // Rewrite of the Necrophos Death Pulse ability // Author: Pizzalol // Date: 05.01.2015. // Game version: 6.84 "necrolyte_death_pulse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "necrolyte_death_pulse" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_necrolyte.vsndevts" "particle" "particles/units/heroes/hero_necrolyte/necrolyte_pulse_enemy.vpcf" "particle" "particles/units/heroes/hero_necrolyte/necrolyte_pulse_friend.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 7.0 6.0 5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 125 200 275" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 145 165 185" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "area_of_effect" "475" } "02" { "var_type" "FIELD_INTEGER" "heal" "70 90 110 130" } "03" { "var_type" "FIELD_INTEGER" "projectile_speed" "400" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Necrolyte.DeathPulse" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%area_of_effect" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_necrolyte/necrolyte_pulse_enemy.vpcf" "Dodgeable" "0" "ProvidesVision" "0" //"VisionRadius" "300" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_HITLOCATION" } } } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%area_of_effect" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_necrolyte/necrolyte_pulse_friend.vpcf" "Dodgeable" "0" "ProvidesVision" "0" //"VisionRadius" "300" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_HITLOCATION" } } } } "OnProjectileHitUnit" { "Damage" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "Heal" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" } "HealAmount" "%heal" } } } // Rewrite of the Necrophos Heartstopper Aura ability // Author: Pizzalol // Date: 11.07.2015. // Game version: 6.84 "necrolyte_heartstopper_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "necrolyte_heartstopper_aura" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "aura_radius" "1200" // If you change this, also change the AbilityCastRange above } "02" { "var_type" "FIELD_FLOAT" "aura_damage" "-0.6 -0.9 -1.2 -1.5" } "03" { "var_type" "FIELD_FLOAT" "aura_damage_interval" "0.2" } } "Modifiers" { "modifier_heartstopper_aura_datadriven" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_heartstopper_debuff_datadriven" "Aura_Radius" "%aura_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_heartstopper_debuff_datadriven" { "IsDebuff" "1" "IsHidden" "1" "ThinkInterval" "%aura_damage_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_necrolyte/heartstopper_aura.lua" "Function" "HeartstopperAura" "visibility_modifier" "modifier_heartstopper_debuff_visibility" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_heartstopper_debuff_visibility" "Target" "TARGET" } } } "modifier_heartstopper_debuff_visibility" { "IsDebuff" "1" "IsHidden" "0" "IsPurgable" "0" "Passive" "0" } } } // Rewrite of the Necrophos Reapers Scythe ability // Author: Pizzalol // Date: 06.01.2015. // Game version: 6.84 "necrolyte_reapers_scythe_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "necrolyte_reapers_scythe" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_necrolyte.vsndevts" "particle" "particles/units/heroes/hero_necrolyte/necrolyte_scythe.vpcf" "particle" "particles/units/heroes/hero_necrolyte/necrolyte_scythe_model.vpcf" "particle" "particles/units/heroes/hero_necrolyte/necrolyte_scythe_orig.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "100 85 70" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "175 340 500" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_health" "0.4 0.6 0.9" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5 1.5 1.5" } "03" { "var_type" "FIELD_INTEGER" "mana_cost_scepter" "150 340 500" } "04" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "70" } "05" { "var_type" "FIELD_FLOAT" "damage_per_health_scepter" "0.6 0.9 1.2" } "06" { "var_type" "FIELD_FLOAT" "respawn" "0.0" } "07" { "var_type" "FIELD_INTEGER" "respawn_constant" "30" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_reapers_scythe_datadriven" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "FireSound" { "EffectName" "Hero_Necrolyte.ReapersScythe.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Necrolyte.ReapersScythe.Target" "Target" "TARGET" } "DelayedAction" { "Delay" "%stun_duration" "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_necrolyte/necrolyte_scythe_orig.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "follow_origin" "TARGET" "follow_origin" } } "RunScript" { "ScriptFile" "heroes/hero_necrolyte/reapers_scythe.lua" "Function" "ReapersScythe" } } } } "Modifiers" { "modifier_reapers_scythe_datadriven" { "IsDebuff" "1" "Duration" "%stun_duration" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "DelayedAction" { // Scythe animation has a 0.7 sec travel time "Delay" "%stun_duration - 0.7" "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_necrolyte/necrolyte_scythe_model.vpcf" "EffectAttachType" "follow_origin" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "follow_origin" } } } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_necrolyte/necrolyte_scythe.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Necrophos Sadist ability // Author: Pizzalol // Date: 11.07.2015. // Game version: 6.84 "necrolyte_sadist_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "necrolyte_sadist" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_regen" "2 4 6 10" } "02" { "var_type" "FIELD_INTEGER" "hero_multiplier" "10" // Only used for the stack count } "03" { "var_type" "FIELD_INTEGER" "health_regen" "1 2 3 4" } "04" { "var_type" "FIELD_FLOAT" "regen_duration" "6.0" } } "Modifiers" { "modifier_sadist_datadriven" { "Passive" "1" "IsHidden" "1" "OnKill" { "ApplyModifier" { "ModifierName" "modifier_sadist_regen_datadriven" "Target" "CASTER" } } "OnHeroKilled" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_necrolyte/sadist.lua" "Function" "ApplySadistHero" "modifier" "modifier_sadist_regen_datadriven" } } } // Stack modifier "modifier_sadist_buff_datadriven" { "IsBuff" "1" "Duration" "%regen_duration" "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT" "%mana_regen" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%health_regen" } } "modifier_sadist_regen_datadriven" { "Duration" "%regen_duration" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_necrolyte/sadist.lua" "Function" "ApplySadist" "stack_modifier" "modifier_sadist_buff_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_necrolyte/sadist.lua" "Function" "RemoveSadist" "stack_modifier" "modifier_sadist_buff_datadriven" } } } } } "necronomicon_archer_aoe_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "speed_bonus" "3 6 9" } } } "necronomicon_archer_mana_burn_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 20.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "burn_amount" "125 175 225" } } } "necronomicon_warrior_last_will_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "explosion" "550 675 800" } } } "necronomicon_warrior_mana_burn_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "burn_amount" "25 50 75" } "02" { "var_type" "FIELD_INTEGER" "burn_damage_conversion" "60" } } } "necronomicon_warrior_sight_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1000" } } } "neutral_spell_immunity_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" } // Rewrite of Nevermore Presence of the Dark Lord // Author: Noya // Date: April 5, 2015 "nevermore_dark_lord_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "OnCastbar" "0" "AbilityTextureName" "nevermore_dark_lord" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "presence_armor_reduction" "-3 -4 -5 -6" } "02" { "var_type" "FIELD_INTEGER" "presence_radius" "900" } } "Modifiers" { "modifier_dark_lord" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_dark_lord_presence" "Aura_Radius" "%presence_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" //mechanic? "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NONE" //immune? } "modifier_dark_lord_presence" { "IsHidden" "0" //hidden? "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%presence_armor_reduction" } } } } // Rewrite of Nevermore Necromastery // Author: Noya // Date: April 5, 2015 "nevermore_necromastery_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "OnCastbar" "0" "AbilityTextureName" "nevermore_necromastery" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "necromastery_damage_per_soul" "2" } "02" { "var_type" "FIELD_INTEGER" "necromastery_max_souls" "15 22 29 36" } "03" { "var_type" "FIELD_FLOAT" "necromastery_soul_release" "0.5" } "04" { "var_type" "FIELD_INTEGER" "necromastery_souls_hero_bonus" "11" } } "precache" { "particle" "particles/units/heroes/hero_nevermore/nevermore_souls.vpcf" "particle" "particles/units/heroes/hero_nevermore/nevermore_necro_souls.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts" } "OnOwnerDied" { "RunScript" { "ScriptFile" "heroes/hero_nevermore/necromastery.lua" "Function" "NecromasteryDeath" "modifier" "modifier_necromastery" } } "Modifiers" { "modifier_soul_collector" { "Passive" "1" "IsHidden" "1" "EffectName" "particle_name" "EffectAttachType" "follow_origin" "OnKill" { "FireEffect" { "EffectName" "particles/units/heroes/hero_nevermore/nevermore_necro_souls.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" //DEADFLAG? } "RunScript" { "ScriptFile" "heroes/hero_nevermore/necromastery.lua" "Function" "NecromasteryStack" "modifier" "modifier_necromastery" } } } "modifier_necromastery" { "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE | MODIFIER_ATTRIBUTE_PERMANENT" "EffectName" "particles/units/heroes/hero_nevermore/nevermore_souls.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%necromastery_damage_per_soul" } } } } "nevermore_requiem_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "nevermore_requiem" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "1.67 1.67 1.67" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120.0 110.0 100.0" "AbilityDuration" "5.0 5.0 5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 120 160" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 175 200" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "requiem_radius" "975 1000 1025" } "02" { "var_type" "FIELD_INTEGER" "requiem_reduction_ms" "-25" } "03" { "var_type" "FIELD_INTEGER" "requiem_slow_duration" "5.0" } "04" { "var_type" "FIELD_INTEGER" "requiem_reduction_damage" "-50" } "05" { "var_type" "FIELD_INTEGER" "requiem_reduction_tooltip" "-50" } "06" { "var_type" "FIELD_INTEGER" "requiem_reduction_radius" "700 700 700" } "07" { "var_type" "FIELD_INTEGER" "requiem_soul_conversion" "2 2 2" } "08" { "var_type" "FIELD_INTEGER" "requiem_line_width_start" "75 100 125" } "09" { "var_type" "FIELD_INTEGER" "requiem_line_width_end" "400 425 450" } "10" { "var_type" "FIELD_INTEGER" "requiem_line_speed" "700 700 700" } "11" { "var_type" "FIELD_FLOAT" "soul_death_release" "0.5" } } } // Rewrite of Nevermore Shadowraze 1 // Author: Noya // Date: April 5, 2015 "nevermore_shadowraze1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nevermore_shadowraze1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.67 0.67 0.67 0.67" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shadowraze_radius" "250" } "02" { "var_type" "FIELD_INTEGER" "shadowraze_range" "200" } "03" { "var_type" "FIELD_INTEGER" "shadowraze_cooldown" "3" } } "precache" { "particle" "particles/units/heroes/hero_nevermore/nevermore_shadowraze.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts" } "OnSpellStart" { //TODO: FireSound and Particle "Damage" { "Target" { "Center" "CASTER" "Radius" "%shadowraze_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_nevermore/shadowraze.lua" "Function" "ShadowrazePoint" "Target" "CASTER" "Count" "1" "distance" "%shadowraze_range" } } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } // Rewrite of Nevermore Shadowraze 2 // Author: Noya // Date: April 5, 2015 "nevermore_shadowraze2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "OnLearnbar" "0" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nevermore_shadowraze2" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.67 0.67 0.67 0.67" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shadowraze_radius" "250" } "02" { "var_type" "FIELD_INTEGER" "shadowraze_range" "450" } "03" { "var_type" "FIELD_INTEGER" "shadowraze_cooldown" "3" } } } // Rewrite of Nevermore Shadowraze 3 // Author: Noya // Date: April 5, 2015 "nevermore_shadowraze3_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "OnLearnbar" "0" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nevermore_shadowraze3" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.67 0.67 0.67 0.67" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shadowraze_radius" "250" } "02" { "var_type" "FIELD_INTEGER" "shadowraze_range" "700" } "03" { "var_type" "FIELD_INTEGER" "shadowraze_cooldown" "3" } } } // Rewrite of the Nightstalker Crippling Fear ability // Author: Pizzalol // Date: 11.01.2015. "night_stalker_crippling_fear_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "FightRecapLevel" "1" "AbilityTextureName" "night_stalker_crippling_fear" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCooldown" "12 12 12 12" "AbilityManaCost" "90 90 90 90" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nightstalker.vsndevts" "particle" "particles/units/heroes/hero_night_stalker/nightstalker_crippling_fear.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration_day" "3.0 3.0 3.0 3.0" } "02" { "var_type" "FIELD_FLOAT" "duration_night" "5.0 6.0 7.0 8.0" } "03" { "var_type" "FIELD_INTEGER" "miss_rate_day" "10 10 10 10" } "04" { "var_type" "FIELD_INTEGER" "miss_rate_night" "50" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Nightstalker.Trickling_Fear" "Target" "TARGET" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/crippling_fear.lua" "Function" "CripplingFear" "modifier_day" "modifier_crippling_fear_day_datadriven" "modifier_night" "modifier_crippling_fear_night_datadriven" } } "Modifiers" { "modifier_crippling_fear_day_datadriven" { "Duration" "%duration_day" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_crippling_fear.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_rate_day" } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_crippling_fear_night_datadriven" { "Duration" "%duration_night" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_crippling_fear.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_rate_night" } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Nightstalker Darkness ability // Author: Pizzalol // Date: 11.01.2015. // NOTE: Darkness is not global for now "night_stalker_darkness_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "night_stalker_darkness" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" "AbilityCooldown" "180 150 120" "AbilityManaCost" "0 0 0" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nightstalker.vsndevts" "particle" "particles/units/heroes/hero_night_stalker/nightstalker_ulti.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0 60.0 80.0" } "02" { "var_type" "FIELD_INTEGER" "blind_percentage" "-25" } // Using a value now, need to change it to GLOBAL once its fixed "03" { "var_type" "FIELD_FLOAT" "radius" "12000" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Nightstalker.Darkness" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_ulti.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_darkness_aura_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/darkness.lua" "Function" "Darkness" } } "Modifiers" { "modifier_darkness_aura_datadriven" { "Duration" "%duration" "Attributes" "MODIFIER_ATTRIBUTE_PERMANENT" "Aura" "modifier_darkness_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_ALL" } "modifier_darkness_datadriven" { "IsDebuff" "1" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/darkness.lua" "Function" "ReduceVision" } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/darkness.lua" "Function" "RevertVision" } } } } } // Rewrite of the Nightstalker Hunter In The Night ability // Author: Pizzalol // Date: 11.01.2015. // NOTE: Nightstalker wont swap models with this passive "night_stalker_hunter_in_the_night_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "night_stalker_hunter_in_the_night" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_night_stalker/nightstalker_night_buff.vpcf" "particle" "particles/units/heroes/hero_night_stalker/nightstalker_change.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement_speed_pct_night" "20 25 30 35" } "02" { "var_type" "FIELD_INTEGER" "bonus_attack_speed_night" "45 60 75 90" } } "Modifiers" { "modifier_hunter_in_the_night_datadriven" { "Passive" "1" "IsHidden" "1" "AllowIllusionDuplicate" "1" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/hunter_in_the_night.lua" "Function" "HunterInTheNight" "modifier" "modifier_hunter_in_the_night_buff_datadriven" } } } "modifier_hunter_in_the_night_buff_datadriven" { "IsHidden" "1" "AllowIllusionDuplicate" "1" "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_night_buff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_change.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_change.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed_pct_night" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed_night" } } } } // Rewrite of the Nightstalker Void ability // Author: Pizzalol // Date: 10.01.2015. "night_stalker_void_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "night_stalker_void" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "525" "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCooldown" "8 8 8 8" "AbilityManaCost" "80 90 100 110" "AbilityDamage" "90 160 255 335" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nightstalker.vsndevts" "particle" "particles/units/heroes/hero_night_stalker/nightstalker_void.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // applies 2 modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration_day" "2.0 2.0 2.0 2.0" } "02" { "var_type" "FIELD_FLOAT" "duration_night" "4.0 4.0 4.0 4.0" } "03" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-50 -50 -50 -50" } "04" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-35 -35 -35 -35" } // Extra "05" { "var_type" "FIELD_FLOAT" "mini_stun" "0.1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Nightstalker.Void" "Target" "TARGET" } "Stun" { "Target" "TARGET" "Duration" "%mini_stun" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_night_stalker/void.lua" "Function" "Void" "modifier" "modifier_void_datadriven" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } "Modifiers" { "modifier_void_datadriven" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_night_stalker/nightstalker_void.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed_slow" } } } } "nyx_assassin_impale_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nyx_assassin_impale" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 115 135 155" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 140 200 260" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "width" "125 125 125 125" } "02" { "var_type" "FIELD_FLOAT" "duration" "1.27 1.77 2.27 2.77" } "03" { "var_type" "FIELD_INTEGER" "length" "700" } "04" { "var_type" "FIELD_INTEGER" "speed" "1600 1600 1600 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" "FireSound" { "Target" "TARGET" "EffectName" "Hero_NyxAssassin.Impale.Target" } "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_knockback" } "Knockback" { "Target" "TARGET" "Center" "CASTER" "Distance" "0" "Duration" "%air_time" "Height" "200" "IsFixedDistance" "1" } "Stun" { "Target" "TARGET" "Duration" "%duration" } "DelayedAction" { "Delay" "%air_time" "Action" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_NyxAssassin.Impale.TargetLand" } "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } } } } } "nyx_assassin_mana_burn_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nyx_assassin_mana_burn" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "28.0 20.0 12.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "float_multiplier" "3.5 4 4.5 5" } } // Data drive //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_mana_burn_msg.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_nyx_assassin/mana_burn.lua" "Function" "mana_burn_function" } } } // Need to fix attachment point for particles/units/heroes/hero_nyx_assassin/nyx_assassin_spiked_carapace_hit.vpcf "nyx_assassin_spiked_carapace_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "nyx_assassin_spiked_carapace" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "23 20 17 14" "AbilityCastPoint" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40 40 40 40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "reflect_duration" "4" // 2.25" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "3" // 0.6 1.2 1.8 2.4" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "0" } "04" { "var_type" "FIELD_INTEGER" "bonus_armor" "0" } "05" { "var_type" "FIELD_INTEGER" "bonus_intellect" "0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_stunned.vpcf" "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_spiked_carapace.vpcf" "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_spiked_carapace_hit.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_nyx_assassin/spiked_carapace.lua" "Function" "spiked_carapace_init" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_spiked_carapace_buff_datadriven" } } "Modifiers" { "modifier_spiked_carapace_buff_datadriven" { "IsBuff" "0" "IsPurgable" "0" "Duration" "%reflect_duration" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_spiked_carapace.vpcf" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_nyx_assassin/spiked_carapace.lua" "Function" "spiked_carapace_reflect" "DamageTaken" "%attack_damage" } } } "modifier_spiked_carapaced_stun_datadriven" { "IsDebuff" "1" "Duration" "%stun_duration" "OverrideAnimation" "ACT_DOTA_DISABLED" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_spiked_carapace_hit.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "02" "%stun_duration %stun_duration %stun_duration" } } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "nyx_assassin_vendetta_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "nyx_assassin_vendetta" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "70.0 60.0 50.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "160 210 260" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "20.0 35.0 50.0" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "0.0" } "03" { "var_type" "FIELD_INTEGER" "movement_speed" "16 18 20" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "250 400 550" } "05" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "70 60 50" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_nyx_assassin.vsndevts" "particle" "particles/status_fx/status_effect_base.vpcf" "particle" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_vendetta_start.vpcf" } "OnSpellStart" { "DelayedAction" { "Delay" "%fade_time" "Action" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_NyxAssassin.Vendetta" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_vendetta_buff_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" "Duration" "%duration" } } } } "Modifiers" { "modifier_vendetta_buff_datadriven" { "Duration" "%duration" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_nyx_assassin/nyx_assassin_vendetta_start.vpcf" "EffectAttachType" "start_at_origin" } } "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_nyx_assassin/vendetta.lua" "Function" "vendetta_attack" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed" } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Obsidian Destroyer Arcane Orb // Author: chrislotix // Edit: YOLOSPAGHETTI // Date: 02.02.2016 "obsidian_destroyer_arcane_orb_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "obsidian_destroyer_arcane_orb" "AbilityCastRange" "450" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_obsidian_destroyer.vsndevts" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_arcane_orb.vpcf" } // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_pool_damage_pct" "6 7 8 9" } "02" { "var_type" "FIELD_INTEGER" "illusion_damage" "100 200 300 400" } "03" { "var_type" "FIELD_INTEGER" "int_gain" "2 3 4 5" } "04" { "var_type" "FIELD_INTEGER" "int_steal" "-2 -3 -4 -5" } "05" { "var_type" "FIELD_INTEGER" "steal_duration" "50" } } "OnUpgrade" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/arcane_orb.lua" "Function" "LevelTime" } } "Modifiers" { "modifier_arcane_orb_datadriven" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_arcane_orb.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_ObsidianDestroyer.ArcaneOrb" "Target" "TARGET" } } "OnOrbImpact" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/arcane_orb.lua" "Function" "ArcaneOrb" "Target" "TARGET" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_arcane_orb_int_steal_target_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_arcane_orb_int_steal_datadriven" } } } "modifier_arcane_orb_int_steal_target_datadriven" { "Duration" "%steal_duration" "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/arcane_orb.lua" "Function" "AddStacks" } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/arcane_orb.lua" "Function" "RemoveStacks" } } "Properties" { "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%int_steal" } } "modifier_arcane_orb_int_steal_datadriven" { "Duration" "%steal_duration" "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%int_gain" } } //Aesthetic Stack Modifiers "modifier_arcane_orb_status_target" { "IsDebuff" "1" } "modifier_arcane_orb_status" { "IsBuff" "1" } } } // Rewrite of the Obsidian Destroyer Astral Imprisonment // Author: chrislotix // Date: 06.01.2015. // Changed: 27.04.2015. // Changed by: Pizzalol // Reason: Improved the AI hiding method "obsidian_destroyer_astral_imprisonment_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY | DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO | DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "obsidian_destroyer_astral_imprisonment" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_obsidian_destroyer.vsndevts" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_prison.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "1.0 2.0 3.0 4.0" "AbilityCooldown" "18.0 16.0 14.0 12.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.25 0.25 0.25 0.25" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 140 160 180" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "int_steal" "-4 -6 -8 -10" } "02" { "var_type" "FIELD_FLOAT" "steal_duration" "60.0 60.0 60.0 60.0" } "03" { "var_type" "FIELD_FLOAT" "prison_duration" "1.0 2.0 3.0 4.0" } "04" { "var_type" "FIELD_INTEGER" "int_gain" "4 6 8 10" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ObsidianDestroyer.AstralImprisonment.Cast" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_ObsidianDestroyer.AstralImprisonment" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_astral_imprisonment_int_steal_target_datadriven" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } } "ApplyModifier" { "ModifierName" "modifier_astral_imprisonment_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_astral_imprisonment_datadriven" { "Duration" "%prison_duration" "IsDebuff" "1" "IsHidden" "0" "EffectName" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_prison.vpcf" "EffectAttachType" "attach_origin" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/astral_imprisonment.lua" "Function" "AstralImprisonmentStart" } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/astral_imprisonment.lua" "Function" "AstralImprisonmentStopSound" } "FireSound" { "EffectName" "Hero_ObsidianDestroyer.AstralImprisonment.End" "Target" "TARGET" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/astral_imprisonment.lua" "Function" "AstralImprisonmentEnd" } } } "modifier_astral_imprisonment_int_steal_datadriven" { "Duration" "%steal_duration" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%int_gain" } } "modifier_astral_imprisonment_int_steal_target_datadriven" { "Duration" "%steal_duration" "IsDebuff" "1" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_astral_imprisonment_int_steal_datadriven" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%int_steal" } } } } // Rewrite of the Obsidian Destroyer Essence Aura // Author: chrislotix // Date: 07.01.2015. "obsidian_destroyer_essence_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityTextureName" "obsidian_destroyer_essence_aura" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_essence_effect.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900 900 900 900" } "02" { "var_type" "FIELD_INTEGER" "bonus_mana" "75 150 225 300" } "03" { "var_type" "FIELD_FLOAT" "restore_amount" "10 15 20 25" } "04" { "var_type" "FIELD_INTEGER" "restore_chance" "40" } } "Modifiers" { //Static bonus mana which applies to od only "modifier_essence_aura_mana_bonus_datadriven" { "Passive" "1" "IsPurgable" "0" "IsHidden" "1" "Aura" "modifier_essence_aura_effect_datadriven" // this should be the actual mana restore on proc "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Aura_ApplyToCaster" "1" "Properties" { "MODIFIER_PROPERTY_MANA_BONUS" "%bonus_mana" } } "modifier_essence_aura_effect_datadriven" { "OnAbilityExecuted" { "Random" { "Chance" "%restore_chance" "OnSuccess" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/essence_aura.lua" "Function" "RestoreMana" "Target" "UNIT" } "FireEffect" { "EffectName" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_essence_effect.vpcf" "EffectAttachType" "follow_origin" "Target" "UNIT" } "FireSound" { "EffectName" "Hero_ObsidianDestroyer.EssenceAura" "Target" "UNIT" } } } } } } } // Rewrite of the Obsidian Destroyer Sanity Eclipse // Author: chrislotix // Date: 08.01.2015. "obsidian_destroyer_sanity_eclipse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityCastRange" "700 700 700" "AbilityCastPoint" "0.25 0.25 0.25" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "obsidian_destroyer_sanity_eclipse" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_obsidian_destroyer.vsndevts" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_area.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_area_aoe.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_area_embers.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_area_glow.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_damage.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_mana_loss.vpcf" "particle" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_smoke_main.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "160.0 160.0 160.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "175 250 325" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_multiplier" "8 9 10" } "02" { "var_type" "FIELD_INTEGER" "int_threshold" "10 30 50" } "03" { "var_type" "FIELD_INTEGER" "radius" "375 475 575" } "04" { "var_type" "FIELD_INTEGER" "cast_range" "700 700 700" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ObsidianDestroyer.SanityEclipse.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_ObsidianDestroyer.SanityEclipse" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_obsidian_destroyer/obsidian_destroyer_sanity_eclipse_area.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "00" "POINT" "01" "%radius 0 0" "02" "%radius 0 0" "03" "%radius 0 0" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Type" "DOTA_UNIT_TARGET_HERO" } "Action" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_obsidian_destroyer/sanity_eclipse.lua" "Function" "SanityEclipseDamage" "Target" "POINT" } } } } } // Rewrite of the Ogre Magi Bloodlust ability // Author: YOLOSPAGHETTI // Date: February 14, 2016 // Notes: Autocast does nothing, Instant model scaling "ogre_magi_bloodlust_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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 | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityTextureName" "ogre_magi_bloodlust" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_cast.vpcf" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_buff.vpcf" "soundfile" "sounds/weapons/hero/ogre_magi/bloodlust_cast.vsnd" "soundfile" "sounds/weapons/hero/ogre_magi/bloodlust_target.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "30" } "02" { "var_type" "FIELD_FLOAT" "model_scale" "1.25" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "10 12 14 16" } "04" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "20 30 40 50" } "05" { "var_type" "FIELD_INTEGER" "multicast_radius" "575" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_bloodlust_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Cast" "Target" "CASTER" } } "Modifiers" { "modifier_bloodlust_multicast_action" { "IsHidden" "1" "Duration" "0.01" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%multicast_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "MaxTargets" "1" "Random" "1" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_bloodlust_datadriven" } } } } } "modifier_bloodlust_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_bloodlust_buff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_ogre_magi/bloodlust.lua" "Function" "ChangeModel" } "FireSound" { "EffectName" "Hero_OgreMagi.Bloodlust.Target" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_ogre_magi/bloodlust.lua" "Function" "RevertModel" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } } } } // Rewrite of the Ogre Magi Fireblast ability // Author: YOLOSPAGHETTI // Date: February 14, 2016 "ogre_magi_fireblast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ogre_magi_fireblast" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_stunned.vpcf" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast.vpcf" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast_cast.vpcf" "soundfile" "sounds/weapons/hero/ogre_magi/fireblast_cast.vsnd" "soundfile" "sounds/weapons/hero/ogre_magi/fireblast_target.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "475" "AbilityCastPoint" "0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 85 95 105" //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "55 110 165 220" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5" } "02" { "var_type" "FIELD_FLOAT" "multicast_delay" "0.4" } "03" { "var_type" "FIELD_FLOAT" "multicast_delay3" "0.8" } "04" { "var_type" "FIELD_FLOAT" "multicast_delay4" "1.2" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_fireblast_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Fireblast.Cast" "Target" "CASTER" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } "Modifiers" { "modifier_fireblast_datadriven" { "IsDebuff" "1" "Duration" "%stun_duration" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast_cast.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Fireblast.Target" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fireblast_multicast2" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "DelayedAction" { "Delay" "%multicast_delay" "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast_cast.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Fireblast.Target" "Target" "TARGET" } } } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fireblast_multicast3" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "DelayedAction" { "Delay" "%multicast_delay3" "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast_cast.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Fireblast.Target" "Target" "TARGET" } } } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fireblast_multicast4" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "DelayedAction" { "Delay" "%multicast_delay4" "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_fireblast_cast.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_OgreMagi.Fireblast.Target" "Target" "TARGET" } } } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "ogre_magi_frost_armor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.56" "AbilityCooldown" "5.0" "AbilityManaCost" "40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_bonus" "8" } "02" { "var_type" "FIELD_FLOAT" "duration" "45.0" } "03" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-30" } "04" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-20" } "05" { "var_type" "FIELD_FLOAT" "slow_duration" "5.0" } } } // Rewrite of the Ogre Magi Ignite ability // Author: YOLOSPAGHETTI // Date: February 14, 2016 // Notes: Modifying cast range in a Datadriven ability with Lua scripts may turn out buggy "ogre_magi_ignite_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ogre_magi_ignite" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_ignite.vpcf" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_ignite_debuff.vpcf" "soundfile" "sounds/weapons/hero/ogre_magi/ignite_cast.vsnd" "soundfile" "sounds/weapons/hero/ogre_magi/ignite_target.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- //Dynamic Cast Range "AbilityCastRange" "1150" "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 105 115 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5 6 7 8" } "02" { "var_type" "FIELD_INTEGER" "burn_damage" "26 34 42 50" } "03" { "var_type" "FIELD_INTEGER" "slow_movement_speed_pct" "-20 -22 -24 -26" } "04" { "var_type" "FIELD_INTEGER" "projectile_speed" "1000" } "05" { "var_type" "FIELD_FLOAT" "multicast_delay" "0.4" } "06" { "var_type" "FIELD_INTEGER" "normal_range" "700" } "07" { "var_type" "FIELD_INTEGER" "multicast_range" "1400" } //Based on Multicast Level "08" { "var_type" "FIELD_INTEGER" "multicast_cast_range_bonus" "150 300 450" } //Based on Multicast Level "09" { "var_type" "FIELD_FLOAT" "ignite_aoe" "150 300 450" } "10" { "var_type" "FIELD_FLOAT" "tick_rate" "1.0" } } "OnSpellStart" { "RunScript" { "ScriptFile" "ignite.lua" "Function" "CheckDistance" } } "OnProjectileHitUnit" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_OgreMagi.Ignite.Target" } "RunScript" { "ScriptFile" "ignite.lua" "Function" "AOEEffect" } } "Modifiers" { "modifier_check_distance" { "IsHidden" "1" "OnUnitMoved" { "RunScript" { "ScriptFile" "ignite.lua" "Function" "CheckDistance" } } "OnOrder" { "RemoveModifier" { "ModifierName" "modifier_check_distance" "Target" "CASTER" } } } "modifier_ignite_multicast" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "DelayedAction" { "Delay" "0.45" "Action" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_ignite.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_OgreMagi.Ignite.Cast" } } } } } "modifier_ignite_multicast_action" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnDestroy" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%multicast_range" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "MaxTargets" "1" "Random" "1" } "Action" { "RunScript" { "ScriptFile" "ignite.lua" "Function" "CheckTargets" } } } } } "modifier_ignite_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_ogre_magi/ogre_magi_ignite_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed_pct" } "ThinkInterval" "%tick_rate" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%burn_damage" } } } } } // Rewrite of the Ogre Magi Multicast ability // Author: YOLOSPAGHETTI // Date: February 14, 2016 // Notes: No working particles "ogre_magi_multicast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "ogre_magi_multicast" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_multicast.vpcf" "soundfile" "sounds/weapons/hero/ogre_magi/multicast01.vsnd" "soundfile" "sounds/weapons/hero/ogre_magi/multicast02.vsnd" "soundfile" "sounds/weapons/hero/ogre_magi/multicast03.vsnd" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "multicast_2_times" "40 50 60" } "02" { "var_type" "FIELD_FLOAT" "multicast_3_times" "0 20 25" } "03" { "var_type" "FIELD_FLOAT" "multicast_4_times" "0 0 12.5" } "04" { "var_type" "FIELD_INTEGER" "fireblast_mana_cost" "20 40 60" } "05" { "var_type" "FIELD_FLOAT" "fireblast_cooldown" "2 4 6" } "06" { "var_type" "FIELD_FLOAT" "bloodlust_cooldown" "5 10 15" } "07" { "var_type" "FIELD_FLOAT" "ignite_range" "85 100 115" } } "Modifiers" { "modifier_multicast_datadriven" { "Passive" "1" "IsHidden" "1" "OnAbilityExecuted" { "RunScript" { "ScriptFile" "heroes/hero_ogre_magi/multicast.lua" "Function" "Multicast" "particle" "particles/units/heroes/hero_ogre_magi/ogre_magi_multicast.vpcf" "sound1" "Hero_OgreMagi.Fireblast.x1" "sound2" "Hero_OgreMagi.Fireblast.x2" "sound3" "Hero_OgreMagi.Fireblast.x3" } } } } } "ogre_magi_unrefined_fireblast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "FightRecapLevel" "1" "AbilityTextureName" "ogre_magi_unrefined_fireblast" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "400" //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "275" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5" } "02" { "var_type" "FIELD_FLOAT" "multicast_delay" "0.4" } "03" { "var_type" "FIELD_FLOAT" "scepter_mana" "0.6" } } } // Rewrite of Omniknight Degen Aura // Author: Noya // Date: 8.1.2015. // Notes: - "omniknight_degen_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "omniknight_degen_aura" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed_bonus" "-10 -18 -26 -34" } "02" { "var_type" "FIELD_INTEGER" "attack_bonus_tooltip" "-10 -18 -26 -34" } "03" { "var_type" "FIELD_INTEGER" "radius" "350" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" "particle" "particles/units/heroes/hero_omniknight/omniknight_degen_aura_debuff.vpcf" } "Modifiers" { "modifier_degen_aura" { "Passive" "1" "IsHidden" "1" "IsBuff" "1" "Aura" "modifier_degen_aura_effect" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "modifier_degen_aura_effect" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_degen_aura_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%speed_bonus" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_bonus_tooltip" } } } } // Rewrite of Omniknight Guardian Angel // Author: Noya // Date: 8.1.2015. // Notes: - "omniknight_guardian_angel_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "omniknight_guardian_angel" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "150.0 150.0 150.0" "AbilityCastPoint" "0.5 0.5 0.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 175 250" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "6.0 7.0 8.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "600 600 600" } "03" { "var_type" "FIELD_FLOAT" "duration_scepter" "8.0 9.0 10.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" "particle" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_halo_buff.vpcf" "particle" "particles/status_fx/status_effect_guardian_angel.vpcf" "particle" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_ally.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Omniknight.GuardianAngel.Cast" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_guardian_angel" } } } } "Modifiers" { "modifier_guardian_angel" { "IsBuff" "1" "IsPurgable" "1" "Duration" "%duration" "StatusEffectName" "particles/status_fx/status_effect_guardian_angel.vpcf" "StatusEffectPriority" "10" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_halo_buff.vpcf" "EffectAttachType" "follow_overhead" "Target" "CASTER" } "AttachEffect" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "EffectName" "particles/units/heroes/hero_omniknight/omniknight_guardian_angel_ally.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } } "Properties" { "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "1" } } } } // Rewrite of Omniknight Purification // Author: Noya // Date: 8.1.2015. // Notes: The Heal shows a green popup. To get rid of this just use the Lua version of Heal. "omniknight_purification_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "omniknight_purification" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 120 140 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal" "90 180 270 360" } "02" { "var_type" "FIELD_INTEGER" "radius" "260" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" "particle" "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf" "particle" "particles/units/heroes/hero_omniknight/omniknight_purification_hit.vpcf" "particle" "particles/units/heroes/hero_omniknight/omniknight_purification_cast.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Omniknight.Purification" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" } } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_purification_cast.vpcf" "EffectAttachType" "follow_origin" } "Heal" { "Target" "TARGET" "HealAmount" "%heal" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%heal" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_purification_hit.vpcf" "EffectAttachType" "follow_origin" } } } } } // Rewrite of Omniknight Repel // Author: Noya // Date: 8.1.2015. // Notes: Will need to be changed to 100% Magic Resistance and "Spell Immunity" when the tools get updated to 6.82 // The Purge interaction is incorrect for item_diffusal_blade which can't target a State Magic Immune unit // Sound plays for the full duration on every level "omniknight_repel_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "omniknight_repel" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0 14.0 14.0 14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "3.0" // Value much higher than cost. // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "6.0 8.0 10.0 12.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts" "particle" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Omniknight.Repel" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_omniknight/omniknight_repel_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_repel_datadriven" } } "Modifiers" { "modifier_repel_datadriven" { "IsBuff" "1" "IsPurgable" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_omniknight/omniknight_repel_buff.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "oracle_false_promise_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "02" { "var_type" "FIELD_FLOAT" "duration" "7.0 8.0 9.0" } } } "oracle_fates_edict_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY | DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_amp" "50" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.0 5.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "magic_damage_resistance_pct_tooltip" "100" } } } "oracle_fortunes_end_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_CHANNEL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "oracle_fortunes_end" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "650" "AbilityCastPoint" "0.3" "AbilityChannelTime" "2.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "75 150 225 300" } "02" { "var_type" "FIELD_INTEGER" "bolt_speed" "1200" } "03" { "var_type" "FIELD_FLOAT" "minimum_purge_duration" "0.5" } "04" { "var_type" "FIELD_FLOAT" "maximum_purge_duration" "2.5" } "05" { "var_type" "FIELD_INTEGER" "radius" "215" } "06" { "var_type" "FIELD_FLOAT" "max_channel_time_tooltip" "2.5" } } } "oracle_purifying_flames_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY | DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "oracle_purifying_flames" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "3.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "55 70 85 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "90 180 270 360" } "02" { "var_type" "FIELD_FLOAT" "heal_per_second" "11.0 22.0 33.0 44.0" } "03" { "var_type" "FIELD_INTEGER" "total_heal_tooltip" "99 198 297 396" } "04" { "var_type" "FIELD_FLOAT" "duration" "9.0" } "05" { "var_type" "FIELD_FLOAT" "tick_rate" "1.0" } } } // Rewrite of the Phantom Assassin Blur ability // Author: Pizzalol // Date: 21.12.2014. "phantom_assassin_blur_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "phantom_assassin_blur" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_blur.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_evasion" "20 30 40 50" } "02" { "var_type" "FIELD_FLOAT" "transparency_fade" "0.75" } "03" { "var_type" "FIELD_INTEGER" "radius" "1600 1600 1600 1600" } } "Modifiers" { "modifier_blur_datadriven" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_phantom_assassin/blur.lua" "Function" "Blur" } } "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%bonus_evasion" } "States" { "MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_blur_enemy_datadriven" { "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_blur.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES" "MODIFIER_STATE_VALUE_DISABLED" } } } } // Rewrite of the Phantom Assassin Coup de Grace ability // Author: Pizzalol // Date: 21.12.2014. // Changed: 01.02.2015. // Reason: Fixed attachment point for particle // NOTE: Orientation is wrong "phantom_assassin_coup_de_grace_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "phantom_assassin_coup_de_grace" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_assassin.vsndevts" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_crit_impact.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_bonus" "230 340 450" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "15" } } "Modifiers" { "modifier_coup_de_grace_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_coup_de_grace_crit_datadriven" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_PHANTOMASSASSIN_CRIT" "OnSuccess" { "ApplyModifier" { "ModifierName" "modifier_coup_de_grace_crit_datadriven" "Target" "CASTER" } } } } } "modifier_coup_de_grace_crit_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_bonus" } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_coup_de_grace_crit_datadriven" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_crit_impact.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "follow_origin" "TARGET" "follow_origin" } } "FireSound" { "EffectName" "Hero_PhantomAssassin.CoupDeGrace" "Target" "TARGET" } } } } } // Rewrite of the Phantom Assassin Phantom Strike ability // Author: Pizzalol // Date: 29.09.2015. "phantom_assassin_phantom_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY | DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "phantom_assassin_phantom_strike" "CastFilterRejectCaster" "1" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_assassin.vsndevts" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_end.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000 1000 1000 1000" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14 11 8 5" // Duration //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "3 3 3 3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "130" } "02" { "var_type" "FIELD_INTEGER" "bonus_max_attack_count" "4" } "03" { "var_type" "FIELD_INTEGER" "tooltip_range" "1000 1000 1000 1000" } } "OnSpellStart" { "Blink" { "Target" "TARGET" } "FireSound" { "EffectName" "Hero_PhantomAssassin.Strike.Start" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_phantom_strike_end.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_PhantomAssassin.Strike.End" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_phantom_assassin/phantom_strike.lua" "Function" "PhantomStrike" "phantom_strike_modifier" "modifier_phantom_strike_datadriven" } } "Modifiers" { "modifier_phantom_strike_datadriven" { "IsBuff" "1" "OnAttackLanded" // "%attack_damage" is set to the damage value before mitigation { "RunScript" { "ScriptFile" "heroes/hero_phantom_assassin/phantom_strike.lua" "Function" "PhantomStrikeAttack" "phantom_strike_modifier" "modifier_phantom_strike_datadriven" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" } } } } // Rewrite of the Phantom Assassin Stifling Dagger ability // Author: Pizzalol // Date: 21.12.2014. // Changed: 05.01.2015. "phantom_assassin_stifling_dagger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "phantom_assassin_stifling_dagger" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_assassin.vsndevts" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_stifling_dagger.vpcf" "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_stifling_dagger_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6" "AbilityDuration" "1.0 2.0 3.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "30 25 20 15" //Damage "AbilityDamage" "60 100 140 180" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "move_slow" "-50" } "02" { "var_type" "FIELD_INTEGER" "dagger_speed" "1200" } "03" { "var_type" "FIELD_INTEGER" "duration" "1 2 3 4" } "04" { "var_type" "FIELD_INTEGER" "hero_dmg_pct" "50" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_stifling_dagger.vpcf" "Dodgeable" "1" "ProvidesVision" "1" "VisionRadius" "300" "MoveSpeed" "%dagger_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_PhantomAssassin.Dagger.Cast" "Target" "CASTER" } } "OnProjectileHitUnit" { "Damage" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Type" "DAMAGE_TYPE_PURE" "Damage" "%AbilityDamage * %hero_dmg_pct / 100" } "Damage" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_PURE" "Damage" "%AbilityDamage" } "FireSound" { "EffectName" "Hero_PhantomAssassin.Dagger.Target" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_stifling_dagger_slow_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_stifling_dagger_slow_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_stifling_dagger_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_slow" } } } } "phoenix_fire_spirits_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "phoenix_fire_spirits" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1400" "AbilityCastPoint" "0.01 0.01 0.01 0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45 40 35 30" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_cost_perc" "20" } "02" { "var_type" "FIELD_FLOAT" "spirit_duration" "16.0 16.0 16.0 16.0" } "03" { "var_type" "FIELD_INTEGER" "spirit_speed" "900 900 900 900" } "04" { "var_type" "FIELD_INTEGER" "radius" "175 175 175 175" } "05" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "06" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-80 -100 -120 -140" } "07" { "var_type" "FIELD_INTEGER" "dps" "10 30 50 70" } "08" { "var_type" "FIELD_INTEGER" "spirit_count" "4" } "09" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirits.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_launch.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_ground.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn_creep.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Phoenix.FireSpirits.Cast" "Target" "CASTER" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_fire_spirit_stack_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/fire_spirits.lua" "Function" "CastFireSpirits" "hp_cost_perc" "%hp_cost_perc" "spirit_count" "%spirit_count" "modifier_stack_name" "modifier_fire_spirit_stack_datadriven" "sub_ability_name" "phoenix_launch_fire_spirit_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/fire_spirits.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_launch_fire_spirit_datadriven" } } "Modifiers" { "modifier_fire_spirit_stack_datadriven" { "IsBuff" "1" "Duration" "%spirit_duration" "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/fire_spirits.lua" "Function" "RemoveFireSpirits" "sub_ability_name" "phoenix_launch_fire_spirit_datadriven" } } } } } "phoenix_icarus_dive_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "phoenix_icarus_dive" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "36" "AbilityDuration" "2.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_cost_perc" "15" } "02" { "var_type" "FIELD_INTEGER" "dash_length" "1400" } "03" { "var_type" "FIELD_INTEGER" "dash_width" "500" } "04" { "var_type" "FIELD_INTEGER" "hit_radius" "200" } "05" { "var_type" "FIELD_FLOAT" "burn_duration" "4" } "06" { "var_type" "FIELD_INTEGER" "damage_per_second" "10 30 50 70" } "07" { "var_type" "FIELD_FLOAT" "burn_tick_interval" "1.0" } "08" { "var_type" "FIELD_INTEGER" "slow_movement_speed_pct" "-25" } // Extra variables "09" { "var_type" "FIELD_FLOAT" "dash_duration" "2" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts" "particle" "particles/units/heroes/hero_phoenix/phoenix_icarus_dive.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_icarus_dive_burn_debuff.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Phoenix.FireSpirits.Cast" "Target" "CASTER" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_icarus_dive_caster_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "CastIcarusDive" "hp_cost" "%hp_cost_perc" "dash_length" "%dash_length" "dash_width" "%dash_width" "dash_duration" "%dash_duration" "modifier_caster_name" "modifier_icarus_dive_caster_datadriven" "sub_ability_name" "phoenix_icarus_dive_stop_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_icarus_dive_stop_datadriven" } } "Modifiers" { "modifier_icarus_dive_caster_datadriven" { "IsHidden" "1" "Duration" "%dash_duration" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_icarus_dive.vpcf" "EffectAttachType" "follow_origin" "Aura" "modifier_icarus_dive_check_to_burn_datadriven" "Aura_Radius" "%hit_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnStateChanged" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "CheckToInterrupt" "modifier_caster_name" "modifier_icarus_dive_caster_datadriven" } } "OnCreated" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_ignore_turn_rate_limit_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "EndIcarusDive" "sub_ability_name" "phoenix_icarus_dive_stop_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_ignore_turn_rate_limit_datadriven" } "FireSound" { "EffectName" "Hero_Phoenix.FireSpirits.Stop" "Target" "CASTER" } } } "modifier_icarus_dive_check_to_burn_datadriven" { "Duration" "0.1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "CheckToBurn" "Target" "TARGET" "modifier_burn_name" "modifier_icarus_dive_burn_datadriven" } } } "modifier_icarus_dive_burn_datadriven" { "IsDebuff" "1" "Duration" "%burn_duration" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_icarus_dive_burn_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%burn_tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_second * %burn_tick_interval" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed_pct" } } "modifier_ignore_turn_rate_limit_datadriven" { "IsHidden" "1" } } } "phoenix_icarus_dive_stop_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityTextureName" "phoenix_icarus_dive_stop" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_icarus_dive_caster_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/icarus_dive.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_icarus_dive_datadriven" } } } "phoenix_launch_fire_spirit_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "phoenix_launch_fire_spirit" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1400" "AbilityCastPoint" "0.01 0.01 0.01 0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_cost_perc" "20" } "02" { "var_type" "FIELD_FLOAT" "spirit_duration" "16.0 16.0 16.0 16.0" } "03" { "var_type" "FIELD_INTEGER" "spirit_speed" "900 900 900 900" } "04" { "var_type" "FIELD_INTEGER" "radius" "175 175 175 175" } "05" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "06" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-80 -100 -120 -140" } "07" { "var_type" "FIELD_INTEGER" "dps" "10 30 50 70" } "08" { "var_type" "FIELD_INTEGER" "spirit_count" "4" } "09" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "FireSound" { "EffectName" "Hero_Phoenix.FireSpirits.Launch" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/fire_spirits.lua" "Function" "LaunchFireSpirit" "modifier_stack_name" "modifier_fire_spirit_stack_datadriven" "main_ability_name" "phoenix_fire_spirits_datadriven" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_launch.vpcf" "MoveSpeed" "%spirit_speed" "StartPosition" "attach_attack1" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" } "OnProjectileFinish" { "FireEffect" { "TargetPoint" "POINT" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_ground.vpcf" "EffectAttachType" "world_origin" "ControlPoints" { "01" "%radius 0 0" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_fire_spirit_damage_datadriven" } } } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/fire_spirits.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_fire_spirits_datadriven" } } "Modifiers" { "modifier_fire_spirit_damage_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_phoenix/phoenix_fire_spirit_burn.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%dps * %tick_interval" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed_slow" } } } } "phoenix_sun_ray_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "phoenix_sun_ray" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1300" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" "AbilityDuration" "6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_cost_perc_per_second" "6" } "02" { "var_type" "FIELD_INTEGER" "base_dmg" "15 20 25 30" } "03" { "var_type" "FIELD_INTEGER" "hp_perc_dmg" "1 2 3 4" } "04" { "var_type" "FIELD_FLOAT" "ally_heal" "0.5" } "05" { "var_type" "FIELD_INTEGER" "radius" "130" } "06" { "var_type" "FIELD_FLOAT" "tick_interval" "0.2" } "07" { "var_type" "FIELD_FLOAT" "forward_move_speed" "250" } "08" { "var_type" "FIELD_INTEGER" "beam_range" "1300" } "09" { "var_type" "FIELD_FLOAT" "turn_rate_initial" "250" } "10" { "var_type" "FIELD_FLOAT" "turn_rate" "20" } "11" { "var_type" "FIELD_INTEGER" "tooltip_duration" "6" } // Extra variables "12" { "var_type" "FIELD_INTEGER" "num_thinkers" "9" } "13" { "var_type" "FIELD_FLOAT" "thinker_step" "150" } "14" { "var_type" "FIELD_INTEGER" "thinker_radius" "192" } "15" { "var_type" "FIELD_FLOAT" "initial_turn_max_duration" "0.75" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts" "particle" "particles/units/heroes/hero_phoenix/phoenix_sunray.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_sunray_beam_friend.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_sunray_beam_enemy.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_sunray_debuff.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Phoenix.SunRay.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Phoenix.SunRay.Loop" "Target" "CASTER" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_sun_ray_caster_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "CastSunRay" "hp_cost_perc_per_second" "%hp_cost_perc_per_second" "path_length" "%beam_range" "num_thinkers" "%num_thinkers" "thinker_step" "%thinker_step" "thinker_radius" "%thinker_radius" "turn_rate_initial" "%turn_rate_initial" "turn_rate" "%turn_rate" "initial_turn_max_duration" "%initial_turn_max_duration" "forward_move_speed" "%forward_move_speed" "modifier_caster_name" "modifier_sun_ray_caster_datadriven" "modifier_thinker_name" "modifier_sun_ray_thinker_datadriven" "modifier_ignore_turn_rate_limit_name" "modifier_ignore_turn_rate_limit_datadriven" "sub_ability_name" "phoenix_sun_ray_stop_datadriven" "toggle_move_empty_ability_name" "phoenix_sun_ray_toggle_move_empty_datadriven" "toggle_move_ability_name" "phoenix_sun_ray_toggle_move_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_stop_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_toggle_move_datadriven" } } "Modifiers" { "modifier_sun_ray_caster_datadriven" { "IsPurgable" "true" "Duration" "%AbilityDuration" "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" } "OnStateChanged" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "CheckToInterrupt" "modifier_caster_name" "modifier_sun_ray_caster_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "StopSound" "sound_name" "Hero_Phoenix.SunRay.Loop" } "FireSound" { "EffectName" "Hero_Phoenix.SunRay.Stop" "Target" "CASTER" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_sun_ray_caster_move_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "EndSunRay" "sub_ability_name" "phoenix_sun_ray_stop_datadriven" "toggle_move_empty_ability_name" "phoenix_sun_ray_toggle_move_empty_datadriven" "toggle_move_ability_name" "phoenix_sun_ray_toggle_move_datadriven" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "SpendHPCost" "tick_interval" "%tick_interval" "hp_cost_perc_per_second" "%hp_cost_perc_per_second" } } } "modifier_sun_ray_caster_move_datadriven" { "IsHidden" "1" } "modifier_sun_ray_thinker_datadriven" { "Duration" "%AbilityDuration" "Aura" "modifier_sun_ray_check_datadriven" "Aura_Radius" "%thinker_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "OnCreated" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_phased" } } "States" { "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" "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_sun_ray_check_datadriven" { "IsHidden" "1" "ThinkInterval" "%tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "CheckForCollision" "path_length" "%beam_range" "path_radius" "%radius" "tick_interval" "%tick_interval" "base_dmg" "%base_dmg" "hp_perc_dmg" "%hp_perc_dmg" "ally_heal" "%ally_heal" "particle_burn_name" "particles/units/heroes/hero_phoenix/phoenix_sunray_beam_enemy.vpcf" "particle_heal_name" "particles/units/heroes/hero_phoenix/phoenix_sunray_beam_friend.vpcf" } } } } } "phoenix_sun_ray_stop_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "phoenix_sun_ray_stop" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" "OnSpellStart" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_sun_ray_caster_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_toggle_move_datadriven" } } } "phoenix_sun_ray_toggle_move_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "phoenix_sun_ray_toggle_move" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "ToggleMove" "modifier_name" "modifier_sun_ray_caster_move_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_phoenix/sun_ray.lua" "Function" "LevelUpAbility" "ability_name" "phoenix_sun_ray_stop_datadriven" } } } "phoenix_sun_ray_toggle_move_empty_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "AbilityTextureName" "phoenix_sun_ray_toggle_move_empty" } "phoenix_supernova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "phoenix_supernova" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "110.0 110.0 110.0" "AbilityDuration" "6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 200 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "aura_radius" "1000 1000 1000" } "02" { "var_type" "FIELD_INTEGER" "damage_per_sec" "60 80 100" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5 2.0 2.5" } "04" { "var_type" "FIELD_INTEGER" "max_hero_attacks" "5 7 10" } "05" { "var_type" "FIELD_INTEGER" "tooltip_duration" "6" } "06" { "var_type" "FIELD_INTEGER" "cast_range_tooltip_scepter" "500" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_death.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_egg.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_hit.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_radiance.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_radiance_creep.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_reborn.vpcf" "particle" "particles/units/heroes/hero_phoenix/phoenix_supernova_start.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Phoenix.SuperNova.Cast" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_phoenix/phoenix_supernova_start.vpcf" "EffectAttachType" "PATTACH_ABSORIGIN" "Target" "CASTER" } "SpawnUnit" { "UnitName" "npc_dota_phoenix_sun" "UnitCount" "1" "SpawnRadius" "0" "Target" "CASTER" // "Duration" "%AbilityDuration" "OnSpawn" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_supernova_sun_form_egg_datadriven" } "FireSound" { "EffectName" "Hero_Phoenix.SuperNova.Begin" "Target" "TARGET" } } } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_supernova_sun_form_caster_datadriven" } } "Modifiers" { "modifier_supernova_sun_form_caster_datadriven" { "IsBuff" "1" "Duration" "%AbilityDuration" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/supernova.lua" "Function" "HideCaster" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/supernova.lua" "Function" "ShowCaster" } } "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_supernova_sun_form_egg_datadriven" { "IsBuff" "1" "Duration" "%AbilityDuration" "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_DISABLE_HEALING" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "1" "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE" "1" "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "0" } "OverrideAnimation" "ACT_DOTA_IDLE" // egg_cast_supernova "Aura" "modifier_supernova_burn_datadriven" "Aura_Radius" "%aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_phoenix/phoenix_supernova_egg.vpcf" "EffectAttachType" "PATTACH_ABSORIGIN_FOLLOW" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_hitloc" } } } "OnAttacked" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_phoenix/phoenix_supernova_hit.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_phoenix/supernova.lua" "Function" "OnAttackedEgg" "Target" "TARGET" "max_hero_attacks" "%max_hero_attacks" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phoenix/supernova.lua" "Function" "OnDestroyEgg" "Target" "TARGET" } } } "modifier_supernova_egg_explode_datadriven" { "IsHidden" "1" "OnCreated" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%aura_radius" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Stun" { "Duration" "%stun_duration" "Target" "TARGET" } } } } } "modifier_supernova_burn_datadriven" { "IsDebuff" "1" "ThinkInterval" "1.0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_phoenix/phoenix_supernova_radiance.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "CASTER" "follow_origin" } } } "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_sec" } } } } } "polar_furbolg_ursa_warrior_thunder_clap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" "AbilityCooldown" "12.0" "AbilityDamage" "150" "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "300" } "02" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-25" } "03" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-25" } "04" { "var_type" "FIELD_FLOAT" "duration" "3.0" } } } "puck_dream_coil_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "puck_dream_coil" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "85.0 85.0 85.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Does two modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "coil_duration" "6.0 6.0 6.0" } "02" { "var_type" "FIELD_INTEGER" "coil_init_damage_tooltip" "100 150 200" } "03" { "var_type" "FIELD_INTEGER" "coil_break_radius" "600 600 600" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "0.5 0.5 0.5" } "05" { "var_type" "FIELD_FLOAT" "coil_stun_duration" "1.5 2.25 3.0" } "06" { "var_type" "FIELD_INTEGER" "coil_break_damage" "100 150 200" } "07" { "var_type" "FIELD_INTEGER" "coil_radius" "375 375 375" } "08" { "var_type" "FIELD_FLOAT" "coil_duration_scepter" "8" } "09" { "var_type" "FIELD_INTEGER" "coil_break_damage_scepter" "200 250 300" } "10" { "var_type" "FIELD_FLOAT" "coil_stun_duration_scepter" "1.5 3 4.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_puck.vsndevts" "particle" "particles/units/heroes/hero_puck/puck_dreamcoil.vpcf" "particle" "particles/units/heroes/hero_puck/puck_dreamcoil_emit.vpcf" "particle" "particles/units/heroes/hero_puck/puck_dreamcoil_tether.vpcf" } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_dream_coil_thinker_datadriven" "Target" "POINT" } } "Modifiers" { "modifier_dream_coil_thinker_datadriven" { "Duration" "%coil_duration" "OnCreated" { "FireSound" { "EffectName" "Hero_Puck.Dream_Coil" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_puck/puck_dreamcoil.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_puck/dream_coil.lua" "Function" "Thinker_StoreCaster" "Target" "TARGET" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%coil_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%coil_init_damage_tooltip" "Target" "TARGET" } "Stun" { "Duration" "%stun_duration" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_puck/dream_coil.lua" "Function" "Thinker_ApplyModifierToEnemy" "Target" "TARGET" "modifier_name" "modifier_dream_coil_tether_datadriven" } } } } } "modifier_dream_coil_tether_datadriven" { "Duration" "%coil_duration" "IsDebuff" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_puck/puck_dreamcoil_tether.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "attach_hitloc" } } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_puck/dream_coil.lua" "Function" "CheckCoilBreak" "Target" "TARGET" "coil_break_radius" "%coil_break_radius" "coil_break_modifier" "modifier_dream_coil_break_datadriven" "coil_tether_modifier" "modifier_dream_coil_tether_datadriven" } } } "modifier_dream_coil_break_datadriven" { "OnCreated" { "FireSound" { "EffectName" "Hero_Puck.Dream_Coil_Snap" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%coil_break_damage" "Target" "TARGET" } "Stun" { "Duration" "%coil_stun_duration" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_dream_coil_break_datadriven" "Target" "TARGET" } } } } } "puck_ethereal_jaunt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityTextureName" "puck_ethereal_jaunt" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_puck/puck_illusory_orb_blink_out.vpcf" "EffectAttachType" "attach_hitloc" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_puck/illusory_orb.lua" "Function" "CastEtherealJaunt" } "FireSound" { "EffectName" "Hero_Puck.EtherealJaunt" "Target" "CASTER" } } } "puck_illusory_orb_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "puck_illusory_orb" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" "AbilityCastRange" "3000" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "70 140 210 280" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "225" } "02" { "var_type" "FIELD_INTEGER" "max_distance" "1800 1800 1800 1800" } "03" { "var_type" "FIELD_INTEGER" "orb_speed" "600 600 600 600" } "04" { "var_type" "FIELD_INTEGER" "orb_vision" "800 800 800 800" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34 3.34 3.34 3.34" } // Extra variables "06" { "var_type" "FIELD_INTEGER" "num_extra_visions" "4" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_puck.vsndevts" "particle" "particles/units/heroes/hero_puck/puck_illusory_orb.vpcf" "particle" "particles/units/heroes/hero_puck/puck_illusory_orb_blink_out.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_puck/illusory_orb.lua" "Function" "CastIllusoryOrb" "Target" "POINT" "radius" "%radius" "max_distance" "%max_distance" "orb_speed" "%orb_speed" "orb_vision" "%orb_vision" "vision_duration" "%vision_duration" "num_extra_visions" "%num_extra_visions" "proj_particle" "particles/units/heroes/hero_puck/puck_illusory_orb.vpcf" "proj_modifier" "modifier_illusory_orb_projectile_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "FireSound" { "EffectName" "Hero_Puck.Illusory_Orb_Damage" "Target" "TARGET" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_puck/illusory_orb.lua" "Function" "OnUpgrade" "sub_ability" "puck_ethereal_jaunt_datadriven" } } "Modifiers" { "modifier_illusory_orb_projectile_datadriven" { "OnCreated" { "FireSound" { "EffectName" "Hero_Puck.Illusory_Orb" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_puck/illusory_orb.lua" "Function" "StopSound" "Target" "TARGET" "sound_name" "Hero_Puck.Illusory_Orb" } } "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" } } } } "puck_phase_shift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityTextureName" "puck_phase_shift" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" "AbilityChannelTime" "0.75 1.50 2.25 3.25" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6.0 6.0 6.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "0.75 1.50 2.25 3.25" } } // Data driven //------------------------------------------------------------------------------------------------------------- "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_datadriven" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_phase_shift_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_phase_shift_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_puck/puck_phase_shift.vpcf" "EffectAttachType" "attach_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Puck.Phase_Shift" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_puck/phase_shift.lua" "Function" "HideCaster" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_puck/phase_shift.lua" "Function" "StopSound" "Target" "TARGET" "sound_name" "Hero_Puck.Phase_Shift" } "RunScript" { "ScriptFile" "heroes/hero_puck/phase_shift.lua" "Function" "ShowCaster" } } "States" { // "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" // Don't use these state for a channeling ability. // "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } "puck_waning_rift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "puck_waning_rift" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 16.0 16.0 16.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "70 140 210 280" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 110 120 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400 400 400 400" } "02" { "var_type" "FIELD_FLOAT" "silence_duration" "0.75 1.5 2.25 3.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_puck.vsndevts" "particle" "particles/units/heroes/hero_puck/puck_waning_rift.vpcf" } "OnSpellStart" { "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" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%silence_duration" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_puck/puck_waning_rift.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" "ControlPoints" { "01" "%radius %radius %radius" } } "FireSound" { "EffectName" "Hero_Puck.Waning_Rift" "Target" "CASTER" } } //(copied from death_prophet_silence_datadriven.txt) //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" } } } } // Rewrite of the Pudge Dismember ability // Author: Valve // Date: 25.09.2015. "pudge_dismember_lua" { // General //------------------------------------------------------------------------------------------------------------- "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "BaseClass" "ability_lua" "AbilityTextureName" "pudge_dismember" "ScriptFile" "heroes/hero_pudge/pudge_dismember_lua.lua" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_pudge.vsndevts" "particle" "particles/units/heroes/hero_pudge/pudge_dismember.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "160" "AbilityCastPoint" "0.3 0.3 0.3" "AbilityCooldown" "30.0 30.0 30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 130 170" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "dismember_damage" "75 125 175" } "02" { "var_type" "FIELD_FLOAT" "strength_damage_scepter" "1.0" } "03" { "var_type" "FIELD_FLOAT" "hero_duration" "3.0" } "04" { "var_type" "FIELD_FLOAT" "creep_duration" "6.0" } "05" { "var_type" "FIELD_FLOAT" "tick_rate" "1.01" } } } // Rewrite of the Pudge Flesh Heap ability // Author: Valve // Date: 25.09.2015. "pudge_flesh_heap_lua" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_lua" "AbilityTextureName" "pudge_flesh_heap" "ScriptFile" "heroes/hero_pudge/pudge_flesh_heap_lua.lua" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_pudge/pudge_fleshheap_count.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "flesh_heap_magic_resist" "6 8 10 12" } "02" { "var_type" "FIELD_FLOAT" "flesh_heap_strength_buff_amount" "1.0 1.5 2 2.5" } "03" { "var_type" "FIELD_INTEGER" "flesh_heap_range" "450" } } } // Rewrite of the Pudge Meat Hook ability // Author: Valve // Date: 25.09.2015. "pudge_meat_hook_lua" { // General "BaseClass" "ability_lua" "AbilityTextureName" "pudge_meat_hook" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "ScriptFile" "heroes/hero_pudge/pudge_meat_hook_lua.lua" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_pudge.vsndevts" "particle" "particles/units/heroes/hero_pudge/pudge_meathook_chain.vpcf" "particle" "particles/units/heroes/hero_pudge/pudge_meathook_impact.vpcf" "particle" "particles/units/heroes/hero_pudge/pudge_meathook.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000 1100 1200 1300" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14 13 12 11" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hook_speed" "1600.0" } "02" { "var_type" "FIELD_INTEGER" "hook_width" "100" } "03" { "var_type" "FIELD_INTEGER" "hook_distance" "1000 1100 1200 1300" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "500 500 500 500" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "4.0 4.0 4.0 4.0" } "06" { "var_type" "FIELD_FLOAT" "hook_followthrough_constant" "0.65" } "07" { "var_type" "FIELD_INTEGER" "hook_damage" "90 180 270 360" } } } // Rewrite of the Pudge Rot ability // Author: Valve // Date: 25.09.2015. "pudge_rot_lua" { // General //------------------------------------------------------------------------------------------------------------- "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "BaseClass" "ability_lua" "AbilityTextureName" "pudge_rot" "ScriptFile" "heroes/hero_pudge/pudge_rot_lua.lua" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_pudge.vsndevts" "particle" "particles/units/heroes/hero_pudge/pudge_rot.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "rot_radius" "250" } "02" { "var_type" "FIELD_FLOAT" "rot_tick" "0.2" } "03" { "var_type" "FIELD_INTEGER" "rot_slow" "-20 -22 -24 -26" } "04" { "var_type" "FIELD_INTEGER" "rot_damage" "35 60 85 110" } } } // Rewrite of Pugna Decrepify // Author: Noya // Date: April 5, 2015 "pugna_decrepify_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_OTHER"//"DOTA_UNIT_TARGET_CUSTOM" //Awful Valve-hack to let it target Nether Ward and Tombstone "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "pugna_decrepify" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700 700 700 700" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 10.0 8.0 6.0" "AbilityDuration" "2.0 2.5 3.0 3.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_spell_damage_pct_allies" "-25" } "02" { "var_type" "FIELD_INTEGER" "bonus_spell_damage_pct" "-50" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-50 -50 -50 -50" } "04" { "var_type" "FIELD_FLOAT" "tooltip_duration" "2.0 2.5 3.0 3.5" } } "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Pugna.Decrepify" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_decrepify_enemy" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Duration" "%AbilityDuration" } "ApplyModifier" { "ModifierName" "modifier_decrepify_ally" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" } "Duration" "%AbilityDuration" } } "Modifiers" { "modifier_decrepify_ally" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE" "%bonus_spell_damage_pct_allies" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_decrepify_enemy" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_pugna/pugna_decrepify.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE" "%bonus_spell_damage_pct" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of Pugna Life Drain // Author: Noya // Date: April 5, 2015 "pugna_life_drain_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "pugna_life_drain" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1100" "AbilityCastPoint" "0.2 0.2 0.2" "AbilityChannelTime" "10.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22.0 22.0 22.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 175 225" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // All about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_drain" "120 160 200" } "02" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "850" } "03" { "var_type" "FIELD_INTEGER" "duration_tooltip" "10" } "04" { "var_type" "FIELD_INTEGER" "health_drain_scepter" "180 240 300" } "05" { "var_type" "FIELD_FLOAT" "scepter_cooldown" "0.0 0.0 0.0" } "06" { "var_type" "FIELD_FLOAT" "tick_rate" "0.25 0.25 0.25" } "07" { "var_type" "FIELD_INTEGER" "bonus_range_scepter" "50" } "08" { "var_type" "FIELD_INTEGER" "cast_range_scepter_tooltip" "900" } } "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_life_drain.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "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" { "RunScript" { "ScriptFile" "heroes/hero_pugna/life_drain.lua" "Function" "LifeDrainParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_pugna/life_drain.lua" "Function" "LifeDrainParticleEnd" } } "ThinkInterval" "%tick_rate" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_pugna/life_drain.lua" "Function" "LifeDrainHealthTransfer" } } } } } // Rewrite of Pugna Nether Blast // Author: Noya // Date: April 5, 2015 "pugna_nether_blast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "pugna_nether_blast" "AOERadius" "%radius" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.5 5.5 5.5 5.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 250 325" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "85 105 125 145" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "structure_damage_mod" "0.5" } "02" { "var_type" "FIELD_FLOAT" "delay" "0.9 0.9 0.9 0.9" } "03" { "var_type" "FIELD_INTEGER" "radius" "400 400 400 400" } } "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_netherblast.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_netherblast_pre.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_nether_blast_thinker" "Target" "POINT" } } "Modifiers" { "modifier_nether_blast_thinker" { "IsHidden" "1" "Duration" "1" "OnCreated" { "FireSound" { "EffectName" "Hero_Pugna.NetherBlastPreCast" "Target" "TARGET" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_pugna/pugna_netherblast_pre.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "01" "%radius %delay %radius" } } "DelayedAction" { "Delay" "%delay" "Action" { "FireSound" { "EffectName" "Hero_Pugna.NetherBlast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_pugna/pugna_netherblast.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "01" "%radius %radius %radius" } } "Damage" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "Damage" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BUILDING" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage * %structure_damage_mod" } } } } } } } // Rewrite of Pugna Nether Ward // Author: Noya // Date: April 5, 2015 // Note: Multiple wards don't stack with this Aura method, setting the nether_ward_debuff as _MULTIPLE would make the aura be applied every frame instead of 1 per ward. "pugna_nether_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "pugna_nether_ward" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35.0 35.0 35.0 35.0" "AbilityDuration" "30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 80 80 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1600" } "02" { "var_type" "FIELD_FLOAT" "mana_multiplier" "1.00 1.25 1.50 1.75" } "03" { "var_type" "FIELD_FLOAT" "mana_regen" "-1.5 -3.0 -4.5 -6.0" } // Extra "04" { "var_type" "FIELD_INTEGER" "ward_1_count" "1 0 0 0" } "05" { "var_type" "FIELD_INTEGER" "ward_2_count" "0 1 0 0" } "06" { "var_type" "FIELD_INTEGER" "ward_3_count" "0 0 1 0" } "07" { "var_type" "FIELD_INTEGER" "ward_4_count" "0 0 0 1" } "08" { "var_type" "FIELD_INTEGER" "hero_attack_damage" "4" } "09" { "var_type" "FIELD_INTEGER" "attacks_to_destroy" "12" } } "precache" { "particle" "particles/units/heroes/hero_pugna/pugna_ward_ambient.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_ward_attack.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_ward_attack_light.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_ward_attack_medium.vpcf" "particle" "particles/units/heroes/hero_pugna/pugna_ward_attack_heavy.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_pugna.vsndevts" "model" "models/heroes/pugna/pugna_ward.vmdl" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Pugna.NetherWard" "Target" "CASTER" } "SpawnUnit" { "UnitName" "npc_dota_pugna_nether_ward_1" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Count" "1" "Distance" "100" } } "Duration" "%AbilityDuration" "UnitCount" "%ward_1_count" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_nether_ward" "Target" "TARGET" } } } "SpawnUnit" { "UnitName" "npc_dota_pugna_nether_ward_2" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Count" "1" "Distance" "100" } } "Duration" "%AbilityDuration" "UnitCount" "%ward_2_count" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_nether_ward" "Target" "TARGET" } } } "SpawnUnit" { "UnitName" "npc_dota_pugna_nether_ward_3" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Count" "1" "Distance" "100" } } "Duration" "%AbilityDuration" "UnitCount" "%ward_3_count" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_nether_ward" "Target" "TARGET" } } } "SpawnUnit" { "UnitName" "npc_dota_pugna_nether_ward_4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Count" "1" "Distance" "100" } } "Duration" "%AbilityDuration" "UnitCount" "%ward_4_count" "GrantsGold" "1" "GrantsXP" "1" "SpawnRadius" "10" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_nether_ward" "Target" "TARGET" } } } } "Modifiers" { "modifier_nether_ward" { "IsHidden" "1" "Aura" "modifier_nether_ward_debuff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "EffectName" "particles/units/heroes/hero_pugna/pugna_ward_ambient.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "NetherWardStart" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "NetherWardMana" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } } } "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "NetherWardAttacked" "Damage" "%attack_damage" } } } "modifier_nether_ward_debuff" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT" "%mana_regen" } "OnSpentMana" { "RunScript" { "ScriptFile" "heroes/hero_pugna/nether_ward.lua" "Function" "NetherWardZap" } } } } } // Rewrite of the Queen of Pain Blink ability // Author: Pizzalol // Date: 19.12.2014. "queenofpain_blink_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityTextureName" "queenofpain_blink" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts" "particle" "particles/units/heroes/hero_queenofpain/queen_blink_end.vpcf" "particle" "particles/units/heroes/hero_queenofpain/queen_blink_start.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.33 0.33 0.33 0.33" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 10.0 8.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 60 60 60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blink_range" "700 850 1000 1150" } "02" { "var_type" "FIELD_INTEGER" "min_blink_range" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_queenofpain/blink.lua" "Function" "Blink" "Target" "POINT" } "FireSound" { "EffectName" "Hero_QueenOfPain.Blink_out" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_queenofpain/queen_blink_start.vpcf" "Target" "CASTER" "EffectAttachType" "attach_hitloc" } "FireSound" { "EffectName" "Hero_QueenOfPain.Blink_in" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_queenofpain/queen_blink_end.vpcf" "Target" "CASTER" "EffectAttachType" "follow_origin" } } } // Rewrite of the Queen of Pain Scream of Pain ability // Author: Pizzalol // Date: 19.12.2014. "queenofpain_scream_of_pain_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "queenofpain_scream_of_pain" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts" "particle" "particles/units/heroes/hero_queenofpain/queen_scream_of_pain.vpcf" "particle" "particles/units/heroes/hero_queenofpain/queen_scream_of_pain_owner.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 7.0 7.0 7.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "85 165 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "area_of_effect" "475" } "02" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_QueenOfPain.ScreamOfPain" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_queenofpain/queen_scream_of_pain_owner.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%area_of_effect" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_queenofpain/queen_scream_of_pain.vpcf" "Dodgeable" "0" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_HITLOCATION" } } } } "OnProjectileHitUnit" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } // Rewrite of the Queen of Pain Shadow Strike ability // Author: Pizzalol // Date: 28.09.2015. // NOTE: Particle dagger attaches to the feet "queenofpain_shadow_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "queenofpain_shadow_strike" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts" "particle" "particles/units/heroes/hero_queenofpain/queen_shadow_strike.vpcf" "particle" "particles/units/heroes/hero_queenofpain/queen_shadow_strike_body.vpcf" "particle" "particles/units/heroes/hero_queenofpain/queen_shadow_strike_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "450 475 500 525" "AbilityCastPoint" "0.452 0.452 0.452 0.452" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 12.0 8.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "strike_damage" "50 75 100 125" } "02" { "var_type" "FIELD_INTEGER" "duration_damage" "30 40 50 60" } "03" { "var_type" "FIELD_INTEGER" "movement_slow" "-20 -30 -40 -50" } "04" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } "05" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "450 475 500 525" } "06" { "var_type" "FIELD_INTEGER" "damage_interval" "3" } "07" { "var_type" "FIELD_FLOAT" "duration" "15.0" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_queenofpain/queen_shadow_strike.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_QueenOfPain.ShadowStrike" "Target" "CASTER" } "FireEffect" { "Target" "CASTER" "EffectAttachType" "follow_origin" "EffectName" "particles/units/heroes/hero_queenofpain/queen_shadow_strike_body.vpcf" } } "OnProjectileHitUnit" { "RunScript" { "ScriptFile" "heroes/hero_queenofpain/shadow_strike.lua" "Function" "shadow_strike" "modifier" "modifier_shadow_strike_debuff_datadriven" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%strike_damage" } } "Modifiers" { "modifier_shadow_strike_debuff_datadriven" { "IsDebuff" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_queenofpain/queen_shadow_strike_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } } "ThinkInterval" "%damage_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%duration_damage" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-1" } } } } // Rewrite of the Queen of Pain Sonic Wave ability // Author: Pizzalol // Date: 19.12.2014. "queenofpain_sonic_wave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "FightRecapLevel" "2" "AbilityTextureName" "queenofpain_sonic_wave" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts" "particle" "particles/units/heroes/hero_queenofpain/queen_sonic_wave.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.452 0.452 0.452" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "135 135 135" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "250 360 500" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "starting_aoe" "100" } "02" { "var_type" "FIELD_INTEGER" "distance" "900" } "03" { "var_type" "FIELD_INTEGER" "final_aoe" "450" } "04" { "var_type" "FIELD_INTEGER" "speed" "1100" } "05" { "var_type" "FIELD_INTEGER" "damage" "290 390 490" } "06" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "40" } "07" { "var_type" "FIELD_INTEGER" "damage_scepter" "350 530 725" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_QueenOfPain.SonicWave" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_queenofpain/queen_sonic_wave.vpcf" "MoveSpeed" "%speed" "StartRadius" "%starting_aoe" "StartPosition" "attach_origin" "EndRadius" "%final_aoe" "FixedDistance" "%distance" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "1" "ProvidesVision" "0" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%damage" } } } "rattletrap_battery_assault_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "rattletrap_battery_assault" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "32.0 28.0 24.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "15 35 55 75" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.2" // applies many mini-stuns // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "02" { "var_type" "FIELD_FLOAT" "duration" "10.5 10.5 10.5 10.5" } "03" { "var_type" "FIELD_FLOAT" "interval" "0.7 0.7 0.7 0.7" } } } "rattletrap_hookshot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "rattletrap_hookshot" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCastRange" "2000 2500 3000" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "70.0 55.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "latch_radius" "125 125 125" } "02" { "var_type" "FIELD_INTEGER" "stun_radius" "175 175 175" } "03" { "var_type" "FIELD_FLOAT" "duration" "1.0 1.5 2.0" } "04" { "var_type" "FIELD_INTEGER" "speed" "4000 5000 6000" } "05" { "var_type" "FIELD_INTEGER" "tooltip_range" "2000 2500 3000" } "06" { "var_type" "FIELD_INTEGER" "damage" "100 200 300" } "07" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "12.0 12.0 12.0" } } } "rattletrap_power_cogs_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 60 70 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "225" } "02" { "var_type" "FIELD_FLOAT" "duration" "5.0 6.0 7.0 8.0" } "03" { "var_type" "FIELD_INTEGER" "drain_amount" "80 120 160 200" } "04" { "var_type" "FIELD_INTEGER" "attacks_to_destroy" "2 2 2 3" } "05" { "var_type" "FIELD_INTEGER" "push_length" "252" } "06" { "var_type" "FIELD_INTEGER" "push_speed" "300" } "07" { "var_type" "FIELD_INTEGER" "spacing" "160 160 160 160" } } } "rattletrap_rocket_flare_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "rattletrap_rocket_flare" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCastRange" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 18.0 16.0 14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 120 160 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "575 575 575 575" } "02" { "var_type" "FIELD_FLOAT" "duration" "10.0 10.0 10.0 10.0" } "03" { "var_type" "FIELD_INTEGER" "speed" "1500 1500 1500 1500" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "600" } } } "razor_eye_of_the_storm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "razor_eye_of_the_storm" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80 70 60" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500 500 500" } "02" { "var_type" "FIELD_FLOAT" "duration" "30.0" } "03" { "var_type" "FIELD_FLOAT" "strike_interval" "0.7 0.6 0.5" } "04" { "var_type" "FIELD_INTEGER" "armor_reduction" "1 1 1" } "05" { "var_type" "FIELD_INTEGER" "damage" "37 50 63" } "06" { "var_type" "FIELD_FLOAT" "strike_interval_scepter" "0.6 0.5 0.4" } } } "razor_plasma_field_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "razor_plasma_field" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 125 125 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_min" "30 50 70 90" } "02" { "var_type" "FIELD_INTEGER" "damage_max" "160 230 300 370" } "03" { "var_type" "FIELD_INTEGER" "radius" "700" } "04" { "var_type" "FIELD_INTEGER" "speed" "636" // 1.2 second to reach radius } } } "razor_static_link_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "32 30 28 26" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "drain_length" "8.0 8.0 8.0 8.0" } "02" { "var_type" "FIELD_FLOAT" "drain_duration" "18.0 18.0 18.0 18.0" } "03" { "var_type" "FIELD_INTEGER" "drain_rate" "7 14 21 28" } "04" { "var_type" "FIELD_INTEGER" "drain_range" "700 700 700 700" } "05" { "var_type" "FIELD_INTEGER" "radius" "200 200 200 200" } "06" { "var_type" "FIELD_INTEGER" "speed" "900 900 900 900" } "07" { "var_type" "FIELD_INTEGER" "vision_radius" "800 800 800 800" } "08" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34 3.34 3.34 3.34" } } } "razor_unstable_current_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "40 70 100 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movement_speed_pct" "4 8 12 16" } "02" { "var_type" "FIELD_FLOAT" "slow_duration" "0.5 1.0 1.5 2.0" } "03" { "var_type" "FIELD_FLOAT" "pause_duration" "0.3 0.3 0.3 0.3" } "04" { "var_type" "FIELD_FLOAT" "purge_frequency" "1 1 1 1" } "05" { "var_type" "FIELD_INTEGER" "slow_amount" "-100 -100 -100 -100" } } } "roshan_bash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bash_chance" "15" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "50" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "1.65" } } } "roshan_devotion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "5" } } } "roshan_halloween_angry_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement" "20" } "02" { "var_type" "FIELD_INTEGER" "bonus_health" "500" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "20" } "04" { "var_type" "FIELD_INTEGER" "bonus_armor" "2" } } } "roshan_halloween_apocalypse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "1.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "area_of_effect" "200" } "02" { "var_type" "FIELD_FLOAT" "delay" "2.0" } "03" { "var_type" "FIELD_FLOAT" "damage" "3000.0" } } } "roshan_halloween_burn_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "dragon_knight_breathe_fire" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0" "AbilityChannelTime" "2.5" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "1.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "radius" "200.0" } "02" { "var_type" "FIELD_INTEGER" "speed" "1000" } "03" { "var_type" "FIELD_FLOAT" "damage" "1000.0" } "04" { "var_type" "FIELD_FLOAT" "rotation_angle" "90.0" } "05" { "var_type" "FIELD_INTEGER" "projectile_count" "20" } } } "roshan_halloween_candy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement" "20" } "02" { "var_type" "FIELD_INTEGER" "bonus_health" "500" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "10" } "04" { "var_type" "FIELD_INTEGER" "bonus_armor" "2" } } } "roshan_halloween_fed_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "roshan_halloween_fireball_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "jakiro_liquid_fire" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilityCastPoint" "3.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "area_of_effect" "1200" } "02" { "var_type" "FIELD_INTEGER" "projectile_speed" "400" } "03" { "var_type" "FIELD_INTEGER" "radius" "300 300 300 300" } "04" { "var_type" "FIELD_INTEGER" "damage_percent" "50 50 50 50" } } } "roshan_halloween_greater_bash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "chance_pct" "25" } "02" { "var_type" "FIELD_FLOAT" "duration" ".35" } "03" { "var_type" "FIELD_FLOAT" "knockback_duration" ".25" } "04" { "var_type" "FIELD_INTEGER" "knockback_distance" "500" } } } "roshan_halloween_levels_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movement" "8" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "200" } "03" { "var_type" "FIELD_INTEGER" "bonus_armor" "1" } "04" { "var_type" "FIELD_INTEGER" "bonus_health_regen" "5" } "05" { "var_type" "FIELD_INTEGER" "bonus_magic_resist" "5" } } } "roshan_halloween_shell_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "MaxLevel" "1" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5" } "02" { "var_type" "FIELD_INTEGER" "bonus_spell_damage_pct" "-60" } } } "roshan_halloween_spell_block_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" } "roshan_halloween_summon_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" "AbilityTextureName" "roshan_spell_block" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "1.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "roshan_halloween_toss_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1300" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "1.0" } "02" { "var_type" "FIELD_INTEGER" "grab_radius" "300" } "03" { "var_type" "FIELD_INTEGER" "radius" "275" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "20" } "05" { "var_type" "FIELD_INTEGER" "grow_bonus_damage_pct" "35" } "06" { "var_type" "FIELD_INTEGER" "tooltip_range" "1300" } "07" { "var_type" "FIELD_INTEGER" "toss_damage" "500" } } } "roshan_halloween_wave_of_force_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "3.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "600" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "800" } "02" { "var_type" "FIELD_INTEGER" "speed" "775" } "03" { "var_type" "FIELD_FLOAT" "duration" "2.0" } "04" { "var_type" "FIELD_INTEGER" "mana_burn" "50" } "05" { "var_type" "FIELD_INTEGER" "game_end_radius" "3000" } "06" { "var_type" "FIELD_INTEGER" "game_end_damage" "100000" } } } "roshan_inherent_buffs_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" } "roshan_slam_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0" "AbilityCastPoint" "0.47 0.47 0.47 0.47" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "350" } "02" { "var_type" "FIELD_FLOAT" "slow_duration_hero" "2.0" } "03" { "var_type" "FIELD_FLOAT" "slow_duration_unit" "4.0" } "04" { "var_type" "FIELD_INTEGER" "slow_amount" "50" } "05" { "var_type" "FIELD_INTEGER" "damage" "70" } } } "roshan_spell_block_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0" } "roshan__halloween_shell_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "rubick_empty1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "rubick_empty2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "rubick_fade_bolt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "rubick_fade_bolt" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 14.0 12.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150 150" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800 800 800 800" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.35" // can chain to multiple units // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "70 140 210 280" } "02" { "var_type" "FIELD_INTEGER" "jump_damage_reduction_pct" "4 4 4 4" } "03" { "var_type" "FIELD_INTEGER" "hero_attack_damage_reduction" "14 20 26 32" } "04" { "var_type" "FIELD_INTEGER" "creep_attack_damage_reduction" "7 10 13 16" } "05" { "var_type" "FIELD_FLOAT" "duration" "10.0 10.0 10.0 10.0" } "06" { "var_type" "FIELD_INTEGER" "radius" "440" } "07" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25 0.25 0.25 0.25" } } } "rubick_hidden1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "rubick_hidden2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "rubick_hidden3_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "rubick_null_field_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "magic_damage_reduction_pct" "5 10 15 20" } "02" { "var_type" "FIELD_INTEGER" "radius" "900 900 900 900" } } } "rubick_spell_steal_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "1" "AbilityTextureName" "rubick_spell_steal" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 18.0 16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000 1000 1000" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "180.0 240.0 300.0" } "02" { "var_type" "FIELD_INTEGER" "projectile_speed" "900" } "03" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "1400" } "04" { "var_type" "FIELD_INTEGER" "cooldown_scepter" "5" } } } "rubick_telekinesis_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550 575 600 625" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "lift_duration" "1.5 1.75 2.0 2.25" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0 1.25 1.5 1.75" } "03" { "var_type" "FIELD_INTEGER" "radius" "325 325 325 325" } "04" { "var_type" "FIELD_INTEGER" "max_land_distance" "375 375 375 375" } "05" { "var_type" "FIELD_FLOAT" "fall_duration" "0.3 0.3 0.3 0.3" // the portion of the lift that is falling } "06" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "550 575 600 625" } } } "rubick_telekinesis_land_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_AOE" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "325 325 325 325" } } } "rune_doubledamage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "rune_haste_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "rune_invis_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "rune_regen_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } // Comment: // NOTE1: Missing one particle somewhere... "sandking_burrowstrike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "sandking_burrowstrike" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350 450 550 650" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11.0 11.0 11.0 11.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" "AbilityDamage" "100 160 220 280" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "burrow_width" "150" } "02" { "var_type" "FIELD_FLOAT" "burrow_duration" "2.17" } "03" { "var_type" "FIELD_INTEGER" "burrow_speed" "2000" } "04" { "var_type" "FIELD_FLOAT" "burrow_anim_time" "0.52" } "05" { "var_type" "FIELD_INTEGER" "tooltip_range" "350 450 550 650" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_cracks.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_cracks_center.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_cracks_background.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_dust.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_debris.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_ripple_b.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_ripple.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_rocks.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_dust.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_dirt.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_eruption_ripple_dust.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_burrowstrike_ground.vpcf" // Missing one particle somewhere... "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "OnSpellStart" { "LinearProjectile" { "MoveSpeed" "%burrow_speed" "StartRadius" "%burrow_width" "EndRadius" "%burrow_width" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "HasFrontalCone" "0" } "ApplyModifier" { "ModifierName" "modifier_burrowstrike_caster_datadriven" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_burrowstrike.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" "ControlPoints" { "01" "POINT" } } "FireSound" { "EffectName" "Ability.SandKing_BurrowStrike" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "true" "ApplyModifier" { "ModifierName" "modifier_burrowstrike_stun_datadriven" "Target" "TARGET" } "Knockback" { "Target" "TARGET" "Duration" "%burrow_anim_time" "Distance" "0" "Height" "500" } "DelayedAction" { "Delay" "%burrow_anim_time" "Action" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } } } } "OnProjectileFinish" { "RunScript" { "ScriptFile" "heroes/hero_sand_king/burrowstrike.lua" "Function" "burrowstrike_teleport" "Target" "POINT" } "RemoveModifier" { "ModifierName" "modifier_burrowstrike_caster_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_burrowstrike_caster_datadriven" { "IsHidden" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_burrowstrike_stun_datadriven" { "IsDebuff" "1" "Duration" "%burrow_duration" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "sandking_caustic_finale_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "sandking_caustic_finale" "AbilityDuration" "8.0 8.0 8.0 8.0" "AbilityDamage" "90 130 170 220" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "caustic_finale_radius" "400" } "02" { "var_type" "FIELD_INTEGER" "caustic_finale_damage" "90 130 170 220" } "03" { "var_type" "FIELD_FLOAT" "caustic_finale_duration" "8.0 8.0 8.0 8.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts" "particle" "particles/units/heroes/hero_sandking/sandking_caustic_finale_explode.vpcf" } "Modifiers" { "modifier_caustic_finale_buff_datadriven" { "IsHidden" "0" "IsPurgable" "0" "Passive" "1" "OnAttack" { "ApplyModifier" { "ModifierName" "modifier_caustic_finale_debuff_datadriven" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } } "modifier_caustic_finale_debuff_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "Duration" "%caustic_finale_duration" "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_sand_king/caustic_finale.lua" "Function" "caustic_finale_dead_effect" } } "OnDeath" { "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%caustic_finale_damage" "Target" { "Center" "UNIT" "Radius" "%caustic_finale_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" } } } } } } // Comment: // NOTE1: Need adjustment for sound // NOTE2: Post death attack(?) should not be working "sandking_epicenter_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "sandking_epicenter" "AbilityCastAnimation" "ACT_DOTA_IDLE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0 120.0 100.0" "AbilityDuration" "3.0 3.0 3.0" "AbilityChannelTime" "2.0 2.0 2.0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "175 250 325" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.2" // Damage is the main component of spell // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "epicenter_radius" "275 325 375 425 475 525 575 650 675 700 775 825" } "02" { "var_type" "FIELD_INTEGER" "epicenter_pulses" "6 8 10" } "03" { "var_type" "FIELD_INTEGER" "epicenter_damage" "110 110 110" } "04" { "var_type" "FIELD_INTEGER" "epicenter_slow" "-30 -30 -30" } "05" { "var_type" "FIELD_INTEGER" "epicenter_slow_as" "-30" } "06" { "var_type" "FIELD_INTEGER" "epicenter_slow_duration_tooltip" "3" } "07" { "var_type" "FIELD_INTEGER" "epicenter_pulses_scepter" "8 10 12" } "08" { "var_type" "FIELD_FLOAT" "epicenter_cooldown_scepter" "120.0 100.0 80.0" } // radius of each pulse "09" { "var_type" "FIELD_FLOAT" "epicenter_damage_interval" "0.5" } "10" { "var_type" "FIELD_INTEGER" "epicenter_pulse_01_radius" "275" } "11" { "var_type" "FIELD_INTEGER" "epicenter_pulse_02_radius" "325" } "12" { "var_type" "FIELD_INTEGER" "epicenter_pulse_03_radius" "375" } "13" { "var_type" "FIELD_INTEGER" "epicenter_pulse_04_radius" "425" } "14" { "var_type" "FIELD_INTEGER" "epicenter_pulse_05_radius" "475" } "15" { "var_type" "FIELD_INTEGER" "epicenter_pulse_06_radius" "525" } "16" { "var_type" "FIELD_INTEGER" "epicenter_pulse_07_radius" "575" } "17" { "var_type" "FIELD_INTEGER" "epicenter_pulse_08_radius" "650" } "18" { "var_type" "FIELD_INTEGER" "epicenter_pulse_09_radius" "675" } "19" { "var_type" "FIELD_INTEGER" "epicenter_pulse_10_radius" "700" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts" "particle" "particles/generic_gameplay/generic_stunned.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_epicenter_tell.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_epicenter_precast_datadriven" "Target" "CASTER" } "FireSound" { "EffectName" "Ability.SandKing_Epicenter.spell" "Target" "CASTER" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_epicenter_precast_datadriven" "Target" "CASTER" } } "OnChannelSucceeded" { "ApplyModifier" { "ModifierName" "modifier_epicenter_buff_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_epicenter_precast_datadriven" { "IsPurgable" "0" "IsHidden" "0" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter_tell.vpcf" "EffectAttachType" "start_at_custom_origin" "ControlPointEntities" { "CASTER" "attach_tail" "CASTER" "attach_tail" "CASTER" "attach_tail" } } } } "modifier_epicenter_buff_datadriven" { "IsPurgable" "0" "IsHidden" "0" "Duration" "%epicenter_damage_interval * %epicenter_pulses + 0.25" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_01_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_02_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_03_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_04_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_05_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_06_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_06_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_07_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_08_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_09_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_epicenter_pulse_10_datadriven" "Target" "CASTER" } "FireSound" { "Target" "CASTER" "EffectName" "Ability.SandKing_Epicenter" } } "OnDestroy" { // 1 to 6 is not needed "RemoveModifier" { "ModifierName" "modifier_epicenter_pulse_07_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_epicenter_pulse_08_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_epicenter_pulse_09_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_epicenter_pulse_10_datadriven" "Target" "CASTER" } } } "modifier_epicenter_debuff_datadriven" { "IsDebuff" "1" "Duration" "%epicenter_slow_duration_tooltip" "OnCreated" { "AttachEffect" { "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%epicenter_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%epicenter_slow_as" } } // Main pulses modifier "modifier_epicenter_pulse_01_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 1 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 1" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_01_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_01_radius %epicenter_pulse_01_radius %epicenter_pulse_01_radius" } } } } "modifier_epicenter_pulse_02_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 2 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 2" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_02_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_02_radius %epicenter_pulse_02_radius %epicenter_pulse_02_radius" } } } } "modifier_epicenter_pulse_03_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 3 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 3" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_03_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_03_radius %epicenter_pulse_03_radius %epicenter_pulse_03_radius" } } } } "modifier_epicenter_pulse_04_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 4 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 4" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_04_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_04_radius %epicenter_pulse_04_radius %epicenter_pulse_04_radius" } } } } "modifier_epicenter_pulse_05_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 5 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 5" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_05_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_05_radius %epicenter_pulse_05_radius %epicenter_pulse_05_radius" } } } } "modifier_epicenter_pulse_06_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 6 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 6" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_06_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_06_radius %epicenter_pulse_06_radius %epicenter_pulse_06_radius" } } } } "modifier_epicenter_pulse_07_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 7 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 7" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_07_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_07_radius %epicenter_pulse_07_radius %epicenter_pulse_07_radius" } } } } "modifier_epicenter_pulse_08_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 8 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 8" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_08_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_08_radius %epicenter_pulse_08_radius %epicenter_pulse_08_radius" } } } } "modifier_epicenter_pulse_09_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 9 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 9" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_09_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_09_radius %epicenter_pulse_09_radius %epicenter_pulse_09_radius" } } } } "modifier_epicenter_pulse_10_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%epicenter_damage_interval * 10 + 0.1" "ThinkInterval" "%epicenter_damage_interval * 10" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%epicenter_pulse_10_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Damage" "%epicenter_damage" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_epicenter_debuff_datadriven" "Target" "TARGET" } } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_sandking/sandking_epicenter.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPoints" { "01" "%epicenter_pulse_10_radius %epicenter_pulse_10_radius %epicenter_pulse_10_radius" } } } } } } // TODO: // NOTE1: OnUpgrade: While channeling, only damage is increased, the channeling time remains the same // Note2: Channeling animation needs to be fixed "sandking_sand_storm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "sandking_sand_storm" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityDuration" "20.0 40.0 60.0 80.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0 30.0 20.0 10.0" "AbilityChannelTime" "20.0 40.0 60.0 80.0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "25 50 75 100" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 50 40 30" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "sand_storm_invis_delay" "1.5" } "02" { "var_type" "FIELD_INTEGER" "sand_storm_radius" "525" } "03" { "var_type" "FIELD_FLOAT" "AbilityDuration" "20.0 40.0 60.0 80.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm_cloud.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm_eruption_dust.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm_cloud_center.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm_start.vpcf" "particle" "particles/units/heroes/hero_sandking/sandking_sandstorm_sand.vpcf" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } "FireSound" { "EffectName" "Ability.SandKing_SandStorm.start" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_sand_storm_debuff_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_sand_storm_vfx_datadriven" "Target" "CASTER" } "FireSound" { "EffectName" "Ability.SandKing_SandStorm.loop" "Target" "CASTER" } } "OnUpgrade" { // TODO: While channeling, only increase damage } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_sand_storm_debuff_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_sand_storm_debuff_datadriven" { "IsHidden" "0" "IsPurgable" "1" "Aura" "modifier_sand_storm_debuff_damage_datadriven" "Aura_Radius" "%sand_storm_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" "OnAbilityExecuted" { "RemoveModifier" { "ModifierName" "modifier_sand_storm_debuff_damage_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_sand_storm_remove_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_sand_king/sand_storm.lua" "Function" "sand_storm_remove_sound" } } } "modifier_sand_storm_debuff_damage_datadriven" { "IsDebuff" "1" "IsPurgable" "1" "OnCreated" { "Damage" { "Damage" "%AbilityDamage / 2" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } } "ThinkInterval" "0.5" "OnIntervalThink" { "Damage" { "Damage" "%AbilityDamage / 2" "Type" "DAMAGE_TYPE_MAGICAL" "Target" "TARGET" } } } "modifier_sand_storm_vfx_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_sandstorm_start.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_sandking/sandking_sandstorm.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "CASTER" "ControlPoints" { "01" "%sand_storm_radius %sand_storm_radius %sand_storm_radius" } } } } "modifier_sand_storm_remove_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Duration" "%sand_storm_invis_delay + 0.5" "OnCreated" { "DelayedAction" { "Delay" "%sand_storm_invis_delay" "Action" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_sand_storm_vfx_datadriven" "Target" "CASTER" } } } } } } } "satyr_hellcaller_shockwave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.5" "AbilityCooldown" "8.0" "AbilityDamage" "125" "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed" "1050" } "02" { "var_type" "FIELD_INTEGER" "radius_start" "180" } "03" { "var_type" "FIELD_INTEGER" "radius_end" "200" } "04" { "var_type" "FIELD_INTEGER" "distance" "980" } } } "satyr_hellcaller_unholy_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_regen" "4" } "02" { "var_type" "FIELD_INTEGER" "radius" "900" } } } "satyr_soulstealer_mana_burn_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "Modelscale" ".85" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.5" "AbilityCooldown" "18.0" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "burn_amount" "100" } } } "satyr_trickster_purge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "350" "AbilityCastPoint" "0.2" "AbilityCooldown" "5.0" "AbilityManaCost" "120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "purge_rate" "5" } "02" { "var_type" "FIELD_FLOAT" "duration" "5.0" } "03" { "var_type" "FIELD_INTEGER" "summon_damage" "400" } } } "shadow_demon_demonic_purge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "shadow_demon_demonic_purge" // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "5.0 5.0 5.0" "AbilityCooldown" "50.0 50.0 50.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "200 300 400" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 200 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_rate" "5 3 2" } "02" { "var_type" "FIELD_FLOAT" "tooltip_duration" "5.0 5.0 5.0" } "03" { "var_type" "FIELD_FLOAT" "creep_root_duration" "3.0 3.0 3.0" } "04" { "var_type" "FIELD_INTEGER" "max_charges" "3" } "05" { "var_type" "FIELD_INTEGER" "charge_restore_time" "40" } "06" { "var_type" "FIELD_INTEGER" "charge_restore_time_tooltip_scepter" "40" } } } "shadow_demon_disruption_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY | DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO | DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shadow_demon_disruption" // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "2.5 2.5 2.5 2.5" "AbilityCooldown" "25.0 22.0 19.0 16.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "disruption_duration" "2.5 2.5 2.5 2.5" } "02" { "var_type" "FIELD_FLOAT" "illusion_duration" "5.0 6.0 7.0 8.0" } "03" { "var_type" "FIELD_FLOAT" "illusion_outgoing_damage" "-70.0 -60.0 -50.0 -40.0" } "04" { "var_type" "FIELD_FLOAT" "illusion_outgoing_tooltip" "30.0 40.0 50.0 60.0" } "05" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage" "50.0 50.0 50.0 50.0" } "06" { "var_type" "FIELD_FLOAT" "tooltip_total_illusion_incoming_damage" "150.0 150.0 150.0 150.0" } } } "shadow_demon_shadow_poison_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "10.0 10.0 10.0 10.0" "AbilityCooldown" "2.75" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 50 50 50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // modifier is damage only. // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stack_damage" "20 35 50 65" } "02" { "var_type" "FIELD_INTEGER" "max_multiply_stacks" "5" } "03" { "var_type" "FIELD_FLOAT" "bonus_stack_damage" "50 50 50 50" } "04" { "var_type" "FIELD_INTEGER" "radius" "190" } "05" { "var_type" "FIELD_INTEGER" "speed" "1000 1000 1000 1000" } "06" { "var_type" "FIELD_FLOAT" "tooltip_duration" "10.0 10.0 10.0 10.0" } } } "shadow_demon_shadow_poison_release_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.0" } "shadow_demon_soul_catcher_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shadow_demon_soul_catcher" // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "12.0 12.0 12.0 12.0" "AbilityCooldown" "13.0 13.0 13.0 13.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 60 70 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage_taken" "20 30 40 50" } "02" { "var_type" "FIELD_INTEGER" "radius" "450 450 450 450" } "03" { "var_type" "FIELD_FLOAT" "tooltip_duration" "12.0 12.0 12.0 12.0" } } } // Rewrite of the Shadow Shaman Ether Shock ability // Author: Noya // Date: April 4, 2015. "shadow_shaman_ether_shock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shadow_shaman_ether_shock" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 105 135 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "start_radius" "200 200 200 200" } "02" { "var_type" "FIELD_INTEGER" "end_radius" "300 300 300 300" } "03" { "var_type" "FIELD_INTEGER" "end_distance" "500 500 500 500" } "04" { "var_type" "FIELD_INTEGER" "targets" "1 3 5 7" } "05" { "var_type" "FIELD_INTEGER" "damage" "140 200 260 320" } } "precache" { "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_ether_shock.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.EtherShock" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_shadow_shaman/shock.lua" "Function" "Shock" } } } // Rewrite of the Shadow Shaman Mass Serpent Ward ability // Author: Noya // Date: April 20, 2015. // Notes: Positioning is randomish, it should be done through Lua to properly place the 8 wards in a square and 2 at the sides "shadow_shaman_mass_serpent_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "shadow_shaman_mass_serpent_ward" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 350 600" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "ward_count" "10" } "02" { "var_type" "FIELD_INTEGER" "full_splash_radius" "50 75 85" } "03" { "var_type" "FIELD_INTEGER" "mid_splash_radius" "75 100 110" } "04" { "var_type" "FIELD_INTEGER" "min_splash_radius" "150 200 220" } "05" { "var_type" "FIELD_INTEGER" "damage_min" "40 55 70" } "06" { "var_type" "FIELD_INTEGER" "damage_max" "45 60 75" } "07" { "var_type" "FIELD_FLOAT" "duration" "45.0 45.0 45.0" } "08" { "var_type" "FIELD_INTEGER" "damage_min_scepter" "85 105 125" } "09" { "var_type" "FIELD_INTEGER" "damage_max_scepter" "90 110 130" } // Extra "10" { "var_type" "FIELD_INTEGER" "ward_1_count" "10 0 0" } "11" { "var_type" "FIELD_INTEGER" "ward_2_count" "0 10 0" } "12" { "var_type" "FIELD_INTEGER" "ward_3_count" "0 0 10" } "13" { "var_type" "FIELD_INTEGER" "splash_full" "100" } "14" { "var_type" "FIELD_INTEGER" "splash_medium" "40" } "15" { "var_type" "FIELD_INTEGER" "splash_small" "20" } } "precache" { "particle" "particles/units/heroes/hero_shadowshaman/shadow_shaman_ward_base_attack.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.SerpentWard" "Target" "CASTER" } "SpawnUnit" { "UnitName" "npc_dota_shadow_shaman_ward_1" "Target" "POINT" "UnitCount" "%ward_1_count" "Duration" "%duration" "SpawnRadius" "?10 100" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_serpent_ward" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_shadow_shaman_ward_2" "Target" "POINT" "UnitCount" "%ward_2_count" "Duration" "%duration" "SpawnRadius" "?10 100" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_serpent_ward" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_shadow_shaman_ward_3" "Target" "POINT" "UnitCount" "%ward_3_count" "Duration" "%duration" "SpawnRadius" "?10 100" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_serpent_ward" "Target" "TARGET" "Duration" "%duration" } } } } "Modifiers" { // modifier_shadow_shaman_serpent_ward is the Built-In, to give green damage to the wards "modifier_serpent_ward" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_shadow_shaman/mass_serpent_ward.lua" "Function" "SetWardDamage" } } "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_shadow_shaman/mass_serpent_ward.lua" "Function" "DealSplashDamage" } } } } } // Rewrite of the Shadow Shaman Shackles ability // Author: Noya // Date: April 4, 2015. "shadow_shaman_shackles_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shadow_shaman_shackles" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityChannelTime" "2.75 3.5 4.25 5.0" "AbilityCooldown" "16.0 16.0 16.0 16.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "40 40 40 40" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140 150 160 170" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "tick_interval" "0.1 0.1 0.1 0.1" } "02" { "var_type" "FIELD_FLOAT" "channel_time" "2.75 3.5 4.25 5.0" } "03" { "var_type" "FIELD_FLOAT" "total_damage" "120 160 160 200" } // Extra, calculated as total_damage / channel_time * tick_interval "03" { "var_type" "FIELD_FLOAT" "damage_per_tick" "4.3 4.6 3.8 4" } } "precache" { "particle" "particles/status_fx/status_effect_shaman_shackle.vpcf" "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_shackle.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.Shackles.Cast" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_shackles" "Target" "TARGET" "Duration" "%channel_time" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_shackles" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_shadow_shaman/shackles.lua" "Function" "StopSound" } } "Modifiers" { "modifier_shackles" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "StatusEffectName" "particles/status_fx/status_effect_shaman_shackle.vpcf" "StatusEffectPriority" "10" "OverrideAnimation" "ACT_DOTA_DISABLED" "ThinkInterval" "%tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_per_tick" } } "OnCreated" { "FireSound" { "EffectName" "Hero_ShadowShaman.Shackles" "Target" "TARGET" } "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_hitloc" //Attach to the hands or any desired attach point of the hero "CASTER" "attach_hitloc" } } } } } } // Rewrite of the Shadow Shaman Voodoo ability // Author: Noya // Date: 27.09.2015. "shadow_shaman_voodoo_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shadow_shaman_voodoo" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0 13.0 13.0 13.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 140 170 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movespeed" "100" } "02" { "var_type" "FIELD_FLOAT" "duration" "1.25 2.0 2.75 3.5" } } // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts" "particle" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "model" "models/props_gameplay/chicken.vmdl" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ShadowShaman.Hex.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_shadow_shaman/voodoo.lua" "Function" "voodoo_start" "Target" "TARGET" } } } "shoot_firework_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityCastRange" "1800" "AbilityCastPoint" "0.5" } "shredder_chakram_2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shredder_chakram_2" "MaxLevel" "3" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200 1200 1200" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "speed" "900.0" } "02" { "var_type" "FIELD_FLOAT" "radius" "200.0" } "03" { "var_type" "FIELD_INTEGER" "pass_damage" "100 140 180" } "04" { "var_type" "FIELD_INTEGER" "damage_per_second" "50 75 100" } "05" { "var_type" "FIELD_INTEGER" "slow" "5" } "06" { "var_type" "FIELD_FLOAT" "damage_interval" "0.5" } "07" { "var_type" "FIELD_FLOAT" "break_distance" "2000.0" } "08" { "var_type" "FIELD_FLOAT" "mana_per_second" "20.0 25.0 30.0" } "09" { "var_type" "FIELD_FLOAT" "pass_slow_duration" "0.5" } } } "shredder_chakram_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shredder_chakram" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200 1200 1200" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "speed" "900.0" } "02" { "var_type" "FIELD_FLOAT" "radius" "200.0" } "03" { "var_type" "FIELD_INTEGER" "pass_damage" "100 140 180" } "04" { "var_type" "FIELD_INTEGER" "damage_per_second" "50 75 100" } "05" { "var_type" "FIELD_INTEGER" "slow" "5" } "06" { "var_type" "FIELD_FLOAT" "damage_interval" "0.5" } "07" { "var_type" "FIELD_FLOAT" "break_distance" "2000.0" } "08" { "var_type" "FIELD_FLOAT" "mana_per_second" "20.0 25.0 30.0" } "09" { "var_type" "FIELD_FLOAT" "pass_slow_duration" "0.5" } } } "shredder_reactive_armor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "1" } "02" { "var_type" "FIELD_INTEGER" "bonus_hp_regen" "1" } "03" { "var_type" "FIELD_INTEGER" "stack_limit" "4 8 12 16" } "04" { "var_type" "FIELD_FLOAT" "stack_duration" "16.0 16.0 16.0 16.0" } } } "shredder_return_chakram_2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "3" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" } "shredder_return_chakram_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" } "shredder_timber_chain_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shredder_timber_chain" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCastRange" "800 1000 1200 1400" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "4.0 4.0 4.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 70 80 90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "chain_radius" "90 90 90 90" } "02" { "var_type" "FIELD_INTEGER" "range" "850 1050 1250 1450" } "03" { "var_type" "FIELD_INTEGER" "damage_radius" "225 225 225 225" } "04" { "var_type" "FIELD_INTEGER" "speed" "1600 2000 2400 2800" } "05" { "var_type" "FIELD_INTEGER" "damage" "100 140 180 220" } } } "shredder_whirling_death_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "shredder_whirling_death" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 80 90 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "whirling_radius" "300" } "02" { "var_type" "FIELD_INTEGER" "whirling_damage" "100 150 200 250" } "03" { "var_type" "FIELD_FLOAT" "whirling_tick" "0.3" } "04" { "var_type" "FIELD_INTEGER" "stat_loss_pct" "15" } "05" { "var_type" "FIELD_FLOAT" "duration" "7.0" } } } // Rewrite of the Silencer Curse of the Silent // Author: chrislotix // Date: 09.01.2015. // NOTE: Will trigger on items with mana cost "silencer_curse_of_the_silent_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "silencer_curse_of_the_silent" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_silencer.vsndevts" "particle" "particles/units/heroes/hero_silencer/silencer_curse.vpcf" "particle" "particles/units/heroes/hero_silencer/silencer_curse_aoe.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 16.0 12.0 8.0" "AbilityDuration" "6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 95 115 135" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Mainly about damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_damage" "8 16 24 32" } "02" { "var_type" "FIELD_INTEGER" "health_damage" "20 35 50 65" } "03" { "var_type" "FIELD_INTEGER" "radius" "350 350 350 350" } "04" { "var_type" "FIELD_INTEGER" "tooltip_duration" "6" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_silencer/silencer_curse_aoe.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "FireSound" { "EffectName" "Hero_Silencer.Curse.Cast" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Type" "DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_curse_debuff_datadriven" "Target" "TARGET" } } } } "Modifiers" { "modifier_curse_debuff_datadriven" { "IsDebuff" "1" "Duration" "%tooltip_duration" "IsHidden" "0" "IsPurgable" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "EffectName" "particles/units/heroes/hero_silencer/silencer_curse.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" "ThinkInterval" "1.0" "OnCreated" { "FireSound" { "EffectName" "Hero_Silencer.Curse.Impact" "Target" "CASTER" } } "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%health_damage" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_silencer/curse_of_the_silent.lua" "Function" "ManaDrain" "Target" "POINT" } } "OnSpentMana" { "RemoveModifier" { "ModifierName" "modifier_curse_debuff_datadriven" "Target" "UNIT" } } } } } // Rewrite of the Silencer Glaives of Wisdom // Author: chrislotix // Date: 10.01.2015. // NOTE: It won't have int steal since it's part of the actual Silencer and not the spell itself "silencer_glaives_of_wisdom_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityTextureName" "silencer_glaives_of_wisdom" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_silencer.vsndevts" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "0.0 0.0 0.0 0.0" "AbilityCastRange" "600" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15 15 15 15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "intellect_damage_pct" "30 48 66 84" } "02" { "var_type" "FIELD_INTEGER" "steal_range" "925" } } "Modifiers" { "modifier_glaives_of_wisdom_datadriven" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_silencer/silencer_glaives_of_wisdom.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_Silencer.GlaivesOfWisdom" "Target" "CASTER" } } "OnOrbImpact" { "FireSound" { "EffectName" "Hero_Silencer.GlaivesOfWisdom.Damage" "Target" "TARGET" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_silencer/glaives_of_wisdom.lua" "Function" "IntToDamage" "Target" "TARGET" } } } } } // Rewrite of the Silencer Last Word // Author: chrislotix // Date: 11.01.2015. "silencer_global_silence_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "silencer_global_silence" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_silencer.vsndevts" "particle" "particles/units/heroes/hero_silencer/silencer_global_silence.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "130.0" "AbilityDuration" "4.0 5.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "250 375 500" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Hits all units on the map. // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "tooltip_duration" "4.0 5.0 6.0" } "02" { "var_type" "FIELD_FLOAT" "duration_scepter" "5.0 6.0 7.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Silencer.GlobalSilence.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_silencer/silencer_global_silence.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "ApplyModifier" { "ModifierName" "modifier_global_silence_datadriven" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Silencer.GlobalSilence.Effect" "Target" "TARGET" } } } } "Modifiers" { "modifier_global_silence_datadriven" { "IsDebuff" "1" "Duration" "%tooltip_duration" "IsPurgable" "1" "EffectName" "particles/generic_gameplay/generic_silence.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Silencer Last Word // Author: chrislotix // Date: 11.01.2015. // NOTE: Will trigger on items with mana cost "silencer_last_word_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "silencer_last_word" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_silencer.vsndevts" "particle" "particles/units/heroes/hero_silencer/silencer_last_word.vpcf" "particle" "particles/units/heroes/hero_silencer/silencer_last_word_status.vpcf" "particle" "particles/generic_gameplay/generic_silence.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" "AbilityCastRange" "900" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "36.0 28.0 20.0 12.0" "AbilityManaCost" "115" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "3 4 5 6" } "02" { "var_type" "FIELD_FLOAT" "debuff_duration" "5" } "03" { "var_type" "FIELD_INTEGER" "damage" "150 200 250 300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Silencer.LastWord.Cast" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_last_word_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_last_word_datadriven" { "IsDebuff" "1" "Duration" "%debuff_duration" "ThinkInterval" "%debuff_duration" "EffectName" "particles/units/heroes/hero_silencer/silencer_last_word_status.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" } "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Silencer.LastWord.Damage" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_last_word_disarm_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_last_word_silence_datadriven" "Target" "TARGET" } } "OnCreated" { "FireSound" { "EffectName" "Hero_Silencer.LastWord.Target" "Target" "TARGET" } } "OnSpentMana" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_silencer/last_word.lua" "Function" "LastWordStopSound" "Target" "UNIT" } "FireSound" { "EffectName" "Hero_Silencer.LastWord.Damage" "Target" "UNIT" } "RemoveModifier" { "ModifierName" "modifier_last_word_datadriven" "Target" "UNIT" } "ApplyModifier" { "ModifierName" "modifier_last_word_silence_datadriven" "Target" "UNIT" } "Damage" { "Target" "UNIT" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } "modifier_last_word_silence_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/generic_gameplay/generic_silence.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_last_word_disarm_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_silencer/silencer_last_word_disarm.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of Skeleton Wraith King Hellfire Blast // Author: Noya // Date: 12.1.2015. // Notes: The damage is done in a separate hidden thinker modifier that is applied after the stun duration "skeleton_king_hellfire_blast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "skeleton_king_hellfire_blast" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "525" "AbilityCastPoint" "0.35 0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 100 150 200" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Applies two modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blast_speed" "1000" } "02" { "var_type" "FIELD_FLOAT" "blast_stun_duration" "2.0" } "03" { "var_type" "FIELD_INTEGER" "blast_slow" "-20" } "04" { "var_type" "FIELD_FLOAT" "blast_dot_duration" "4" } "05" { "var_type" "FIELD_INTEGER" "blast_dot_damage" "15 30 40 50" } "06" { "var_type" "FIELD_FLOAT" "tooltip_slow_duration" "2" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skeletonking.vsndevts" "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast.vpcf" "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_explosion.vpcf" "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "particle" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_warmup.vpcf" } "OnAbilityPhaseStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_warmup.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack2" } } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "VisionRadius" "0" "MoveSpeed" "%blast_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_2" } "FireSound" { "EffectName" "Hero_SkeletonKing.Hellfire_Blast" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_SkeletonKing.Hellfire_BlastImpact" "Target" "CASTER" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_hellfire_blast_stun" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_hellfire_blast_slow" "Target" "TARGET" } "DelayedAction" { "Delay" "%blast_stun_duration" "Action" { "ApplyModifier" { "ModifierName" "modifier_hellfire_blast_dot" "Target" "TARGET" } } } "FireEffect" { "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" //CP3 needs to be attached to the target hit "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } } "Modifiers" { "modifier_hellfire_blast_stun" { "IsDebuff" "1" "Duration" "%blast_stun_duration" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } "modifier_hellfire_blast_slow" { "IsDebuff" "1" "Duration" "%blast_dot_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%blast_slow" } "EffectName" "particles/units/heroes/hero_skeletonking/skeletonking_hellfireblast_debuff.vpcf" "EffectAttachType" "follow_origin" } "modifier_hellfire_blast_dot" { "IsHidden" "1" "Duration" "%tooltip_slow_duration" "ThinkInterval" "1" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%blast_dot_damage" } } } } } // Rewrite of Skeleton Wraith King Mortal Strike // Author: Noya // Date: 12.1.2015. // Notes: Crit is decided OnAttackStarted, but removed before being decided so that a player can never get a guaranteed crit by cancelling animation "skeleton_king_mortal_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityTextureName" "skeleton_king_mortal_strike" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_mult" "150 200 250 300" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "15" } "03" { "var_type" "FIELD_INTEGER" "hp_drain" "20" } "04" { "var_type" "FIELD_FLOAT" "drain_duration" "7.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skeletonking.vsndevts" "particle" "particles/units/heroes/hero_skeletonking/skeleton_king_weapon_blur_critical.vpcf" } "Modifiers" { "modifier_mortal_strike" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_mortal_strike_crit" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "FireSound" { "EffectName" "Hero_SkeletonKing.CriticalStrike" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_skeletonking/skeleton_king_weapon_blur_critical.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_mortal_strike_crit" "Target" "CASTER" } } } } } "modifier_mortal_strike_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_mult" } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_mortal_strike_crit" "Target" "CASTER" } } } } } // Rewrite of Skeleton Wraith King Reincarnation // Author: Noya // Date: 12.1.2015. // Notes: "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) "skeleton_king_reincarnation_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "skeleton_king_reincarnation" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "260 160 60" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "160" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.2" // Slow isn't the main function of this ability. "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "reincarnate_time" "3.0 3.0 3.0" } "02" { "var_type" "FIELD_INTEGER" "slow_radius" "900" } "03" { "var_type" "FIELD_INTEGER" "movespeed" "-75" } "04" { "var_type" "FIELD_INTEGER" "attackslow_tooltip" "-75" } "05" { "var_type" "FIELD_FLOAT" "slow_duration" "5.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" "particle" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_slow_debuff.vpcf" } "Modifiers" { "modifier_reincarnation" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_skeleton_king/reincarnation.lua" "Function" "Reincarnation" } } } "modifier_reincarnation_slow" { "IsDebuff" "1" "Duration" "%slow_duration" "EffectName" "particles/units/heroes/hero_skeletonking/wraith_king_reincarnate_slow_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackslow_tooltip" } } } } // Rewrite of Skeleton Wraith King Vampiric Aura // Author: Noya // Date: 12.1.2015. // Notes: Using the datadriven Lifesteal Action (shows a +Healed green popup) "skeleton_king_vampiric_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityTextureName" "skeleton_king_vampiric_aura" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "vampiric_aura_radius" "900" } "02" { "var_type" "FIELD_INTEGER" "vampiric_aura" "15 20 25 30" } } "precache" { // Not really used in the Lifesteal action "particle" "particles/units/heroes/hero_skeletonking/wraith_king_vampiric_aura_lifesteal.vpcf" } "Modifiers" { "modifier_vampiric_aura" { "Passive" "1" "IsHidden" "1" "IsBuff" "1" "Aura" "modifier_vampiric_aura_buff" "Aura_Radius" "%vampiric_aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "modifier_vampiric_aura_buff" { "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_skeleton_k/vampiric_aura.lua" "Function" "VampiricAuraApply" } } } "modifier_vampiric_aura_lifesteal" { "IsHidden" "1" "OnDealDamage" { "Lifesteal" { "Target" "ATTACKER" "LifestealPercent" "%lifesteal" } } } } } "skywrath_mage_ancient_seal_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "skywrath_mage_ancient_seal" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "resist_debuff" "-30 -35 -40 -45" } "02" { "var_type" "FIELD_FLOAT" "seal_duration" "3.0 4.0 5.0 6.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_ancient_seal_debuff_rune.vpcf" "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_ancient_seal_silence.vpcf" } "OnSpellStart" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_SkywrathMage.AncientSeal.Target" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_ancient_seal_hero_debuff_datadriven" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_ancient_seal_basic_debuff_datadriven" } } "Modifiers" { "modifier_ancient_seal_hero_debuff_datadriven" { "Duration" "%seal_duration" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_ancient_seal_debuff.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%resist_debuff" } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_ancient_seal_basic_debuff_datadriven" { "Duration" "%seal_duration" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_ancient_seal_debuff_rune.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" } } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_ancient_seal_silence.vpcf" "EffectAttachType" "follow_overhead" } } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } "skywrath_mage_arcane_bolt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "skywrath_mage_arcane_bolt" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0 4.0 3.0 2.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 70 70 70" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bolt_speed" "500" } "02" { "var_type" "FIELD_INTEGER" "bolt_vision" "325" } "03" { "var_type" "FIELD_FLOAT" "bolt_damage" "60 80 100 120" } "04" { "var_type" "FIELD_FLOAT" "int_multiplier" "1.6" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_arcane_bolt.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.ArcaneBolt.Cast" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_arcane_bolt.vpcf" "Dodgeable" "0" "ProvidesVision" "1" "VisionRadius" "%bolt_vision" "MoveSpeed" "%bolt_speed" } "RunScript" { "ScriptFile" "heroes/hero_skywrath_mage/arcane_bolt.lua" "Function" "arcane_bolt_init" } } "OnProjectileHitUnit" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.ArcaneBolt.Impact" } "RunScript" { "ScriptFile" "heroes/hero_skywrath_mage/arcane_bolt.lua" "Function" "arcane_bolt_hit" } } } "skywrath_mage_concussive_shot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "skywrath_mage_concussive_shot" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" "AbilityCastRange" "1600" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 18.0 16.0 14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 110 110 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "launch_radius" "1600" } "02" { "var_type" "FIELD_INTEGER" "slow_radius" "200" } "03" { "var_type" "FIELD_INTEGER" "speed" "800 800 800 800" } "04" { "var_type" "FIELD_INTEGER" "damage" "60 120 180 240" } "05" { "var_type" "FIELD_FLOAT" "slow_duration" "4.0" } "06" { "var_type" "FIELD_INTEGER" "movement_speed_pct" "-30 -35 -40 -45" } "07" { "var_type" "FIELD_INTEGER" "shot_vision" "400" } "08" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_concussive_shot.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.ConcussiveShot.Cast" } "RunScript" { "ScriptFile" "heroes/hero_skywrath_mage/concussive_shot.lua" "Function" "concussive_shot_seek_target" } } "OnProjectileHitUnit" { "RunScript" { "ScriptFile" "heroes/hero_skywrath_mage/concussive_shot.lua" "Function" "concussive_shot_post_vision" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.ConcussiveShot.Target" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%slow_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%damage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_concussive_shot_slow_datadriven" } } } } "Modifiers" { "modifier_concussive_shot_slow_datadriven" { "IsHidden" "0" "IsDebuff" "1" "Duration" "%slow_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_pct" } } } } // NOTE: Three particles making the ground dome did not show up for me, so I manually put them into the spell. If you try without those three and show up fine for you, it is safe to delete them. "skywrath_mage_mystic_flare_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "skywrath_mage_mystic_flare" "AOERadius" "170" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 40.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "350 575 800" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "170" } "02" { "var_type" "FIELD_FLOAT" "duration" "2.4" } "03" { "var_type" "FIELD_INTEGER" "damage" "600 1000 1400" } "04" { "var_type" "FIELD_FLOAT" "damage_interval" "0.1" } "05" { "var_type" "FIELD_FLOAT" "scepter_cooldown" "20 10 0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_skywrath_mage.vsndevts" "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_c.vpcf" // Attach for core "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_f.vpcf" // Attach for core "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_j.vpcf" // Attach for core "particle" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient.vpcf" // Main particle } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.MysticFlare.Cast" } "RunScript" { "ScriptFile" "heroes/hero_skywrath_mage/mystic_flare.lua" "Function" "mystic_flare_start" "Target" "POINT" } } "Modifiers" { "modifier_mystic_flare_dummy_vfx_datadriven" { "OnCreated" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_SkywrathMage.MysticFlare" } // For some reasons, these three particles do not show up for me so I have to manually put them in "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_c.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_f.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient_j.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } // Main Effect "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_skywrath_mage/skywrath_mage_mystic_flare_ambient.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "ControlPoints" { "01" "0 %duration 0" } } } "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" } } } } // Rewrite of the Slardar Amplify Damage // Author: chrislotix // Date: 01.01.2015. // Changed: 14.01.2015 - Fixed particle attachment in Lua // Changed: 07.02.2015. - Amplify Damage reveals invisible units properly "slardar_amplify_damage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "slardar_amplify_damage" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_slardar.vsndevts" "particle" "particles/units/heroes/hero_slardar/slardar_amp_damage.vpcf" "particle" "particles/status_fx/status_effect_slardar_amp_damage.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "6.0" // Very valuable compared to cost. "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_reduction" "-10 -15 -20" } "02" { "var_type" "FIELD_FLOAT" "duration" "25.0 25.0 25.0" } } "OnSpellStart" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_amplify_damage_datadriven" } "FireSound" { "EffectName" "Hero_Slardar.Amplify_Damage" "Target" "TARGET" } } "Modifiers" { "modifier_amplify_damage_datadriven" { "Duration" "%duration" "isDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_slardar_amp_damage.vpcf" "StatusEffectPriority" "20" "OnCreated" { // Closest datadriven particle attachment for this, shows the cloud but they don't go overhead, just origin //"AttachEffect" //{ // "EffectName" "particles/units/heroes/hero_slardar/slardar_amp_damage.vpcf" // "EffectAttachType" "follow_customorigin" // "Target" "TARGET" // "ControlPointEntities" // { // "TARGET" "follow_overhead" //Armor // "TARGET" "follow_overhead" //Rain // "TARGET" "follow_overhead" //Cloud // } //} "RunScript" { "ScriptFile" "heroes/hero_slardar/amplify_damage.lua" "Function" "AmplifyDamageParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_slardar/amplify_damage.lua" "Function" "EndAmplifyDamageParticle" } } "ThinkInterval" "0.5" "OnIntervalThink" { "RemoveModifier" { "ModifierName" "modifier_amplify_damage_reveal_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_amplify_damage_reveal_datadriven" "Target" "TARGET" "Duration" "0.5" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } "States" { "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_amplify_damage_reveal_datadriven" { "IsHidden" "1" "IsPurgable" "0" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" } } } } // Rewrite of the Slardar Bash // Author: chrislotix // Date: 01.01.2015. // Changed: 15.01.2015. // Changed by: Pizzalol // Reason: Improved spell code "slardar_bash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "slardar_bash" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_slardar.vsndevts" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "chance" "10 15 20 25" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "60 80 100 120" } "03" { "var_type" "FIELD_FLOAT" "duration" "1.0" } "04" { "var_type" "FIELD_FLOAT" "duration_creep" "2.0" } } "Modifiers" { "modifier_bash_stun_datadriven" { "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_bash_datadriven" { "IsHidden" "1" "Passive" "1" "OnAttackLanded" { "Random" { "Chance" "%chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_SLARDAR_BASH" "OnSuccess" { "FireSound" { "EffectName" "Hero_Slardar.Bash" "Target" "TARGET" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_bash_stun_datadriven" "Duration" "%duration" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_bash_stun_datadriven" "Duration" "%duration_creep" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%bonus_damage" } } } } } } } // Rewrite of the Slardar Slithereen Crush // Author: chrislotix // Date: 01.01.2015. "slardar_slithereen_crush_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "slardar_slithereen_crush" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_slardar.vsndevts" "particle" "particles/units/heroes/hero_slardar/slardar_crush.vpcf" "particle" "particles/units/heroes/hero_slardar/slardar_crush_entity.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.35 0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" "AbilityDuration" "1.6 1.9 2.2 2.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 100 150 200" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 95 105 115" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crush_radius" "350" } "02" { "var_type" "FIELD_INTEGER" "crush_extra_slow" "-20" } "03" { "var_type" "FIELD_INTEGER" "crush_attack_slow_tooltip" "-20" } "04" { "var_type" "FIELD_FLOAT" "crush_extra_slow_duration" "3.6 3.9 4.2 4.5" } "05" { "var_type" "FIELD_FLOAT" "stun_duration" "1.6 1.9 2.2 2.5" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_slardar/slardar_crush.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_slardar/slardar_crush_entity.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Slardar.Slithereen_Crush" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%crush_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_slithereen_crush_slow_datadriven" } "Stun" { "Duration" "%stun_duration" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" } } } } "Modifiers" { "modifier_slithereen_crush_slow_datadriven" { "Duration" "%crush_extra_slow_duration" "isDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%crush_extra_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%crush_extra_slow" } } } } // Rewrite of the Slardar Sprint // Author: chrislotix // Date: 01.01.2015. "slardar_sprint_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityTextureName" "slardar_sprint" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_slardar.vsndevts" "particle" "particles/units/heroes/hero_slardar/slardar_sprint.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "28" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "15" } "02" { "var_type" "FIELD_INTEGER" "bonus_speed" "20 28 36 44" } "03" { "var_type" "FIELD_FLOAT" "duration" "20.0 20.0 20.0 20.0" } } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_sprint_datadriven" } "FireSound" { "EffectName" "Hero_Slardar.Sprint" "Target" "CASTER" } } "Modifiers" { "modifier_sprint_datadriven" { "IsBuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_slardar/slardar_sprint.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%bonus_damage" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_speed" } } } } "slark_dark_pact_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "slark_dark_pact" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.001 0.001 0.001 0.001" "AbilityCastRange" "325" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9.0 8.0 7.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "55 50 45 40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "delay" "1.5" } "02" { "var_type" "FIELD_FLOAT" "pulse_duration" "1.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "325" } "04" { "var_type" "FIELD_INTEGER" "total_damage" "75 150 225 300" } "05" { "var_type" "FIELD_INTEGER" "total_pulses" "10" } "06" { "var_type" "FIELD_FLOAT" "pulse_interval" "0.1" } } } // Rewrite of Slark's Essence Shift // Author: Rook // Date: January 28, 2015 "slark_essence_shift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "slark_essence_shift" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "agi_gain" "3" } "02" { "var_type" "FIELD_INTEGER" "stat_loss" "-1" } "03" { "var_type" "FIELD_FLOAT" "duration" "15 30 60 120" } } "Modifiers" { "modifier_slark_essence_shift_datadriven" //This modifier is always on Slark and simply triggers a script when an autoattack lands on an enemy. { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_slark/essence_shift.lua" "Function" "modifier_slark_essence_shift_datadriven_on_attack_landed" "StatLoss" "%stat_loss" } } } "modifier_slark_essence_shift_datadriven_buff_counter" //A visible counter that will appear in Slark's modifier bar. { "Duration" "%duration" "Passive" "0" "IsHidden" "0" } "modifier_slark_essence_shift_datadriven_debuff_counter" //A visible counter that will appear in Slark's target's modifier bar. { "Duration" "%duration" "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "0" } "modifier_slark_essence_shift_datadriven_buff" { "Duration" "%duration" "Passive" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%agi_gain" } "OnDestroy" //Decrement the visible counter. { "RunScript" { "ScriptFile" "heroes/hero_slark/essence_shift.lua" "Function" "modifier_slark_essence_shift_datadriven_buff_on_destroy" } } } "modifier_slark_essence_shift_datadriven_debuff" { "Duration" "%duration" "Passive" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS" "%stat_loss" "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%stat_loss" "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%stat_loss" } "OnDestroy" //Decrement the visible counter. { "RunScript" { "ScriptFile" "heroes/hero_slark/essence_shift.lua" "Function" "modifier_slark_essence_shift_datadriven_debuff_on_destroy" } } } } } "slark_pounce_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "slark_pounce" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 16.0 12.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "pounce_distance" "700" } "02" { "var_type" "FIELD_FLOAT" "pounce_speed" "933.33" } "03" { "var_type" "FIELD_FLOAT" "pounce_acceleration" "7000.0" } "04" { "var_type" "FIELD_INTEGER" "pounce_radius" "95" } "05" { "var_type" "FIELD_INTEGER" "pounce_damage" "60 120 180 240" } "06" { "var_type" "FIELD_FLOAT" "leash_duration" "3.5" } "07" { "var_type" "FIELD_INTEGER" "leash_radius" "325" } } } "slark_shadow_dance_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "FightRecapLevel" "2" "AbilityTextureName" "slark_shadow_dance" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "0.0 0.0 0.0" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "30 35 40" } "04" { "var_type" "FIELD_INTEGER" "bonus_regen_pct" "3 5 7" } "05" { "var_type" "FIELD_FLOAT" "activation_delay" "0.5 0.5 0.5" } "06" { "var_type" "FIELD_FLOAT" "neutral_disable" "2.0 2.0 2.0" } } } "sniper_assassinate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "sniper_assassinate" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2000 2500 3000" "AbilityCastRangeBuffer" "600" "AbilityCastPoint" "2.0 2.0 2.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // 20.0 15.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "355 505 655" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // 175 275 375" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier just does damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "projectile_speed" "2500 2500 2500" } "02" { "var_type" "FIELD_INTEGER" "tooltip_range" "2000 2500 3000" } // Extra variables "03" { "var_type" "FIELD_FLOAT" "charge_time" "2.0" } "04" { "var_type" "FIELD_FLOAT" "debuff_duration" "4.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sniper.vsndevts" "particle" "particles/units/heroes/hero_sniper/sniper_assassinate.vpcf" "particle" "particles/units/heroes/hero_sniper/sniper_crosshair.vpcf" } "OnAbilityPhaseStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.AssassinateLoad" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_assassinate_caster_datadriven" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_assassinate_target_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_sniper/assassinate.lua" "Function" "assassinate_register_target" } } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.Assassinate" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_sniper/sniper_assassinate.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_HITLOCATION" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_Sniper.AssassinateProjectile" } } "OnProjectileHitUnit" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Sniper.AssassinateDamage" } "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_assassinate_target_datadriven" } } "Modifiers" { "modifier_assassinate_caster_datadriven" { "Duration" "%charge_time" "OnOrder" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_assassinate_caster_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_sniper/assassinate.lua" "Function" "assassinate_remove_target" } } } "modifier_assassinate_target_datadriven" { "IsHidden" "0" "IsPurgeble" "0" "IsDebuff" "1" "Duration" "%debuff_duration" "EffectName" "particles/units/heroes/hero_sniper/sniper_crosshair.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } "sniper_headshot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "sniper_headshot" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "15 40 65 90" // Special //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "slow_duration" "0.5" } "02" { "var_type" "FIELD_INTEGER" "proc_chance" "40" } "03" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-100" } "04" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-100" } } // Data driven //------------------------------------------------------------------------------------------------------------- "Modifiers" { "modifier_headshot_passive_datadriven" { "Passive" "1" "IsHidden" "0" "IsPurgable" "0" "OnAttackLanded" { "Random" { "Chance" "%proc_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_SNIPER_HEADSHOT" "OnSuccess" { "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "ModifierName" "modifier_headshot_debuff_datadriven" } "Damage" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_PHYSICAL" } } } } } "modifier_headshot_debuff_datadriven" { "IsHidden" "0" "Duration" "%slow_duration" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed_slow" } } } } "sniper_shrapnel_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "sniper_shrapnel" "AOERadius" "%radius" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "12 24 36 48" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.25" // primarily about damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-15 -20 -25 -30" } "02" { "var_type" "FIELD_INTEGER" "radius" "450" } "03" { "var_type" "FIELD_INTEGER" "building_damage" "4 8 12 16" } "04" { "var_type" "FIELD_FLOAT" "duration" "10.0" } "05" { "var_type" "FIELD_FLOAT" "damage_delay" "0.8 0.8 0.8 0.8" } "06" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0 2.0 2.0 2.0" } // Extra variables "07" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } "08" { "var_type" "FIELD_INTEGER" "maximum_charges" "3" } "09" { "var_type" "FIELD_FLOAT" "charge_replenish_time" "40.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sniper.vsndevts" "particle" "particles/units/heroes/hero_sniper/sniper_shrapnel.vpcf" "particle" "particles/units/heroes/hero_sniper/sniper_shrapnel_launch.vpcf" "particle" "particles/econ/items/sniper/sniper_charlie/sniper_shrapnel_charlie.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_sniper/shrapnel.lua" "Function" "shrapnel_start_charge" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_sniper/shrapnel.lua" "Function" "shrapnel_fire" "Target" "POINT" } } "Modifiers" { "modifier_shrapnel_stack_counter_datadriven" { "Passive" "1" "IsHidden" "0" "IsPurgable" "0" "IsDebuff" "0" } "modifier_shrapnel_dummy_datadriven" { "OnCreated" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Sniper.ShrapnelShatter" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_sniper/sniper_shrapnel.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/econ/items/sniper/sniper_charlie/sniper_shrapnel_charlie.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_shrapnel_slow_datadriven" } } } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_shrapnel_slow_datadriven" } } } } "Properties" { "MODIFIER_PROPERTY_BONUS_DAY_VISION" "%radius" "MODIFIER_PROPERTY_BONUS_NIGHT_VISION" "%radius" } "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_shrapnel_slow_datadriven" { "IsHidden" "0" "Duration" "%slow_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" } } } } "sniper_take_aim_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "sniper_take_aim" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "100 200 300 400" } } // Data driven //------------------------------------------------------------------------------------------------------------- "Modifiers" { "modifier_take_aim_datadriven" { "Passive" "1" "IsPurgable" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" } } } } "spectre_desolate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "20 35 50 65" } "02" { "var_type" "FIELD_INTEGER" "radius" "325 325 325 325" } } } "spectre_dispersion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "min_radius" "300 300 300 300" } "02" { "var_type" "FIELD_INTEGER" "max_radius" "1000 1000 1000 1000" } "03" { "var_type" "FIELD_INTEGER" "damage_reflection_pct" "10 14 18 22" } } } "spectre_haunt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "spectre_haunt" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120.0 120.0 120.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5.0 6.0 7.0" } "02" { "var_type" "FIELD_INTEGER" "illusion_damage_outgoing" "-70" } "03" { "var_type" "FIELD_INTEGER" "tooltip_outgoing" "30" } "04" { "var_type" "FIELD_INTEGER" "illusion_damage_incoming" "100 100 100" } "05" { "var_type" "FIELD_INTEGER" "tooltip_illusion_total_damage_incoming" "200 200 200" } "06" { "var_type" "FIELD_FLOAT" "attack_delay" "1.0 1.0 1.0" } } } "spectre_reality_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" } "spectre_spectral_dagger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "spectre_spectral_dagger" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2000 2000 2000 2000" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 16.0 16.0 16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "130 140 150 160" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier has no support value // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "50 100 150 200" } "02" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "8 12 16 20" } "03" { "var_type" "FIELD_FLOAT" "dagger_path_duration" "12.0 12.0 12.0 12.0" } "04" { "var_type" "FIELD_FLOAT" "hero_path_duration" "7.0 7.0 7.0 7.0" } "05" { "var_type" "FIELD_FLOAT" "buff_persistence" "4.0 4.0 4.0 4.0" } "08" { "var_type" "FIELD_INTEGER" "dagger_radius" "125 125 125 125" } "09" { "var_type" "FIELD_INTEGER" "path_radius" "175 175 175 175" } "10" { "var_type" "FIELD_INTEGER" "vision_radius" "200" } "11" { "var_type" "FIELD_INTEGER" "speed" "800" } "12" { "var_type" "FIELD_FLOAT" "dagger_grace_period" "2.0" } } } "spirit_breaker_charge_of_darkness_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_ALERT_TARGET | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "spirit_breaker_charge_of_darkness" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.47 0.47 0.47 0.47" "AbilityCastRange" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" ".30" // applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movement_speed" "600 650 700 750" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.2 1.6 2.0 2.4" } "03" { "var_type" "FIELD_INTEGER" "bash_radius" "300 300 300 300" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "400 400 400 400" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "0.94 0.94 0.94 0.94" } } } "spirit_breaker_empowering_haste_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movespeed_pct" "6 10 14 18" } "02" { "var_type" "FIELD_INTEGER" "aura_radius" "900 900 900 900" } "03" { "var_type" "FIELD_INTEGER" "bonus_movespeed_pct_extra" "3 5 7 9" } "04" { "var_type" "FIELD_INTEGER" "duration" "6" } } } "spirit_breaker_greater_bash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.5 1.5 1.5 1.5" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "chance_pct" "17 17 17 17" } "02" { "var_type" "FIELD_FLOAT" "damage" "22 28 34 40" } "03" { "var_type" "FIELD_FLOAT" "duration" "1.0 1.2 1.4 1.6" } "04" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.5 0.5 0.5 0.5" } "05" { "var_type" "FIELD_INTEGER" "knockback_distance" "143 152 158 162" } "06" { "var_type" "FIELD_INTEGER" "knockback_height" "50 50 50 50" } "07" { "var_type" "FIELD_INTEGER" "bonus_movespeed_pct" "15 15 15 15" } "08" { "var_type" "FIELD_FLOAT" "movespeed_duration" "3.0 3.0 3.0 3.0" } } } "spirit_breaker_nether_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "spirit_breaker_nether_strike" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "1.2" "AbilityCastRange" "700" "AbilityCastRangeBuffer" "500" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80 70 60" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 150 175" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "150 250 350" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "1.0 1.0 1.0" } "03" { "var_type" "FIELD_INTEGER" "tooltip_range" "700" } "04" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "850" } "05" { "var_type" "FIELD_INTEGER" "bash_radius_scepter" "250 250 250" } "06" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "20.0 20.0 20.0" } } } "storm_spirit_ball_lightning_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "storm_spirit_ball_lightning" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15 15 15 15" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "8 12 16" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "ball_lightning_initial_mana_percentage" "7" } "02" { "var_type" "FIELD_INTEGER" "ball_lightning_initial_mana_base" "15" } "03" { "var_type" "FIELD_INTEGER" "ball_lightning_move_speed" "1250 1875 2500" } "04" { "var_type" "FIELD_INTEGER" "ball_lightning_aoe" "125 200 275" } "05" { "var_type" "FIELD_INTEGER" "ball_lightning_travel_cost_base" "12" } "06" { "var_type" "FIELD_FLOAT" "ball_lightning_travel_cost_percent" "0.7" } "07" { "var_type" "FIELD_INTEGER" "ball_lightning_vision_radius" "1000" } // Extra variable "08" { "var_type" "FIELD_INTEGER" "tree_destroy_radius" "100" } "09" { "var_type" "FIELD_INTEGER" "distance_per_mana" "100" } "10" { "var_type" "FIELD_FLOAT" "tree_destroy_interval" "0.01" } "11" { "var_type" "FIELD_INTEGER" "distance_per_damage" "100" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "#soundfile" "particle" "particles/units/heroes/hero_stormspirit/stormspirit_ball_lightning.vpcf" "particle" "particles/status_fx/status_effect_base.vpcf" // Only for dummy } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_StormSpirit.BallLightning" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_StormSpirit.BallLightning.Loop" } "RunScript" { "ScriptFile" "heroes/hero_stormspirit/ball_lightning.lua" "Function" "ball_lightning_traverse" "Target" "POINT" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_ball_lightning_buff_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_stormspirit/ball_lightning.lua" "Function" "ball_lightning_damage" } } "Modifiers" { "modifier_ball_lightning_buff_datadriven" { "IsPurgable" "0" "IsBuff" "1" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_stormspirit/stormspirit_ball_lightning.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_stormspirit/ball_lightning.lua" "Function" "ball_lightning_destroy_trees" } } "ThinkInterval" "%tree_destroy_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_stormspirit/ball_lightning.lua" "Function" "ball_lightning_destroy_trees" } } "States" { "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_ball_lightning_destroy_trees_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Duration" "%tree_destroy_interval" "OnCreated" { "DestroyTrees" { "Target" "CASTER" "Radius" "%tree_destroy_radius" } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } "storm_spirit_electric_vortex_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "storm_spirit_electric_vortex" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCastRange" "300" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "21.0 20.0 19.0 18.0" "AbilityDuration" "1.0 1.5 2.0 2.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 110 120 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "electric_vortex_pull_units_per_second" "100" } "02" { "var_type" "FIELD_FLOAT" "electric_vortex_pull_tether_range" "1200.0" // what is this variable ?? } "03" { "var_type" "FIELD_INTEGER" "electric_vortex_self_slow" "-50" } "04" { "var_type" "FIELD_INTEGER" "electric_vortex_self_slow_duration" "3.0" } "05" { "var_type" "FIELD_FLOAT" "duration" "1.0 1.5 2.0 2.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_stormspirit.vsndevts" "particle" "particles/units/heroes/hero_stormspirit/stormspirit_electric_vortex_owner.vpcf" "particle" "particles/units/heroes/hero_stormspirit/stormspirit_electric_vortex.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_StormSpirit.ElectricVortexCast" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_electric_vortex_caster_datadriven" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_electric_vortex_target_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_stormspirit/electric_vortex.lua" "Function" "electric_vortex_pull" } } "Modifiers" { "modifier_electric_vortex_caster_datadriven" { "IsDebuff" "1" "Duration" "%electric_vortex_self_slow_duration" "EffectName" "particles/units/heroes/hero_stormspirit/stormspirit_electric_vortex_owner.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%electric_vortex_self_slow" } } "modifier_electric_vortex_target_datadriven" { "IsDebuff" "1" "Duration" "%duration" "OverrideAnimation" "ACT_DOTA_FLAIL" "OnCreated" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_StormSpirit.ElectricVortex" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } "storm_spirit_overload_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "storm_spirit_overload" "AbilityDuration" "0.6 0.6 0.6 0.6" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "30 50 70 90" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "overload_aoe" "275" } "02" { "var_type" "FIELD_INTEGER" "overload_move_slow" "-80" } "03" { "var_type" "FIELD_INTEGER" "overload_attack_slow" "-50" } "04" { "var_type" "FIELD_FLOAT" "tooltip_duration" "0.6 0.6 0.6 0.6" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_stormspirit.vsndevts" "particle" "particles/units/heroes/hero_stormspirit/stormspirit_overload_ambient.vpcf" } "Modifiers" { "modifier_overload_passive_datadriven" { "Passive" "1" "IsPurgable" "0" "IsHidden" "0" "IsBuff" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_stormspirit/overload.lua" "Function" "overload_check_order" } } } "modifier_overload_damage_datadriven" { "IsPurgable" "0" "IsHidden" "1" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_stormspirit/stormspirit_overload_ambient.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" } } } "OnAttackLanded" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_StormSpirit.Overload" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_stormspirit/stormspirit_overload_discharge.vpcf" "EffectAttachType" "start_at_origin" } "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%overload_aoe" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_overload_debuff_datadriven" } } } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_overload_damage_datadriven" } } } "modifier_overload_debuff_datadriven" { "IsDebuff" "1" "Duration" "%tooltip_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%overload_move_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%overload_attack_slow" } } } } "storm_spirit_static_remnant_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "storm_spirit_static_remnant" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "3.5" "AbilityDuration" "12.0 12.0 12.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 80 90 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "static_remnant_radius" "235" } "02" { "var_type" "FIELD_INTEGER" "static_remnant_damage_radius" "260" } "03" { "var_type" "FIELD_FLOAT" "static_remnant_delay" "1.0" } "04" { "var_type" "FIELD_INTEGER" "static_remnant_damage" "140 180 220 260" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_stormspirit/stormspirit_static_remnant.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_StormSpirit.StaticRemnantPlant" } "RunScript" { "ScriptFile" "heroes/hero_stormspirit/static_remnant.lua" "Function" "static_remnant_init" } } "Modifiers" { "modifier_static_remnant_dummy_datadriven" { "OverrideAnimation" "ACT_DOTA_CAST_ABILITY_1" "EffectName" "particles/units/heroes/hero_stormspirit/stormspirit_static_remnant.vpcf" "EffectAttachType" "follow_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_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_static_remnant_dummy_freeze_datadriven" { "States" { "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Sven Gods Strength ability // Author: Pizzalol // Date: 28.12.2014. "sven_gods_strength_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "1" "AbilityTextureName" "sven_gods_strength" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sven.vsndevts" "particle" "particles/units/heroes/hero_sven/sven_spell_gods_strength.vpcf" "particle" "particles/status_fx/status_effect_gods_strength.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0 80.0 80.0" "AbilityDuration" "25.0 25.0 25.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "gods_strength_damage" "100 150 200" } "02" { "var_type" "FIELD_INTEGER" "scepter_aoe" "900" } "03" { "var_type" "FIELD_INTEGER" "gods_strength_damage_scepter" "40 60 80" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Sven.GodsStrength" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_sven/sven_spell_gods_strength.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_gods_strength_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_gods_strength_datadriven" { "IsBuff" "1" "IsPurgable" "0" "Duration" "%AbilityDuration" "StatusEffectName" "particles/status_fx/status_effect_gods_strength.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%gods_strength_damage" } } } } // Rewrite of the Sven Great Cleave ability // Author: Pizzalol // Date: 28.12.2014. "sven_great_cleave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "sven_great_cleave" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "great_cleave_radius" "300.0" } "02" { "var_type" "FIELD_INTEGER" "great_cleave_damage" "20 35 50 65" } } "Modifiers" { "modifier_great_cleave_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "CleaveAttack" { "CleavePercent" "%great_cleave_damage" "CleaveRadius" "%great_cleave_radius" "CleaveEffect" "particles/units/heroes/hero_sven/sven_spell_great_cleave.vpcf" } } } } } // Rewrite of the Sven Storm Bolt ability // Author: Pizzalol // Date: 28.12.2014. "sven_storm_bolt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "sven_storm_bolt" "AOERadius" "%bolt_aoe" // Precache //------------------------------------------------------------------------------------------------------------- "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" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 250 325" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bolt_speed" "1000" } "02" { "var_type" "FIELD_FLOAT" "bolt_stun_duration" "2.0" } "03" { "var_type" "FIELD_INTEGER" "bolt_aoe" "255" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "225" } } "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 } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%bolt_aoe" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_storm_bolt_datadriven" "Target" "TARGET" } } } } "Modifiers" { "modifier_storm_bolt_datadriven" { "Duration" "%bolt_stun_duration" "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Sven Warcry ability // Author: Pizzalol // Date: 28.12.2014. "sven_warcry_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "sven_warcry" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_sven.vsndevts" "particle" "particles/units/heroes/hero_sven/sven_spell_warcry.vpcf" "particle" "particles/units/heroes/hero_sven/sven_warcry_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "32.0 26.0 20.0 14.0" "AbilityDuration" "7.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25 25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "warcry_armor" "4 8 12 16" } "02" { "var_type" "FIELD_INTEGER" "warcry_movespeed" "12" } "03" { "var_type" "FIELD_INTEGER" "warcry_radius" "900" } } "OnSpellStart" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%warcry_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_warcry_datadriven" "Target" "TARGET" } } } "FireSound" { "EffectName" "Hero_Sven.WarCry" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_sven/sven_spell_warcry.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } } "Modifiers" { "modifier_warcry_datadriven" { "IsBuff" "1" "Duration" "%AbilityDuration" "EffectName" "particles/units/heroes/hero_sven/sven_warcry_buff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%warcry_movespeed" "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%warcry_armor" } } } } // Rewrite of the Techies Focused Detonate ability // Author: Pizzalol // Date: 25.03.2015. // NOTE: THIS ABILITY IS USED WITH techies_remote_mines_datadriven "techies_focused_detonate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityTextureName" "techies_focused_detonate" "AOERadius" "%radius" "AbilityCastRange" "0" "MaxLevel" "1" "AbilityCooldown" "1.0 1.0 1.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "700" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_techies/remote_mines.lua" "Function" "RemoteMinesFocusedDetonate" "Target" "POINT" } } } // Rewrite of the Techies Land Mines ability // Author: Pizzalol // Date: 24.03.2015. "techies_land_mines_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "techies_land_mines" "AOERadius" "%small_radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" "particle" "particles/units/heroes/hero_techies/techies_land_mine.vpcf" "particle" "particles/units/heroes/hero_techies/techies_land_mine_explode.vpcf" "model" "models/heroes/techies/fx_techiesfx_mine.vmdl" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "100" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "19 16 13 10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 150 175 205" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "225 300 375 450" } "02" { "var_type" "FIELD_INTEGER" "small_radius" "200" } "03" { "var_type" "FIELD_INTEGER" "big_radius" "500" } "04" { "var_type" "FIELD_FLOAT" "activation_time" "1.75" } "05" { "var_type" "FIELD_INTEGER" "max_mines" "20" } "06" { "var_type" "FIELD_FLOAT" "explode_delay" "0.3" } "07" { "var_type" "FIELD_FLOAT" "fade_time" "2.0" } // Extra "08" { "var_type" "FIELD_FLOAT" "vision_radius" "300" } "09" { "var_type" "FIELD_FLOAT" "vision_duration" "1.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Techies.LandMine.Plant" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_techies/land_mines.lua" "Function" "LandMinesPlant" "Target" "POINT" "modifier_land_mine" "modifier_land_mine_datadriven" "modifier_tracker" "modifier_land_mine_tracker_datadriven" "modifier_caster" "modifier_land_mine_caster_datadriven" "modifier_land_mine_invisibility" "modifier_land_mine_invisibility_datadriven" } } "Modifiers" { "modifier_land_mine_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnDeath" { "CreateThinker" { "ModifierName" "modifier_land_mine_thinker" "Target" "UNIT" } "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_land_mine_explode.vpcf" "EffectAttachType" "follow_hitloc" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "ActOnTargets" { "Target" { "Center" "UNIT" "Radius" "%small_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%damage / 2" } } } "ActOnTargets" { "Target" { "Center" "UNIT" "Radius" "%big_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%damage / 2" } } } "RunScript" { "ScriptFile" "heroes/hero_techies/land_mines.lua" "Function" "LandMinesDeath" "modifier_caster" "modifier_land_mine_caster_datadriven" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_land_mine_tracker_datadriven" { "IsHidden" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_techies/techies_land_mine.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_techies/land_mines.lua" "Function" "LandMinesTracker" } } } "modifier_land_mine_caster_datadriven" { "IsBuff" "1" "IsPurgable" "0" } "modifier_land_mine_invisibility_datadriven" { "IsHidden" "1" "IsPurgable" "0" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_land_mine_thinker" { "Duration" "0.03" "OnCreated" { "FireSound" { "EffectName" "Hero_Techies.LandMine.Detonate" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } } } } // Rewrite of the Techies Remote Mines ability // Author: Pizzalol // Date: 25.03.2015. // NOTE: THIS ABILITY REQUIRES THE FOLLOWING ABILITIES // "techies_focused_detonate_datadriven" // "techies_remote_mines_self_detonate_datadriven" "techies_remote_mines_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "techies_remote_mines" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" "particle" "particles/units/heroes/hero_techies/techies_remote_mine.vpcf" "particle" "particles/units/heroes/hero_techies/techies_remote_mine_plant.vpcf" "particle" "particles/units/heroes/hero_techies/techies_remote_mines_detonate.vpcf" "model" "models/heroes/techies/fx_techies_remotebomb.vmdl" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "1.5 1.5 1.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 240 300" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_mines" "21" } "02" { "var_type" "FIELD_INTEGER" "damage" "300 450 600" } "03" { "var_type" "FIELD_INTEGER" "radius" "425" } "04" { "var_type" "FIELD_FLOAT" "duration" "600.0" } "05" { "var_type" "FIELD_FLOAT" "activation_time" "2.0" } "06" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "500" } "07" { "var_type" "FIELD_INTEGER" "damage_scepter" "450 600 750" } "08" { "var_type" "FIELD_INTEGER" "radius_scepter" "425" } "09" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "700" } "10" { "var_type" "FIELD_INTEGER" "vision_radius" "500" } "11" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0" } "12" { "var_type" "FIELD_INTEGER" "model_scale" "0 10 20" // Percentage over model scale } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_techies/remote_mines.lua" "Function" "RemoteMinesUpgrade" "ability_name" "techies_focused_detonate_datadriven" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_Techies.RemoteMine.Toss" "Target" "CASTER" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Techies.RemoteMine.Plant" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_techies/remote_mines.lua" "Function" "RemoteMinesPlant" "Target" "POINT" "modifier_remote_mine" "modifier_remote_mine_datadriven" "modifier_remote_mine_invisibility" "modifier_remote_mine_invisibility_datadriven" } } "Modifiers" { "modifier_remote_mine_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_remote_mine.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "OnDeath" { "CreateThinker" { "ModifierName" "modifier_remote_mine_thinker" "Target" "UNIT" } "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_remote_mines_detonate.vpcf" "EffectAttachType" "follow_hitloc" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "ActOnTargets" { "Target" { "Center" "UNIT" "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" "%damage" } } } "RunScript" { "ScriptFile" "heroes/hero_techies/remote_mines.lua" "Function" "RemoteMinesDeath" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_remote_mine_invisibility_datadriven" { "IsHidden" "1" "IsPurgable" "0" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_remote_mine_thinker" { "Duration" "0.03" "OnCreated" { "FireSound" { "EffectName" "Hero_Techies.RemoteMine.Detonate" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } } } } // Rewrite of the Techies Remote Mines Self Detonate ability // Author: Pizzalol // Date: 25.03.2015. // NOTE: THIS ABILITY IS USED WITH techies_remote_mines_datadriven "techies_remote_mines_self_detonate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityTextureName" "techies_remote_mines_self_detonate" "AbilityCastRange" "0" "MaxLevel" "1" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400 410 425" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_techies/remote_mines.lua" "Function" "RemoteMinesSelfDetonate" } } } // Rewrite of the Techies Stasis Trap ability // Author: Pizzalol // Date: 25.03.2015. "techies_stasis_trap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NORMAL_WHEN_STOLEN | DOTA_ABILITY_BEHAVIOR_AOE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "techies_stasis_trap" "AOERadius" "%activation_radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" "particle" "particles/units/heroes/hero_techies/techies_stasis_trap_plant.vpcf" "particle" "particles/units/heroes/hero_techies/techies_stasis_trap_apear.vpcf" "particle" "particles/units/heroes/hero_techies/techies_stasis_trap_explode.vpcf" "particle" "particles/status_fx/status_effect_techies_stasis.vpcf" "model" "models/heroes/techies/fx_techiesfx_stasis.vmdl" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" "AbilityCastPoint" "1.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 16.0 13.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 110 140 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "activation_radius" "450" } "02" { "var_type" "FIELD_FLOAT" "explode_delay" "2.0" } "03" { "var_type" "FIELD_INTEGER" "stun_radius" "450" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "2.5 3 3.5 4" } "05" { "var_type" "FIELD_FLOAT" "activation_time" "2.0" } "06" { "var_type" "FIELD_FLOAT" "fade_time" "2.0" } "07" { "var_type" "FIELD_FLOAT" "duration" "360.0" } // Extra "08" { "var_type" "FIELD_FLOAT" "vision_radius" "300" } "09" { "var_type" "FIELD_FLOAT" "vision_duration" "1.0" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_Techies.StasisTrap.Plant" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_stasis_trap_plant.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "POINT" } } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_techies/stasis_trap.lua" "Function" "StasisTrapPlant" "Target" "POINT" "modifier_stasis_trap" "modifier_stasis_trap_datadriven" "modifier_tracker" "modifier_stasis_trap_tracker_datadriven" "modifier_stasis_trap_invisibility" "modifier_stasis_trap_invisibility_datadriven" } } "Modifiers" { "modifier_stasis_trap_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_stasis_trap_apear.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_stasis_trap_tracker_datadriven" { "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_techies/stasis_trap.lua" "Function" "StasisTrapTracker" "modifier_trigger" "modifier_stasis_trap_trigger_datadriven" } } } "modifier_stasis_trap_invisibility_datadriven" { "IsHidden" "1" "IsPurgable" "0" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_stasis_trap_trigger_datadriven" { "OnCreated" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%stun_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "ApplyModifier" { "ModifierName" "modifier_stasis_trap_stun_datadriven" "Target" "TARGET" "Duration" "%stun_duration" } } } "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_stasis_trap_explode.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" "ControlPoints" { "01" "%stun_radius 0 0" } } "CreateThinker" { "ModifierName" "modifier_stasis_trap_thinker" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_techies/stasis_trap.lua" "Function" "StasisTrapRemove" } } } "modifier_stasis_trap_stun_datadriven" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_techies_stasis.vpcf" "StatusEffectPriority" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_stasis_trap_thinker" { "Duration" "0.03" "OnCreated" { "FireSound" { "EffectName" "Hero_Techies.StasisTrap.Stun" "Target" "TARGET" } } } } } // Rewrite of the Techies Suicide ability // Author: Pizzalol // Date: 25.03.2015. "techies_suicide_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "FightRecapLevel" "1" "AbilityTextureName" "techies_suicide" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_techies.vsndevts" "particle" "particles/units/heroes/hero_techies/techies_suicide_base.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "100" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "180.0 170.0 160.0 150.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 125 150 175" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "small_radius" "200" } "02" { "var_type" "FIELD_INTEGER" "big_radius" "500" } "03" { "var_type" "FIELD_INTEGER" "damage" "500 650 850 1150" } "04" { "var_type" "FIELD_INTEGER" "partial_damage" "260 300 340 380" } "05" { "var_type" "FIELD_FLOAT" "respawn_time_percentage" "0.5" } "06" { "var_type" "FIELD_INTEGER" "respawn_time_percentage_tooltip" "50" } // Extra "07" { "var_type" "FIELD_FLOAT" "vision_radius" "400" } "08" { "var_type" "FIELD_FLOAT" "vision_duration" "2.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Techies.Suicide" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_techies/techies_suicide_base.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "DestroyTrees" { "Target" "CASTER" "Radius" "%big_radius" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%small_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%damage - %partial_damage" } } } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%big_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "Damage" { "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%partial_damage" } } } "DelayedAction" { "Delay" "0.03" "Action" { "RunScript" { "ScriptFile" "heroes/hero_techies/suicide.lua" "Function" "Suicide" } } } } } "templar_assassin_meld_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 7.0 7.0 7.0" "AbilityDuration" "10.0 10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "50 100 150 200" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "-2 -4 -6 -8" } "03" { "var_type" "FIELD_INTEGER" "armor_reduction_duration_tooltip" "10" } } } "templar_assassin_psionic_trap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2000" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11.0 8.0 5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15 15 15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_traps" "5 8 11" } "02" { "var_type" "FIELD_FLOAT" "trap_fade_time" "2.0 2.0 2.0" } "03" { "var_type" "FIELD_INTEGER" "movement_speed_min_tooltip" "30" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_max_tooltip" "50" } "05" { "var_type" "FIELD_INTEGER" "trap_duration_tooltip" "5" } } } "templar_assassin_psi_blades_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "60 120 180 240" } "02" { "var_type" "FIELD_INTEGER" "attack_spill_range" "590 630 670 710" } "03" { "var_type" "FIELD_INTEGER" "attack_spill_width" "68 68 68 68" } } } "templar_assassin_refraction_damage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "" "AbilityType" "" "SpellImmunityType" "" "AbilityTextureName" "" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "" "AbilityCastRange" "" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { } } "templar_assassin_refraction_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "17.0 17.0 17.0 17.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "instances" "3 4 5 6" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "20 40 60 80" } "03" { "var_type" "FIELD_INTEGER" "damage_threshold" "5 5 5 5" } "04" { "var_type" "FIELD_FLOAT" "duration" "17.0 17.0 17.0 17.0" } } } "templar_assassin_self_trap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movement_speed_bonus" "-30" } "02" { "var_type" "FIELD_INTEGER" "trap_radius" "400" } "03" { "var_type" "FIELD_FLOAT" "trap_duration" "5.0" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_bonus_stage" "-5" } } } "templar_assassin_trap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movement_speed_bonus" "-30" } "02" { "var_type" "FIELD_INTEGER" "trap_radius" "400" } "03" { "var_type" "FIELD_FLOAT" "trap_duration" "5.0" } "04" { "var_type" "FIELD_INTEGER" "movement_speed_bonus_stage" "-5" } } } // Rewrite of Terrorblade Conjure Image // Author: Noya // Date: 10.1.2015. // Notes: Datadriven Modifiers with "AllowIllusionDuplicate" aren't automatically created with this method and need to be added manually in lua "terrorblade_conjure_image_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityTextureName" "terrorblade_conjure_image" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "illusion_duration" "32.0" } "02" { "var_type" "FIELD_FLOAT" "illusion_outgoing_damage" "-70.0 -60.0 -50.0 -40.0" } "03" { "var_type" "FIELD_FLOAT" "illusion_outgoing_tooltip" "30.0 40.0 50.0 60.0" } "04" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage" "325.0" } "05" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage_total_tooltip" "425.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_terrorblade.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Terrorblade.ConjureImage" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_terrorblade/conjure_image.lua" "Function" "ConjureImage" } } } // Rewrite of Terrorblade Metamorphosis // Author: Noya // Date: 10.1.2015. // Notes: Might have some issues on particular heroes, the Hide and ShowWearables were only tested in Abaddon and Windrunner so far // transform_time is not used, as it looks and feels better that way "terrorblade_metamorphosis_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "terrorblade_metamorphosis" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0." // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40 44 48 52" } "02" { "var_type" "FIELD_FLOAT" "transformation_time" "0.35" } "03" { "var_type" "FIELD_FLOAT" "base_attack_time" "1.6" } "04" { "var_type" "FIELD_INTEGER" "bonus_range" "422" } "05" { "var_type" "FIELD_INTEGER" "tooltip_attack_range" "550" } "06" { "var_type" "FIELD_INTEGER" "bonus_damage" "20 40 60 80" } "07" { "var_type" "FIELD_INTEGER" "speed_loss" "-25" } } "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_metamorphosis" "Target" "CASTER" } } "Modifiers" { "modifier_metamorphosis" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis.vpcf" "EffectAttachType" "follow_origin" "AllowsIllusionDuplicate" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_terrorblade/metamorphosis.lua" "Function" "ModelSwapStart" "model" "models/heroes/terrorblade/demon.vmdl" "projectile_model" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_base_attack.vpcf" } "RunScript" { "ScriptFile" "heroes/hero_terrorblade/metamorphosis.lua" "Function" "HideWearables" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_terrorblade/terrorblade_metamorphosis_ambient.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_range" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%speed_loss" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "%base_attack_time" } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_terrorblade/metamorphosis.lua" "Function" "ModelSwapEnd" } "RunScript" { "ScriptFile" "heroes/hero_terrorblade/metamorphosis.lua" "Function" "ShowWearables" } } } } } // Rewrite of Terrorblade Reflection // Author: Noya // Date: 11.1.2015. // Notes: Same Illusion creation method used for Conjure Image, but with different properties behavior and position // Illusions show as blue for allied instead of black, // For enemies they are seen as fully black but don't have the trasparency of the original // Also not ported the small grow scale with time of the illusions (which isn't stated in the spell description) "terrorblade_reflection_datadriven" { // 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" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "terrorblade_reflection" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22 18 14 10" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "275" "AbilityCastPoint" "0.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "illusion_duration" "2.5 3.5 4.5 5.5" } "02" { "var_type" "FIELD_FLOAT" "illusion_outgoing_damage" "-60.0 -50.0 -40.0 -30.0" } "03" { "var_type" "FIELD_FLOAT" "illusion_outgoing_tooltip" "40.0 50.0 60.0 70.0" } "04" { "var_type" "FIELD_INTEGER" "move_slow" "-60" } "05" { "var_type" "FIELD_INTEGER" "attack_slow_tooltip" "-60" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_terrorblade.vsndevts" "particle" "particles/status_fx/status_effect_terrorblade_reflection.vpcf" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_reflection_slow.vpcf" } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_terrorblade/reflection.lua" "Function" "ReflectionCast" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_reflection_slow" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_terrorblade/reflection.lua" "Function" "Reflection" } } "Modifiers" { "modifier_reflection_invulnerability" { "IsHidden" "1" "StatusEffectName" "particles/status_fx/status_effect_terrorblade_reflection.vpcf" "StatusEffectPriority" "100" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "522" } "States" { "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_reflection_slow" { "IsDebuff" "1" "Duration" "%illusion_duration" "EffectName" "particles/units/heroes/hero_terrorblade/terrorblade_reflection_slow.vpcf" "EffecAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_slow_tooltip" } } } } // Rewrite of Terrorblade Sunder // Author: Noya // Date: 11.1.2015. // Notes: Spell can be self targeted. If you want to disable self-targeting, check abaddon_aphotic_shield_datadriven "terrorblade_sunder_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "terrorblade_sunder" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120.0 80.0 40.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "325" "AbilityCastPoint" "0.35" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 100 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hit_point_minimum_pct" "20" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_terrorblade.vsndevts" "particle" "particles/units/heroes/hero_terrorblade/terrorblade_sunder.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Terrorblade.Sunder.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Terrorblade.Sunder.Target" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_terrorblade/sunder.lua" "Function" "Sunder" } } } "test_ability" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "10.0" } } "OnSpellStart" { "SpawnUnit" { "UnitName" "npc_dota_broodmother_spiderling" "UnitCount" "1" "SpawnRadius" "200" "Target" "CASTER" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_kill" "Target" "TARGET" "Duration" "%duration" } } } "SpawnUnit" { "UnitName" "npc_dota_broodmother_spiderling" "UnitCount" "1" "SpawnRadius" "200" "Target" "CASTER" } } } "throw_coal_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed" "1000" } } } "throw_snowball_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed" "1000" } } } "tidehunter_anchor_smash_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "tidehunter_anchor_smash" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0 6.0 5.0 4.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 125 175 225" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "30 40 50 60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_reduction" "-45 -50 -55 -60" } "02" { "var_type" "FIELD_FLOAT" "reduction_duration" "6.0 6.0 6.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "400 400 400 400" } } } "tidehunter_gush_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tidehunter_gush" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" "AbilityDuration" "4.0 4.0 4.0 4.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "110 160 210 260" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "projectile_speed" "4000 4000 4000 4000" } "02" { "var_type" "FIELD_INTEGER" "movement_speed" "-40 -40 -40 -40" } "03" { "var_type" "FIELD_INTEGER" "armor_bonus" "-2 -3 -4 -5" } } } "tidehunter_kraken_shell_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_reduction" "10 20 30 40" } "02" { "var_type" "FIELD_INTEGER" "damage_cleanse" "600 550 500 450" } "03" { "var_type" "FIELD_FLOAT" "damage_reset_interval" "6.0 6.0 6.0 6.0" } } } "tidehunter_ravage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "tidehunter_ravage" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "150.0 150.0 150.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "200 325 450" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 225 325" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1025" } "02" { "var_type" "FIELD_INTEGER" "speed" "775" } "03" { "var_type" "FIELD_FLOAT" "duration" "2.02 2.32 2.77" } } } "tinker_heat_seeking_missile_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tinker_heat_seeking_missile" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25.0 25.0 25.0 25.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 250 325" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 140 160 180" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "2500 2500 2500 2500" } "02" { "var_type" "FIELD_INTEGER" "targets" "2 2 2 2" } "03" { "var_type" "FIELD_INTEGER" "speed" "900 900 900 900" } } // Datadriven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" "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_missile_dud.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.Heat-Seeking_Missile" } "RunScript" { "ScriptFile" "heroes/hero_tinker/heat_seeking_missile" "Function" "heat_seeking_missile_seek_targets" } } "OnProjectileHitUnit" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Tinker.Heat-Seeking_Missile.Impact" } "FireEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_tinker/tinker_missle_explosion.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" } } "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } } "Modifiers" { "modifier_heat_seeking_missile_dud" { "IsHidden" "1" "IsPurgable" "0" "Duration" "1.0" "EffectName" "particles/units/heroes/hero_tinker/tinker_missile_dud.vpcf" "EffectAttachType" "start_at_origin" "OnCreated" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Tinker.Heat-Seeking_Missile_Dud" } } } } } "tinker_laser_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tinker_laser" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" "AbilityCastPoint" "0.53 0.53 0.53 0.53" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0 14.0 14.0 14.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 160 240 320" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 120 145 170" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Primarily about the damageo // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration_hero" "3.0 3.0 3.0 3.0" } "02" { "var_type" "FIELD_FLOAT" "duration_creep" "6.0 6.0 6.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "miss_rate" "100 100 100 100" } "04" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "1100" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" "particle" "particles/units/heroes/hero_tinker/tinker_laser.vpcf" } "OnAbilityPhaseStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.LaserAnim" } } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.Laser" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_tinker/tinker_laser.vpcf" "MoveSpeed" "1100" "Dodgeable" "1" "ProvidesVision" "0" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_2" } } "OnProjectileHitUnit" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.LaserImpact" } "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_PURE" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_laser_debuff_datadriven" "Duration" "%duration_creep" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_laser_debuff_datadriven" "Duration" "%duration_hero" } } "Modifiers" { "modifier_laser_debuff_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_rate" } } } } "tinker_march_of_the_machines_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "tinker_march_of_the_machines" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300" "AbilityCastPoint" "0.53 0.53 0.53 0.53" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35.0 35.0 35.0 35.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "16 24 32 40" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "145 150 165 190" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "collision_radius" "50 50 50 50" } "03" { "var_type" "FIELD_INTEGER" "splash_radius" "150 150 150 150" } "04" { "var_type" "FIELD_FLOAT" "duration" "6.0 6.0 6.0 6.0" } "05" { "var_type" "FIELD_INTEGER" "speed" "400 400 400 400" } "06" { "var_type" "FIELD_INTEGER" "machines_per_sec" "24" } "07" { "var_type" "FIELD_INTEGER" "distance" "1800" } "08" { "var_type" "FIELD_INTEGER" "distance_scepter" "1800" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" "particle" "particles/units/heroes/hero_tinker/tinker_machine.vpcf" } "OnAbilityPhaseStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.March_of_the_Machines.Cast" } } "OnSpellStart" { "FireSound" { "Target" "POINT" "EffectName" "Hero_Tinker.March_of_the_Machines" } "RunScript" { "ScriptFile" "heroes/hero_tinker/march_of_the_machines.lua" "Function" "march_of_the_machines_spawn" "Target" "POINT" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%splash_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } } } } "Modifiers" { "modifier_march_of_the_machines_dummy_datadriven" { "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" } } } } "tinker_rearm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "tinker_rearm" "AbilityCastAnimation" "ACT_DOTA_CHANNEL_ABILITY_4" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.53 0.53 0.53 0.53" "AbilityChannelTime" "3.0 2.0 1.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 250 350" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "channel_tooltip" "3 2 1" } } // Data Driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts" "particle" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" } "OnAbilityPhaseStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.RearmStart" } } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Tinker.Rearm" } "RunScript" { "ScriptFile" "heroes/hero_tinker/rearm.lua" "Function" "rearm_start" } } "OnChannelInterrupted" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_rearm_level_1_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_rearm_level_2_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_rearm_level_3_datadriven" } } "OnChannelSucceeded" { "RunScript" { "ScriptFile" "heroes/hero_tinker/rearm.lua" "Function" "rearm_refresh_cooldown" } } "Modifiers" { "modifier_rearm_level_1_datadriven" { "IsHidden" "0" "Duration" "%channel_tooltip" "EffectName" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" "EffectAttachType" "follow_origin" "OverrideAnimation" "ACT_DOTA_TINKER_REARM1" } "modifier_rearm_level_2_datadriven" { "IsHidden" "0" "Duration" "%channel_tooltip" "EffectName" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" "EffectAttachType" "follow_origin" "OverrideAnimation" "ACT_DOTA_TINKER_REARM2" } "modifier_rearm_level_3_datadriven" { "IsHidden" "0" "Duration" "%channel_tooltip" "EffectName" "particles/units/heroes/hero_tinker/tinker_rearm.vpcf" "EffectAttachType" "follow_origin" "OverrideAnimation" "ACT_DOTA_TINKER_REARM3" } } } "tiny_avalanche_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tiny_avalanche" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "17.0 17.0 17.0 17.0" "AbilityDuration" "2.0 2.0 2.0 2.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 180 260 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "02" { "var_type" "FIELD_FLOAT" "tick_interval" "0.25 0.25 0.25 0.25" } "03" { "var_type" "FIELD_INTEGER" "num_ticks" "4 4 4 4" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0" } "05" { "var_type" "FIELD_FLOAT" "projectile_duration" "0.5" } } } "tiny_craggy_exterior_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "25 35 45 55" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "35" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "stun_chance" "10 15 20 25" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0 1.25 1.5 1.75" } "03" { "var_type" "FIELD_INTEGER" "bonus_armor" "2 3 4 5" } "04" { "var_type" "FIELD_INTEGER" "radius" "300 300 300 300" } } } "tiny_grow_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "50 100 150" } "02" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "-20 -35 -50" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "20 40 60" } "04" { "var_type" "FIELD_INTEGER" "grow_bonus_damage_pct" "35 50 65" } "05" { "var_type" "FIELD_INTEGER" "bonus_range_scepter" "107" } "06" { "var_type" "FIELD_INTEGER" "bonus_cleave_radius_scepter" "400" } "07" { "var_type" "FIELD_INTEGER" "bonus_cleave_damage_scepter" "50" } "08" { "var_type" "FIELD_INTEGER" "bonus_building_damage_scepter" "75" } "09" { "var_type" "FIELD_INTEGER" "grow_bonus_damage_pct_scepter" "50 65 80" } } } "tiny_toss_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_RUNE_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "tiny_toss" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1300" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.25" // generally used for damage only // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "1.0 1.0 1.0 1.0" } "02" { "var_type" "FIELD_INTEGER" "grab_radius" "250 250 250 250" } "03" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "20 20 20 20" } "05" { "var_type" "FIELD_INTEGER" "grow_bonus_damage_pct" "35 50 65 80" } "06" { "var_type" "FIELD_INTEGER" "tooltip_range" "1300" } "07" { "var_type" "FIELD_INTEGER" "toss_damage" "75 150 225 300" } } } "tornado_tempest_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "1" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "far_radius" "600" } "02" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-15" } "03" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-15" } "04" { "var_type" "FIELD_INTEGER" "near_radius" "150" } "05" { "var_type" "FIELD_INTEGER" "near_damage" "45" } "06" { "var_type" "FIELD_INTEGER" "far_damage" "15" } "07" { "var_type" "FIELD_FLOAT" "tick_rate" "0.25" } } } "treant_eyes_in_the_forest_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_TREE" "MaxLevel" "1" "FightRecapLevel" "1" "AbilityTextureName" "treant_eyes_in_the_forest" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "160" "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "55" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "vision_aoe" "800" } "02" { "var_type" "FIELD_INTEGER" "overgrowth_aoe" "800" } "03" { "var_type" "FIELD_FLOAT" "damage" "135" } } } "treant_leech_seed_datadriven" { "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityCastRange" "350" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "FightRecapLevel" "1" "AbilityTextureName" "treant_leech_seed" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 14.0 12.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_interval" "0.75" } "02" { "var_type" "FIELD_INTEGER" "leech_damage" "15 30 45 60" } "03" { "var_type" "FIELD_INTEGER" "movement_slow" "-28" } "04" { "var_type" "FIELD_INTEGER" "radius" "500" } "05" { "var_type" "FIELD_FLOAT" "duration" "4.5" } "06" { "var_type" "FIELD_INTEGER" "projectile_speed" "400" } } } "treant_living_armor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "AbilityCastRange" "0" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "FightRecapLevel" "1" "AbilityTextureName" "treant_living_armor" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "32.0 26.0 20.0 14.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_count" "4 5 6 7" } "02" { "var_type" "FIELD_INTEGER" "health_regen" "4 7 10 13" } "03" { "var_type" "FIELD_INTEGER" "damage_block" "20 40 60 80" } "04" { "var_type" "FIELD_FLOAT" "duration" "15.0" } } } "treant_natures_guise_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "treant_natures_guise" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 8.0 6.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0 30.0 45.0 60.0" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "2.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "375 375 375 375" } "04" { "var_type" "FIELD_FLOAT" "search_interval" "0.1" } "05" { "var_type" "FIELD_INTEGER" "bonus_move_speed" "10 10 10 10" } "06" { "var_type" "FIELD_FLOAT" "grace_time" "1.0" } } } "treant_overgrowth_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "FightRecapLevel" "2" "AbilityTextureName" "treant_overgrowth" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "70" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 175 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.75 4.5" } "02" { "var_type" "FIELD_INTEGER" "radius" "675" } "03" { "var_type" "FIELD_INTEGER" "eyes_radius" "800" } } } // Rewrite of the Troll Warlord Battle Trance ability // Author: Pizzalol // Date: 09.03.2015. "troll_warlord_battle_trance_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "MaxLevel" "3" "FightRecapLevel" "2" "AbilityTextureName" "troll_warlord_battle_trance" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts" "particle" "particles/units/heroes/hero_troll_warlord/troll_warlord_battletrance_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "trance_duration" "7.0" } "02" { "var_type" "FIELD_INTEGER" "attack_speed" "60 120 180" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_TrollWarlord.BattleTrance.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_TrollWarlord.BattleTrance.Cast.Team" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_battle_trance_datadriven" "Target" "TARGET" "Duration" "%trance_duration" } } } } "Modifiers" { "modifier_battle_trance_datadriven" { "IsBuff" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_troll_warlord/troll_warlord_battletrance_buff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed" } } } } // Rewrite of the Troll Warlord Berserkers Rage ability // Author: Pizzalol // Date: 14.03.2015. // NOTE: --------------------------------------------- THIS ABILITY REQUIRES troll_warlord_whirling_axes_ranged_datadriven AND troll_warlord_whirling_axes_melee_datadriven TO WORK CORRECTLY --------------------------------- "troll_warlord_berserkers_rage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityTextureName" "troll_warlord_berserkers_rage" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts" "particle" "particles/units/heroes/hero_troll_warlord/troll_warlord_berserk_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "15" } "02" { "var_type" "FIELD_INTEGER" "bonus_move_speed" "10 20 30 40" } "03" { "var_type" "FIELD_INTEGER" "bonus_range" "-372" } "04" { "var_type" "FIELD_FLOAT" "base_attack_time" "1.55" } "05" { "var_type" "FIELD_INTEGER" "bonus_hp" "100" } "06" { "var_type" "FIELD_INTEGER" "bonus_armor" "3" } "07" { "var_type" "FIELD_INTEGER" "bash_chance" "10" } "08" { "var_type" "FIELD_FLOAT" "bash_duration" "0.8 1.2 1.6 2.0" } "09" { "var_type" "FIELD_INTEGER" "bash_damage" "20 30 40 50" } } "OnToggleOn" { "FireSound" { "EffectName" "Hero_TrollWarlord.BerserkersRage.Toggle" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "BerserkersRageAttackCapability" } "ApplyModifier" { "ModifierName" "modifier_berserkers_rage_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "SwapAbilities" "main_ability_name" "troll_warlord_whirling_axes_ranged_datadriven" "sub_ability_name" "troll_warlord_whirling_axes_melee_datadriven" } } "OnToggleOff" { "FireSound" { "EffectName" "Hero_TrollWarlord.BerserkersRage.Toggle" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "BerserkersRageAttackCapability" } "RemoveModifier" { "ModifierName" "modifier_berserkers_rage_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "SwapAbilities" "main_ability_name" "troll_warlord_whirling_axes_melee_datadriven" "sub_ability_name" "troll_warlord_whirling_axes_ranged_datadriven" } } "Modifiers" { "modifier_berserkers_rage_datadriven" { "IsHidden" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_troll_warlord/troll_warlord_berserk_buff.vpcf" "EffectAttachType" "follow_origin" "OnAttackLanded" // "%attack_damage" is set to the damage value before mitigation { "Random" { "Chance" "%bash_chance" "OnSuccess" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "BerserkersRageBash" "sound" "Hero_TrollWarlord.BerserkersRage.Stun" } } } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_move_speed" "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_range" "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT" "%base_attack_time" "MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_hp" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage" } } "modifier_berserkers_rage_track_datadriven" { "IsHidden" "1" "Passive" "1" "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/berserkers_rage.lua" "Function" "BerserkersRageTrack" } } } } } // Rewrite of the Troll Warlord Fervor ability // Author: Pizzalol // Date: 11.03.2015. "troll_warlord_fervor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "troll_warlord_fervor" // Casting "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_stacks" "4" } "02" { "var_type" "FIELD_INTEGER" "attack_speed" "16 22 28 34" } } "Modifiers" { "modifier_fervor_datadriven" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/fervor.lua" "Function" "Fervor" "modifier" "modifier_fervor_stack_datadriven" } } } "modifier_fervor_stack_datadriven" { "IsBuff" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed" } } } } // Rewrite of the Troll Warlord Whirling Axes Melee ability // Author: Pizzalol // Date: 18.03.2015. "troll_warlord_whirling_axes_melee_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "troll_warlord_whirling_axes_melee" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts" "particle" "particles/units/heroes/hero_troll_warlord/troll_warlord_whirling_axe_melee.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "75 125 175 225" } "02" { "var_type" "FIELD_INTEGER" "hit_radius" "100" } "03" { "var_type" "FIELD_FLOAT" "max_range" "450.0" } "04" { "var_type" "FIELD_INTEGER" "axe_movement_speed" "1250" } "05" { "var_type" "FIELD_FLOAT" "blind_duration" "4.0 5.0 6.0 7.0" } "06" { "var_type" "FIELD_INTEGER" "blind_pct" "60 60 60 60" } "07" { "var_type" "FIELD_FLOAT" "whirl_duration" "3.0" } // Extra "08" { "var_type" "FIELD_FLOAT" "axe_turn_rate" "360" } "09" { "var_type" "FIELD_FLOAT" "start_radius" "1" } "10" { "var_type" "FIELD_FLOAT" "think_interval" "0.06" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_melee.lua" "Function" "LevelUpAbility" "ability_name" "troll_warlord_whirling_axes_ranged_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_TrollWarlord.WhirlingAxes.Melee" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_melee.lua" "Function" "WhirlingAxesMelee" "axe_projectile" "particles/units/heroes/hero_troll_warlord/troll_warlord_whirling_axe_melee.vpcf" "axe_modifier" "modifier_whirling_axes_melee_think_datadriven" } } "Modifiers" { "modifier_whirling_axes_melee_think_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Aura" "modifier_whirling_axes_melee_aura_datadriven" "Aura_Radius" "%hit_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NONE" "Aura_ApplyToCaster" "0" "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_melee.lua" "Function" "WhirlingAxesMeleeThink" } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_whirling_axes_melee_aura_datadriven" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_melee.lua" "Function" "WhirlingAxesMeleeHit" "modifier" "modifier_whirling_axes_melee_blind_datadriven" "sound" "Hero_TrollWarlord.WhirlingAxes.Target" } } } "modifier_whirling_axes_melee_blind_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%blind_pct" } } } } // Rewrite of the Troll Warlord Whirling Axes Ranged ability // Author: Pizzalol // Date: 14.03.2015. // NOTE: Currently missing the residual vision at at the end // NOTE2: ----------------------- REQUIRES troll_warlord_whirling_axes_melee_datadriven TO FUNCTION PROPERLY ------------------------ "troll_warlord_whirling_axes_ranged_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "troll_warlord_whirling_axes_ranged" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts" "particle" "particles/units/heroes/hero_troll_warlord/troll_warlord_whirling_axe_ranged.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20 19 18 17" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "axe_width" "100" } "02" { "var_type" "FIELD_FLOAT" "axe_speed" "1500.0" } "03" { "var_type" "FIELD_FLOAT" "axe_range" "945.0" } "04" { "var_type" "FIELD_INTEGER" "axe_damage" "75" } "05" { "var_type" "FIELD_FLOAT" "axe_slow_duration" "3.0 3.75 4.5 5.25" } "06" { "var_type" "FIELD_INTEGER" "movement_speed" "-30" } "07" { "var_type" "FIELD_INTEGER" "axe_spread" "25" } "08" { "var_type" "FIELD_INTEGER" "axe_count" "5" } // Extra "09" { "var_type" "FIELD_FLOAT" "vision_radius" "900" } "10" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_ranged.lua" "Function" "LevelUpAbility" "ability_name" "troll_warlord_whirling_axes_melee_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_TrollWarlord.WhirlingAxes.Ranged" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_ranged.lua" "Function" "WhirlingAxesRanged" "Target" "POINT" "axe_projectile" "particles/units/heroes/hero_troll_warlord/troll_warlord_whirling_axe_ranged.vpcf" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "ModifierName" "modifier_whirling_axes_ranged_datadriven" "Target" "TARGET" "Duration" "%axe_slow_duration" } "RunScript" { "ScriptFile" "heroes/hero_troll_warlord/whirling_axes_ranged.lua" "Function" "WhirlingAxesRangedHit" "sound" "Hero_TrollWarlord.WhirlingAxes.Target" } } "Modifiers" { "modifier_whirling_axes_ranged_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed" } } } } "tusk_frozen_sigil_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50.0 50.0 50.0 50.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "sigil_radius" "600" } "02" { "var_type" "FIELD_FLOAT" "sigil_duration" "30.0" } "03" { "var_type" "FIELD_INTEGER" "move_slow" "10 15 20 25" } "04" { "var_type" "FIELD_INTEGER" "attack_slow" "30 40 50 60" } } } "tusk_ice_shards_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | 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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tusk_ice_shards" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1800" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "18.0 16.0 14.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shard_width" "200" } "02" { "var_type" "FIELD_INTEGER" "shard_damage" "70 140 210 280" } "03" { "var_type" "FIELD_INTEGER" "shard_count" "7" } "04" { "var_type" "FIELD_FLOAT" "shard_speed" "900.0" } "05" { "var_type" "FIELD_FLOAT" "shard_duration" "5.0" } "06" { "var_type" "FIELD_FLOAT" "shard_angle_step" "40.0" } "07" { "var_type" "FIELD_INTEGER" "shard_distance" "200" } "08" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "1800" } } } "tusk_launch_snowball_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "AbilityTextureName" "tusk_snowball" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" } "tusk_snowball_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "tusk_snowball" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1250" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "21 20 19 18" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "snowball_damage" "80 120 160 200" } "02" { "var_type" "FIELD_INTEGER" "snowball_speed_pct" "150" } "03" { "var_type" "FIELD_INTEGER" "snowball_damage_bonus" "20 30 40 50" } "04" { "var_type" "FIELD_INTEGER" "snowball_speed_bonus" "100" } "05" { "var_type" "FIELD_FLOAT" "stun_duration" "0.5 0.75 1.0 1.25" } "06" { "var_type" "FIELD_INTEGER" "snowball_windup_radius" "100" } "07" { "var_type" "FIELD_FLOAT" "snowball_duration" "3.0" } "08" { "var_type" "FIELD_INTEGER" "snowball_radius" "200" } "09" { "var_type" "FIELD_INTEGER" "snowball_grow_rate" "40" } "10" { "var_type" "FIELD_FLOAT" "snowball_windup" "4.0" } } } "tusk_walrus_punch_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "tusk_walrus_punch" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25 20 15" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 75 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "walrus_window" "10.0" } "02" { "var_type" "FIELD_INTEGER" "crit_multiplier" "350" } "03" { "var_type" "FIELD_INTEGER" "threshold_crit_multiplier" "400" } "04" { "var_type" "FIELD_INTEGER" "hp_threshold" "50" } "05" { "var_type" "FIELD_FLOAT" "air_time" "1.0" } "06" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0 3.0 4.0" } "07" { "var_type" "FIELD_INTEGER" "move_slow" "40" } } } "undying_decay_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityCastRange" "625" "AbilityCastPoint" "0.45 0.45 0.45 0.45" "FightRecapLevel" "1" "AbilityTextureName" "undying_decay" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 8.0 6.0 4.0" "AbilityDuration" "21.0 24.0 27.0 30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 90 110 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "decay_damage" "20 60 100 140" } "02" { "var_type" "FIELD_INTEGER" "radius" "325" } "03" { "var_type" "FIELD_FLOAT" "decay_duration" "40.0" } "04" { "var_type" "FIELD_INTEGER" "str_steal" "4" } "05" { "var_type" "FIELD_INTEGER" "str_scale_up" "2" } } } "undying_flesh_golem_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "undying_flesh_golem" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "75.0 75.0 75.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "30.0 30.0 30.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "750" } "03" { "var_type" "FIELD_INTEGER" "full_power_radius" "200" } "04" { "var_type" "FIELD_INTEGER" "min_speed_slow" "5" } "05" { "var_type" "FIELD_INTEGER" "max_damage_amp" "20 25 30" } "06" { "var_type" "FIELD_INTEGER" "min_damage_amp" "5 10 15" } "07" { "var_type" "FIELD_INTEGER" "death_heal" "6" } "08" { "var_type" "FIELD_INTEGER" "death_heal_creep" "2" } "09" { "var_type" "FIELD_INTEGER" "max_damage_amp_scepter" "30 35 40" } "10" { "var_type" "FIELD_INTEGER" "min_damage_amp_scepter" "15 20 25" } "11" { "var_type" "FIELD_INTEGER" "death_heal_scepter" "10" } "12" { "var_type" "FIELD_INTEGER" "death_heal_creep_scepter" "3" } "13" { "var_type" "FIELD_INTEGER" "max_speed_slow" "15" } } } "undying_soul_rip_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CUSTOM" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "undying_soul_rip" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.45 0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "24.0 18.0 12.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 75 100 125" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier just does damage/healing // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_unit" "25" } "02" { "var_type" "FIELD_INTEGER" "radius" "1300" } "03" { "var_type" "FIELD_INTEGER" "max_units" "5 10 15 20" } } } "undying_tombstone_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "FightRecapLevel" "1" "AbilityTextureName" "undying_tombstone" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.45 0.45 0.45 0.45" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 60.0 60.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 130 140 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "tooltip_tombstone_health" "200 400 600 800" } "02" { "var_type" "FIELD_FLOAT" "duration" "15.0 20.0 25.0 30.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "600 800 1000 1200" } "04" { "var_type" "FIELD_INTEGER" "health_threshold" "100 200 300 400" } "05" { "var_type" "FIELD_INTEGER" "health_threshold_pct_tooltip" "20 25 30 35" } "06" { "var_type" "FIELD_FLOAT" "zombie_interval" "3.0" } } } "undying_tombstone_zombie_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400 600 800 1000" } "02" { "var_type" "FIELD_INTEGER" "health_threshold" "100 200 300 400" } "03" { "var_type" "FIELD_FLOAT" "zombie_interval" "3.0" } "04" { "var_type" "FIELD_INTEGER" "bonus_speed" "50" } } } "undying_tombstone_zombie_deathstrike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow" "-7" } "02" { "var_type" "FIELD_INTEGER" "health_threshold" "100 200 300 400" } "03" { "var_type" "FIELD_FLOAT" "health_threshold_pct" "20 25 30 35" } "04" { "var_type" "FIELD_FLOAT" "duration" "2.5" } "05" { "var_type" "FIELD_INTEGER" "bonus_speed" "50" } } } "ursa_earthshock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ursa_earthshock" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0 5.0 5.0 5.0" "AbilityDuration" "4.0 4.0 4.0 4.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "90 140 190 240" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "shock_radius" "385" } "02" { "var_type" "FIELD_INTEGER" "movement_slow" "-25 -35 -45 -55" } // Extra variables "03" { "var_type" "FIELD_FLOAT" "debuff_duration" "4.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ursa.vsndevts" "particle" "particles/units/heroes/hero_ursa/ursa_earthshock.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Ursa.Earthshock" } "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_ursa/ursa_earthshock.vpcf" "EffectAttachType" "start_at_origin" "EffectRadius" "%shock_radius" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%shock_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_earthshock_debuff_datadriven" } } } } "Modifiers" { "modifier_earthshock_debuff_datadriven" { "IsHidden" "0" "IsDebuff" "1" "Duration" "%debuff_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_slow" } } } } // Rewrite of Enrage // Author: YOLOSPAGHETTI // Date: February 5, 2016 "ursa_enrage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "ursa_enrage" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50.0 40.0 30.0" "AbilityDuration" "4.0 4.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_reduction" "-80 -80 -80" } "02" { "var_type" "FIELD_FLOAT" "damage_multiplier" "1.5 1.75 2" } "03" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.0 4.0" } "04" { "var_type" "FIELD_FLOAT" "scepter_cooldown" "30 24 18" } "05" { "var_type" "FIELD_FLOAT" "model_scale" "1.2" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ursa.vsndevts" "particle" "particles/units/heroes/hero_ursa/ursa_enrage_buff.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Ursa.Enrage" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_enrage_buff_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_ursa/enrage.lua" "Function" "Purge" } } "Modifiers" { "modifier_enrage_buff_datadriven" { "IsHidden" "0" "IsPurgable" "0" "IsBuff" "1" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_ursa/ursa_enrage_buff.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_ursa/ursa_enrage_buff.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack2" } } } "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_ursa/enrage.lua" "Function" "BonusDamage" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_ursa/enrage.lua" "Function" "ChangeAppearance" } } "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_reduction" } "Duration" "%duration" } } } "ursa_fury_swipes_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "ursa_fury_swipes" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "bonus_reset_time" "15" } "02" { "var_type" "FIELD_FLOAT" "bonus_reset_time_roshan" "6" } "03" { "var_type" "FIELD_INTEGER" "damage_per_stack" "15 20 25 30" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ursa/ursa_fury_swipes.vpcf" "particle" "particles/units/heroes/hero_ursa/ursa_fury_swipes_debuff.vpcf" } "Modifiers" { "modifier_fury_swipes_caster_datadriven" { "Passive" "1" "IsHidden" "0" "IsPurgable" "0" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_ursa/fury_swipes.lua" "Function" "fury_swipes_attack" } } } "modifier_fury_swipes_target_datadriven" { "IsHidden" "0" "IsPurgable" "0" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_ursa/ursa_fury_swipes_debuff.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_ursa/ursa_fury_swipes.vpcf" "EffectAttachType" "follow_overhead" } } } } } "ursa_overpower_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityTextureName" "ursa_overpower" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" "AbilityDuration" "15.0 15.0 15.0 15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "45 55 65 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_attacks" "3 4 5 6" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_bonus_pct" "400 400 400 400" } "03" { "var_type" "FIELD_INTEGER" "duration_tooltip" "15" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ursa.vsndevts" "particle" "particles/status_fx/status_effect_overpower.vpcf" "particle" "particles/units/heroes/hero_ursa/ursa_overpower_buff.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Ursa.Overpower" } "RunScript" { "ScriptFile" "heroes/hero_ursa/overpower.lua" "Function" "overpower_init" } } "Modifiers" { "modifier_enrage_buff_datadriven" { "Duration" "%duration_tooltip" "StatusEffectName" "particles/status_fx/status_effect_overpower.vpcf" "StatusEffectPriority" "10" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_ursa/ursa_overpower_buff.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_head" "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" "CASTER" "attach_hitloc" } } } "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_ursa/overpower.lua" "Function" "overpower_decrease_stack" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_bonus_pct" } } } } // Rewrite of the Vengeful Spirit Command Aura ability // Author: Pizzalol // Date: 26.01.2015. // Game version: 6.84 "vengefulspirit_command_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityTextureName" "vengefulspirit_command_aura" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_vengeful/vengeful_negative_aura.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "12 20 28 36" } "02" { "var_type" "FIELD_INTEGER" "aura_radius" "900" } // Extra "03" { "var_type" "FIELD_INTEGER" "negative_damage_pct" "-12 -20 -28 -36" } } "Modifiers" { "modifier_command_aura_caster_datadriven" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "Aura" "modifier_command_aura_friendly_datadriven" "Aura_Radius" "%aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "OnRespawn" { "RunScript" { "ScriptFile" "heroes/hero_vengefulspirit/command_aura.lua" "Function" "CommandAuraRespawn" "modifier" "modifier_command_aura_attacker_datadriven" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_vengefulspirit/command_aura.lua" "Function" "CommandAuraDeath" } "ApplyModifier" { "ModifierName" "modifier_command_aura_attacker_datadriven" "Target" { "Center" "ATTACKER" "Types" "DOTA_UNIT_TARGET_HERO" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_vengeful/vengeful_negative_aura.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "ATTACKER" "follow_origin" "CASTER" "follow_origin" } } } } "modifier_command_aura_friendly_datadriven" { "IsBuff" "1" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%bonus_damage_pct" } } "modifier_command_aura_attacker_datadriven" { "Passive" "0" "IsHidden" "1" "IsDebuff" "1" "Aura" "modifier_command_aura_enemy_datadriven" "Aura_Radius" "%aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" } "modifier_command_aura_enemy_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%negative_damage_pct" } } } } // Rewrite of the Vengeful Spirit Magic Missile ability // Author: Pizzalol // Date: 26.01.2015. // Game version: 6.84 "vengefulspirit_magic_missile_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "vengefulspirit_magic_missile" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_vengefulspirit.vsndevts" "particle" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0 12.0 11.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 250 325" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "magic_missile_speed" "1250" } "02" { "var_type" "FIELD_FLOAT" "magic_missile_stun" "1.45 1.55 1.65 1.75" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_VengefulSpirit.MagicMissile" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%magic_missile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_VengefulSpirit.MagicMissileImpact" "Target" "TARGET" } "Stun" { "Duration" "%magic_missile_stun" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } // Rewrite of the Vengeful Spirit Nether Swap ability // Author: Pizzalol // Date: 29.09.2015. "vengefulspirit_nether_swap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "vengefulspirit_nether_swap" "CastFilterRejectCaster" "1" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_vengefulspirit.vsndevts" "particle" "particles/units/heroes/hero_vengeful/vengeful_nether_swap.vpcf" "particle" "particles/units/heroes/hero_vengeful/vengeful_nether_swap_pink.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700 950 1200" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 150 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "tooltip_range" "700 950 1200" } "02" { "var_type" "FIELD_FLOAT" "nether_swap_cooldown_scepter" "10" } // Extra "03" { "var_type" "FIELD_INTEGER" "tree_radius" "300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_VengefulSpirit.NetherSwap" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_VengefulSpirit.NetherSwap" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_vengeful/vengeful_nether_swap.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "follow_origin" "CASTER" "follow_origin" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_vengeful/vengeful_nether_swap_pink.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "follow_origin" } } "RunScript" { "ScriptFile" "heroes/hero_vengefulspirit/nether_swap.lua" "Function" "NetherSwap" } } } // Rewrite of the Vengeful Spirit Wave of Terror ability // Author: Pizzalol // Date: 12.07.2015. // Game version: 6.84 "vengefulspirit_wave_of_terror_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "vengefulspirit_wave_of_terror" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_vengefulspirit.vsndevts" "particle" "particles/units/heroes/hero_vengeful/vengeful_wave_of_terror_recipient.vpcf" "particle" "particles/units/heroes/hero_vengeful/vengeful_wave_of_terror.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1400" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 20.0 20.0 20.0" "AbilityDuration" "15.0 15.0 15.0 15.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "30 50 70 90" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40 40 40 40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "wave_speed" "2000.0" } "02" { "var_type" "FIELD_INTEGER" "wave_width" "300" } "03" { "var_type" "FIELD_INTEGER" "armor_reduction" "-3 -4 -5 -6" } "04" { "var_type" "FIELD_FLOAT" "tooltip_duration" "20.0 20.0 20.0 20.0" } "05" { "var_type" "FIELD_FLOAT" "vision_aoe" "500 500 500 500" } "06" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0 3.0 3.0 3.0" } // Extra "07" { "var_type" "FIELD_FLOAT" "wave_range" "1400" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_VengefulSpirit.WaveOfTerror" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_vengefulspirit/wave_of_terror.lua" "Function" "WaveOfTerrorVision" "Target" "POINT" "wave_particle" "particles/units/heroes/hero_vengeful/vengeful_wave_of_terror.vpcf" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "ModifierName" "modifier_wave_of_terror_datadriven" "Target" "TARGET" "Duration" "%tooltip_duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%AbilityDamage" } } "Modifiers" { "modifier_wave_of_terror_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_vengeful/vengeful_wave_of_terror_recipient.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } } } } // Rewrite of the Venomancer Plague Ward ability // Author: Pizzalol and Rook // Date: 30.09.2015. "venomancer_plague_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "venomancer_plague_ward" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts" "model" "models/heroes/venomancer/venomancer_ward.vmdl" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "850" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "20 20 20 20" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0" } "02" { "var_type" "FIELD_INTEGER" "ward_hp_tooltip" "75 200 325 450" } "03" { "var_type" "FIELD_INTEGER" "ward_damage_tooltip" "10 19 29 38" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_venomancer/plague_ward.lua" "Function" "venomancer_plague_ward_datadriven_on_spell_start" "Target" "POINT" "Duration" "%duration" } } "Modifiers" { "modifier_plague_ward_datadriven" { "Passive" "0" "IsHidden" "1" "IsBuff" "1" "IsDebuff" "0" "IsPurgable" "0" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_venomancer/plague_ward.lua" "Function" "modifier_plague_ward_datadriven_on_attack_landed" } } } //A hidden modifier. Stacks of this modifier are used to slow the target by the correct amount. //The stack count is set to 0 when a Poison Sting debuff originating from Venomancer is applied, and restored when that debuff //expires, if this modifier still exists. "modifier_plague_ward_datadriven_poison_sting_debuff_movement_speed" { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-1" } } //A visible modifier. Deals damage over time to the target, but only if the target does not also have a //Poison Sting debuff originating from Venomancer. "modifier_plague_ward_datadriven_poison_sting_debuff" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_venomancer/plague_ward.lua" "Function" "modifier_plague_ward_datadriven_debuff_on_interval_think" } } "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_venomancer/plague_ward.lua" "Function" "modifier_plague_ward_datadriven_debuff_on_interval_think" } } } } } // Rewrite of the Venomancer Poison Nova ability // Author: Pizzalol // Date: 30.09.2015. // NOTE: Doesnt travel as an expanding circle around the hero but instead acts as an instant AOE ability "venomancer_poison_nova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "venomancer_poison_nova" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts" "particle" "particles/units/heroes/hero_venomancer/venomancer_poison_nova.vpcf" "particle" "particles/units/heroes/hero_venomancer/venomancer_poison_debuff_nova.vpcf" "particle" "particles/units/heroes/hero_venomancer/venomancer_poison_nova_cast.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0 120.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 300 400" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // just does damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "830 830 830" } "02" { "var_type" "FIELD_INTEGER" "start_radius" "255 255 255" } "03" { "var_type" "FIELD_FLOAT" "duration" "12.0 14.0 15.0" } "04" { "var_type" "FIELD_INTEGER" "damage" "36 58 81" } "05" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "140.0 120.0 60.0" } "06" { "var_type" "FIELD_FLOAT" "duration_scepter" "14.0 15.0 16.0" } "07" { "var_type" "FIELD_INTEGER" "damage_scepter" "58 81 108" } "08" { "var_type" "FIELD_INTEGER" "speed" "500 500 500" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Venomancer.PoisonNova" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_venomancer/venomancer_poison_nova_cast.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_venomancer/venomancer_poison_nova.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_origin" } "ControlPoints" { "01" "1 1 1" "02" "0 0 0" } } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_poison_nova_debuff_datadriven" "Target" "TARGET" "Duration" "%duration" } } } } "Modifiers" { "modifier_poison_nova_debuff_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_venomancer/venomancer_poison_debuff_nova.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_venomancer/poison_nova.lua" "Function" "PoisonNova" "Target" "TARGET" } } "OnCreated" { "FireSound" { "EffectName" "Hero_Venomancer.PoisonNovaImpact" "Target" "TARGET" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_venomancer/poison_nova.lua" "Function" "PoisonNova" "Target" "TARGET" } } } } } // Rewrite of the Venomancer Poison Sting ability // Author: Pizzalol and Rook // Date: 22.12.2014. // Known bugs: // The Plague Ward interaction with Poison Sting is hardcoded in modifier_poison_sting_debuff_datadriven_on_destroy(). // This can be fixed once we are able to determine the caster of a modifier. "venomancer_poison_sting_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "venomancer_poison_sting" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "6.0 9.0 12.0 15.0" } "02" { "var_type" "FIELD_INTEGER" "damage" "5 10 15 20" } "03" { "var_type" "FIELD_INTEGER" "movement_speed" "-11 -12 -13 -14" } } "Modifiers" { "modifier_poison_sting_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_poison_sting_debuff_datadriven" "Target" "TARGET" } } } "modifier_poison_sting_debuff_datadriven" { "IsDebuff" "1" "Duration" "%duration" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "OnCreated" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "RunScript" { "ScriptFile" "heroes/hero_venomancer/poison_sting.lua" "Function" "modifier_poison_sting_debuff_datadriven_on_created" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_venomancer/poison_sting.lua" "Function" "modifier_poison_sting_debuff_datadriven_on_destroy" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed" } } } } // Rewrite of the Venomancer Venomous Gale ability // Author: Pizzalol // Date: 30.09.2015. "venomancer_venomous_gale_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "venomancer_venomous_gale" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts" "particle" "particles/units/heroes/hero_venomancer/venomancer_venomous_gale.vpcf" "particle" "particles/units/heroes/hero_venomancer/venomancer_gale_poison_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22.0 22.0 22.0 22.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0 15.0 15.0 15.0" } "02" { "var_type" "FIELD_INTEGER" "strike_damage" "25 50 75 100" } "03" { "var_type" "FIELD_INTEGER" "tick_damage" "0 30 60 90" } "04" { "var_type" "FIELD_FLOAT" "tick_interval" "3.0 3.0 3.0 3.0" } "05" { "var_type" "FIELD_INTEGER" "movement_slow" "-50 -50 -50 -50" } "06" { "var_type" "FIELD_INTEGER" "radius" "125 125 125 125" } "07" { "var_type" "FIELD_INTEGER" "speed" "1200 1200 1200 1200" } "08" { "var_type" "FIELD_INTEGER" "distance" "800 800 800 800" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Venomancer.VenomousGale" "Target" "CASTER" } "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_venomancer/venomancer_venomous_gale.vpcf" "MoveSpeed" "%speed" "StartRadius" "%radius" "StartPosition" "attach_origin" "EndRadius" "%radius" "FixedDistance" "%distance" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "0" "ProvidesVision" "0" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_Venomancer.VenomousGaleImpact" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%strike_damage" } "RunScript" { "ScriptFile" "heroes/hero_venomancer/venomous_gale.lua" "Function" "VenomousGaleImpact" "modifier" "modifier_venomous_gale_debuff_datadriven" } } "Modifiers" { "modifier_venomous_gale_debuff_datadriven" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_venomancer/venomancer_gale_poison_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "%tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%tick_damage" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-1" } } } } // Rewrite of the Viper Corrosive Skin ability // Author: Pizzalol // Date: 17.12.2014. // NOTE: Particle effect doesnt work, missing control points? // NOTE2: Doesnt have the 1400 range limitation // NOTE3: Missing the floating damage numbers. Can be implemented in lua by running a script on every damage tick // and creating the particle there "viper_corrosive_skin_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "viper_corrosive_skin" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" "particle" "particles/units/heroes/hero_viper/viper_poison_debuff.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "10" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-10 -15 -20 -25" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "-10 -15 -20 -25" } "04" { "var_type" "FIELD_INTEGER" "bonus_magic_resistance" "10 15 20 25" } "05" { "var_type" "FIELD_INTEGER" "damage" "10 15 20 25" } "06" { "var_type" "FIELD_INTEGER" "max_range_tooltip" "1400" } } "Modifiers" { "modifier_corrosive_skin_datadriven" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "ApplyModifier" { "ModifierName" "modifier_corrosive_skin_debuff_datadriven" "Target" "ATTACKER" } "FireSound" { "EffectName" "Hero_Viper.CorrosiveSkin" "Target" "ATTACKER" } } "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%bonus_magic_resistance" } } "modifier_corrosive_skin_debuff_datadriven" { "Duration" "%duration" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_viper/viper_poison_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } } } } // Rewrite of the Viper Nethertoxin ability // Author: Pizzalol // Date: 19.12.2014. // Note: Mechanically it seems to be the same, but visually its a bit different on the UI // as it shows the extra damage in the UI "viper_nethertoxin_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "viper_nethertoxin" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { // Base Hero damage "01" { "var_type" "FIELD_FLOAT" "bonus_damage" "2.5 5 7.5 10" } "02" { "var_type" "FIELD_INTEGER" "non_hero_damage_pct" "50 50 50 50" } "03" { "var_type" "FIELD_INTEGER" "max_damage_tooltip" "40 80 120 160" } // Hero Damage "04" { "var_type" "FIELD_INTEGER" "damage_hero_80" "5 10 15 20" } "05" { "var_type" "FIELD_INTEGER" "damage_hero_60" "10 20 30 40" } "06" { "var_type" "FIELD_INTEGER" "damage_hero_40" "20 40 60 80" } "07" { "var_type" "FIELD_INTEGER" "damage_hero_20" "40 80 120 160" } // Creep Damage "08" { "var_type" "FIELD_INTEGER" "damage_creep_base" "1.25 2.5 3.75 5" } "09" { "var_type" "FIELD_INTEGER" "damage_creep_80" "2.5 5 7.5 10" } "10" { "var_type" "FIELD_INTEGER" "damage_creep_60" "5 10 15 20" } "11" { "var_type" "FIELD_INTEGER" "damage_creep_40" "10 20 30 40" } "12" { "var_type" "FIELD_INTEGER" "damage_creep_20" "20 40 60 80" } } "Modifiers" { "modifier_nethertoxin_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { // This is done to prevent stacking of different modifiers // Hero "RemoveModifier" { "ModifierName" "modifier_nethertoxin_100_hero_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_80_hero_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_60_hero_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_40_hero_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_20_hero_datadriven" "Target" "CASTER" } // Creep "RemoveModifier" { "ModifierName" "modifier_nethertoxin_100_creep_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_80_creep_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_60_creep_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_40_creep_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_nethertoxin_20_creep_datadriven" "Target" "CASTER" } // Script to determine which modifier gets applied "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_viper/nethertoxin.lua" "Function" "Nethertoxin" "Target" "TARGET" } } } "modifier_nethertoxin_100_hero_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" } } "modifier_nethertoxin_80_hero_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_hero_80" } } "modifier_nethertoxin_60_hero_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_hero_60" } } "modifier_nethertoxin_40_hero_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_hero_40" } } "modifier_nethertoxin_20_hero_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_hero_20" } } // The upper rank of hero damage can be applied instead of a creep modifier (eg 40% creep damage is the same as 60% hero) // I went with this way because it can get messy otherwise "modifier_nethertoxin_100_creep_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_creep_base" } } "modifier_nethertoxin_80_creep_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_creep_80" } } "modifier_nethertoxin_60_creep_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_creep_60" } } "modifier_nethertoxin_40_creep_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_creep_40" } } "modifier_nethertoxin_20_creep_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_creep_20" } } } } // Rewrite of the Viper Poison Attack ability // Author: Pizzalol // Date: 18.12.2014. "viper_poison_attack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "viper_poison_attack" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" "particle" "particles/units/heroes/hero_viper/viper_poison_attack.vpcf" "particle" "particles/units/heroes/hero_viper/viper_poison_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "20 20 20 20" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "2.0 2.0 2.0 2.0" } "02" { "var_type" "FIELD_INTEGER" "damage" "10 16 22 28" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-10 -20 -30 -40" } "04" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "-10 -20 -30 -40" } } "Modifiers" { "modifier_viper_poison_attack_orb_datadriven" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_viper/viper_poison_attack.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_Viper.poisonAttack.Cast" "Target" "CASTER" } } "OnOrbImpact" { "ApplyModifier" { "ModifierName" "modifier_viper_poison_attack_debuff_datadriven" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Viper.PoisonAttack.Target" "Target" "TARGET" } } } "modifier_viper_poison_attack_debuff_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_viper/viper_poison_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } } } } // Rewrite of the Viper Viper Strike ability // Author: Pizzalol // Date: 19.12.2014. // Changed: 15.01.2015. // NOTE: Wonky projectile particle // NOTE2: Edit the warmup particle and delete 3 out of 4 children for it to work properly (thanks to Noya for the info) "viper_viper_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "viper_viper_strike" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" // Wonky projectile "particle" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" // ? "particle" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" //- Seems to be like a "link" meaning it needs the caster #0 and target #1 "particle" "particles/status_fx/status_effect_poison_viper.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_viper.vsndevts" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0 50.0 30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 175 250" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5.1 5.1 5.1" } "02" { "var_type" "FIELD_INTEGER" "damage" "60 100 145" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-40 -60 -80" } "04" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "-40 -60 -80" } "05" { "var_type" "FIELD_INTEGER" "mana_cost_scepter" "125 125 125" } "06" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "12.0 12.0 12.0" } "07" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "900" } "08" { "var_type" "FIELD_INTEGER" "projectile_speed" "1200" } // These are for the dissipating attack and movement slow over time "09" { "var_type" "FIELD_INTEGER" "bonus_movement_speed_small" "-8 -12 -16" } "10" { "var_type" "FIELD_INTEGER" "bonus_attack_speed_small" "-8 -12 -16" } } "OnAbilityPhaseStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_warmup.vpcf" "EffectAttachType" "attach_origin" "ControlPointEntities" { "CASTER" "attach_attack1" "CASTER" "attach_attack1" } } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_Viper.viperStrike" "Target" "CASTER" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Viper.viperStrikeImpact" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_viper_strike_debuff_datadriven" "Target" "TARGET" } // Slow Part "ApplyModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_viper_strike_debuff_datadriven" { "IsDebuff" "1" "Duration" "%duration" "StatusEffectName" "particles/status_fx/status_effect_poison_viper.vpcf" "StatusEffectPriority" "15" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_viper/viper_viper_strike_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RemoveModifier" { "ModifierName" "modifier_viper_strike_slow_datadriven" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } "modifier_viper_strike_slow_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed_small" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed_small" } } } } "visage_gravekeepers_cloak_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_armor" "1 2 4 5" } "02" { "var_type" "FIELD_INTEGER" "bonus_resist" "3 6 12 16" } "03" { "var_type" "FIELD_INTEGER" "max_layers" "4" } "04" { "var_type" "FIELD_FLOAT" "recovery_time" "12.0 10.0 8.0 6.0" } } } "visage_grave_chill_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "visage_grave_chill" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 14.0 12.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "chill_duration" "3.0 4.0 5.0 6.0" } "02" { "var_type" "FIELD_INTEGER" "movespeed_bonus" "32 32 32 32" } "03" { "var_type" "FIELD_INTEGER" "attackspeed_bonus" "64 64 64 64" } } } "visage_soul_assumption_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "visage_soul_assumption" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "4.0 4.0 4.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "170 160 150 140" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900 900 900 900" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bolt_speed" "1000" } "02" { "var_type" "FIELD_INTEGER" "soul_base_damage" "20" } "03" { "var_type" "FIELD_INTEGER" "soul_charge_damage" "65" } "04" { "var_type" "FIELD_INTEGER" "damage_limit" "110" } "05" { "var_type" "FIELD_INTEGER" "stack_limit" "3 4 5 6" } "06" { "var_type" "FIELD_FLOAT" "stack_duration" "6.0" } "07" { "var_type" "FIELD_INTEGER" "radius" "1375" } "08" { "var_type" "FIELD_FLOAT" "damage_min" "2.0" } "09" { "var_type" "FIELD_FLOAT" "damage_max" "3000.0" } } } "visage_summon_familiars_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "180.0 160.0 140.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "familiar_hp" "300 450 600" } "02" { "var_type" "FIELD_INTEGER" "familiar_armor" "0 1 2" } "03" { "var_type" "FIELD_INTEGER" "familiar_speed" "380 390 400" } "04" { "var_type" "FIELD_INTEGER" "familiar_max_damage" "56 98 154" } "05" { "var_type" "FIELD_FLOAT" "damage_charge_time" "15.0" } "06" { "var_type" "FIELD_INTEGER" "damage_per_charge" "8 14 22" } "07" { "var_type" "FIELD_INTEGER" "max_damage_charges" "7" } } } "visage_summon_familiars_stone_form_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityCastRange" "160" "AbilityCastPoint" "0.0" "MaxLevel" "3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "26.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "stun_radius" "325" } "02" { "var_type" "FIELD_FLOAT" "stun_delay" "1.0" } "03" { "var_type" "FIELD_INTEGER" "stun_damage" "60 100 140" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0 1.25 1.5" } "05" { "var_type" "FIELD_FLOAT" "stone_duration" "8.0" } "06" { "var_type" "FIELD_FLOAT" "hp_regen" "50.0 68.7 87.5" } "07" { "var_type" "FIELD_INTEGER" "max_damage_charges" "7" } } } "warlock_fatal_bonds_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "warlock_fatal_bonds" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25.0 25.0 25.0 25.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // only does damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "count" "3 4 5 6" } "02" { "var_type" "FIELD_INTEGER" "damage_share_percentage" "25" } "03" { "var_type" "FIELD_FLOAT" "duration" "25.0" } "04" { "var_type" "FIELD_FLOAT" "search_aoe" "575" } } } "warlock_golem_flaming_fists_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "MaxLevel" "3" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "80 115 150" } "02" { "var_type" "FIELD_INTEGER" "chance" "40" } "03" { "var_type" "FIELD_INTEGER" "radius" "300 300 300" } } } "warlock_golem_permanent_immolation_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "MaxLevel" "3" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "aura_radius" "300" } "02" { "var_type" "FIELD_INTEGER" "aura_damage" "30 40 50" } } } "warlock_rain_of_chaos_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "warlock_rain_of_chaos" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "165 165 165" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 300 400" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Primarily about the summon // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "golem_duration" "60 60 60" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.0" } "03" { "var_type" "FIELD_INTEGER" "aoe" "600" } "04" { "var_type" "FIELD_INTEGER" "golem_hp_tooltip" "900 1200 1500" } "05" { "var_type" "FIELD_INTEGER" "golem_dmg_tooltip" "75 100 125" } "06" { "var_type" "FIELD_INTEGER" "golem_armor_tooltip" "6 9 12" } "07" { "var_type" "FIELD_INTEGER" "number_of_golems_scepter" "2" } "08" { "var_type" "FIELD_INTEGER" "golem_hp_tooltip_scepter" "675 900 1125" } "09" { "var_type" "FIELD_INTEGER" "golem_dmg_tooltip_scepter" "56 75 94" } "10" { "var_type" "FIELD_INTEGER" "hp_dmg_reduction_scepter" "25" } "11" { "var_type" "FIELD_INTEGER" "bounty_reduction_scepter" "50" } } } "warlock_shadow_word_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "warlock_shadow_word" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "15 25 35 45" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 110 130 150" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier just does damage/healing // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "11.0" } "02" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } } } "warlock_upheaval_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_AOE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityChannelTime" "16.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50 46 42 38" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 110 120 130" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "aoe" "650 650 650 650" } "02" { "var_type" "FIELD_INTEGER" "slow_rate" "7 14 21 28" } "03" { "var_type" "FIELD_FLOAT" "duration" "3.0" } "04" { "var_type" "FIELD_INTEGER" "max_slow" "84" } } } "weaver_geminate_attack_datadriven" { // General "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCooldown" "6.0 5.0 4.0 3.0" } "weaver_shukuchi_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 10.0 8.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 60 60 60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "75 100 125 150" } "02" { "var_type" "FIELD_INTEGER" "radius" "175 175 175 175" } "03" { "var_type" "FIELD_FLOAT" "fade_time" "0.25 0.25 0.25 0.25" } "04" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.0 4.0 4.0" } } } "weaver_the_swarm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCastRange" "3000" "AbilityCooldown" "36.0 33.0 30.0 27.0" "AbilityManaCost" "100 100 100 100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.2" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "15 20 25 30" } "02" { "var_type" "FIELD_FLOAT" "attack_rate" "1.35 1.35 1.35 1.35" } "03" { "var_type" "FIELD_FLOAT" "duration" "14 16 18 20" } "04" { "var_type" "FIELD_INTEGER" "count" "12 12 12 12" } "05" { "var_type" "FIELD_INTEGER" "armor_reduction" "1 1 1 1" } "06" { "var_type" "FIELD_INTEGER" "destroy_attacks" "8 8 8 8" } "07" { "var_type" "FIELD_INTEGER" "radius" "100 100 100 100" } "08" { "var_type" "FIELD_INTEGER" "speed" "600 600 600 600" } "09" { "var_type" "FIELD_INTEGER" "spawn_radius" "300 300 300 300" } } } "weaver_time_lapse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "FightRecapLevel" "2" "AbilityTextureName" "weaver_time_lapse" "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCooldown" "60 50 40" "AbilityManaCost" "150 75 0" } // Rewrite of the Windrunner Focusfire // Author: kritth // Date: 01.10.2015. "windrunner_focusfire_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "windrunner_focusfire" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 60.0 60.0" "AbilityDuration" "20.0 20.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 100 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "focusfire_damage_reduction" "-50 -40 -30" } "02" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "15.0 15.0 15.0" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "400" } "04" { "var_type" "FIELD_INTEGER" "focusfire_damage_reduction_scepter" "-30 -15 0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.Focusfire" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_focusfire_caster_datadriven" "Duration" "%AbilityDuration" } "RunScript" { "ScriptFile" "heroes/hero_windrunner/focusfire.lua" "Function" "focusfire_register" } } "Modifiers" { "modifier_focusfire_caster_datadriven" { "IsHidden" "0" "IsPurgable" "0" // when attack start, remove attackspeed "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/hero_windrunner/focusfire.lua" "Function" "focusfire_on_attack_landed" } } // after attack complete, remove damage "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_windrunner/focusfire.lua" "Function" "focusfire_on_attack_landed" } } "OnDestroy" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_focusfire_attackspeed_buff_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_focusfire_damage_debuff_datadriven" } } } "modifier_focusfire_attackspeed_buff_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" } } "modifier_focusfire_damage_debuff_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "%focusfire_damage_reduction" } } } } // Rewrite of the Windrunner Powershot // Author: kritth, Pizzalol // Date: 01.10.2015. "windrunner_powershot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_CUSTOM" "FightRecapLevel" "1" "AbilityTextureName" "windrunner_powershot" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9.0 9.0 9.0 9.0" "AbilityChannelTime" "1.0 1.0 1.0 1.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "120 200 280 360" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_reduction" "0.1 0.1 0.1 0.1" } "02" { "var_type" "FIELD_FLOAT" "speed_reduction" "0.1 0.1 0.1 0.1" } "03" { "var_type" "FIELD_INTEGER" "arrow_width" "125 125 125 125" } "04" { "var_type" "FIELD_INTEGER" "arrow_range" "2600" } "05" { "var_type" "FIELD_FLOAT" "arrow_speed" "3000.0 3000.0 3000.0 3000.0" } "06" { "var_type" "FIELD_FLOAT" "tree_width" "75 75 75 75" } "07" { "var_type" "FIELD_INTEGER" "vision_radius" "400 400 400 400" } "08" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34 3.34 3.34 3.34" } // Extra variable "09" { "var_type" "FIELD_FLOAT" "charge_interval" "0.01" } "10" { "var_type" "FIELD_FLOAT" "damage_per_interval" "0.01" } "11" { "var_type" "FIELD_FLOAT" "charge_time" "1.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts" "particle" "particles/units/heroes/hero_windrunner/windrunner_spell_powershot.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.PowershotPull" } // Reset speed and damage variables and set timer for channel "RunScript" { "ScriptFile" "heroes/hero_windrunner/powershot.lua" "Function" "powershot_initialize" "Target" "POINT" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_powershot_charge_datadriven" } } "OnChannelFinish" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_powershot_charge_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_windrunner/powershot.lua" "Function" "powershot_start_traverse" } } "OnProjectileHitUnit" { "DeleteOnHit" "false" "RunScript" { "ScriptFile" "heroes/hero_windrunner/powershot.lua" "Function" "powershot_register_unit" } } "Modifiers" { "modifier_powershot_charge_datadriven" { "Duration" "%charge_time" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_windrunner/powershot.lua" "Function" "powershot_charge" } } "ThinkInterval" "%charge_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_windrunner/powershot.lua" "Function" "powershot_charge" } } } } } // Rewrite of the Windrunner Shackleshot ability // Author: jacklarnes, Pizzalol // Date: 02.10.2015. "windrunner_shackleshot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "windrunner_shackleshot" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts" "particle" "particles/units/heroes/hero_windrunner/windrunner_shackleshot.vpcf" "particle" "particles/units/heroes/hero_windrunner/windrunner_shackleshot_pair.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fail_stun_duration" "0.75 0.75 0.75 0.75" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5 2.25 3.0 3.75" } "03" { "var_type" "FIELD_INTEGER" "shackle_distance" "575" } "04" { "var_type" "FIELD_INTEGER" "arrow_speed" "1515" } "05" { "var_type" "FIELD_INTEGER" "shackle_count" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Windrunner.ShackleshotCast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_windrunner/windrunner_shackleshot.vpcf" "Dodgeable" "0" "ProvidesVision" "0" "MoveSpeed" "%arrow_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "RunScript" { "ScriptFile" "heroes/hero_windrunner/shackleshot.lua" "Function" "shackleshot_hit" } } "Modifiers" { "modifier_shackle_stun_datadriven" { "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Windrunner Windrun ability // Author: kritth // Date: 01.10.2015. "windrunner_windrun_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "windrunner_windrun" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityDuration" "3 4 5 6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // Mostly about dodging all attacks // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movespeed_bonus_pct" "50 50 50 50" } "02" { "var_type" "FIELD_INTEGER" "evasion_pct_tooltip" "100" } "03" { "var_type" "FIELD_INTEGER" "enemy_movespeed_bonus_pct" "-8 -16 -24 -30" } "04" { "var_type" "FIELD_INTEGER" "radius" "300 300 300 300" } "05" { "var_type" "FIELD_FLOAT" "duration" "3 4 5 6" } // Extra variables "06" { "var_type" "FIELD_FLOAT" "linger_duration" "2.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts" "particle" "particles/units/heroes/hero_windrunner/windrunner_windrun.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.Windrun" // Find the name for actual sound } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_windrun_caster_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_windrun_debuff_aura_datadriven" } } "Modifiers" { "modifier_windrun_caster_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_windrunner/windrunner_windrun.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion_pct_tooltip" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_bonus_pct" } } "modifier_windrun_debuff_aura_datadriven" { "Duration" "%duration" "IsHidden" "1" "Aura" "modifier_windrun_debuff_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "modifier_windrun_debuff_datadriven" { "IsDebuff" "1" "OnCreated" { "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_windrun_debuff_datadriven" } } "OnDestroy" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_windrun_debuff_linger_datadriven" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%enemy_movespeed_bonus_pct" } } "modifier_windrun_debuff_linger_datadriven" { "Duration" "%linger_duration" "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%enemy_movespeed_bonus_pct" } } } } "wisp_empty1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "wisp_empty2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } "wisp_overcharge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE" "AbilityTextureName" "wisp_overcharge" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "2.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "40 50 60 70" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage_pct" "-5 -10 -15 -20" } "03" { "var_type" "FIELD_FLOAT" "drain_interval" "0.2 0.2 0.2 0.2" } "04" { "var_type" "FIELD_FLOAT" "drain_pct" "0.045 0.045 0.045 0.045" } "05" { "var_type" "FIELD_FLOAT" "drain_pct_tooltip" "4.5 4.5 4.5 4.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts" "particle" "particles/units/heroes/hero_wisp/wisp_overcharge.vpcf" } "OnToggleOn" { "ApplyModifier" { "ModifierName" "modifier_overcharge_drain_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_overcharge_check_tether_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_overcharge_buff_datadriven" "Target" "CASTER" } } "OnToggleOff" { "RemoveModifier" { "ModifierName" "modifier_overcharge_drain_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_overcharge_check_tether_datadriven" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_overcharge_buff_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_overcharge_drain_datadriven" { "IsHidden" "1" "OnCreated" { "FireSound" { "EffectName" "Hero_Wisp.Overcharge" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "StopSound" "sound_name" "Hero_Wisp.Overcharge" } } "ThinkInterval" "%drain_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "TickDrain" "drain_interval" "%drain_interval" "drain_pct" "%drain_pct" } } } "modifier_overcharge_check_tether_datadriven" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "GrabTetherAbility" "tether_ability_name" "wisp_tether_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "CheckTetheredAlly" "tether_ally_property_name" "tether_ally" // We can access the tethered ally through "tether_ability[tether_ally_property_name]" "buff_modifier" "modifier_overcharge_buff_datadriven" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "CheckTetheredAlly" "tether_ally_property_name" "tether_ally" "buff_modifier" "modifier_overcharge_buff_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_wisp/overcharge.lua" "Function" "RemoveOverchargeFromAlly" "buff_modifier" "modifier_overcharge_buff_datadriven" } } } "modifier_overcharge_buff_datadriven" { "IsBuff" "1" "Duration" "-1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_overcharge.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" } } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%bonus_damage_pct" } } } } "wisp_relocate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "FightRecapLevel" "1" "AbilityTextureName" "wisp_relocate" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90.0 75.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "cast_delay" "2.5 2.25 2.0" } "02" { "var_type" "FIELD_FLOAT" "return_time" "12.0 12.0 12.0" } // Extra variables "03" { "var_type" "FIELD_INTEGER" "destroy_tree_radius" "300" } "04" { "var_type" "FIELD_INTEGER" "vision_radius" "64" } "04" { "var_type" "FIELD_FLOAT" "extra_tether_duration" "2.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts" "particle" "particles/units/heroes/hero_wisp/wisp_relocate_channel.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_relocate_marker.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_relocate_marker_endpoint.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_relocate_teleport.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_relocate_timer.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Wisp.Relocate" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "CastRelocate" "Target" "POINT" "tether_ability" "wisp_tether_datadriven" "tether_modifier" "modifier_tether_caster_datadriven" "tether_ally_property_name" "tether_ally" // We can access the tethered ally through "tether_ability[tether_ally_property_name]" "tether_ally_modifier" "modifier_tether_ally_datadriven" } "ApplyModifier" { "ModifierName" "modifier_relocate_channel_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_relocate_channel_datadriven" { "Duration" "%cast_delay" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_relocate_channel.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "CreateMarkerEndpoint" "endpoint_particle" "particles/units/heroes/hero_wisp/wisp_relocate_marker_endpoint.vpcf" "vision_radius" "%vision_radius" "vision_duration" "%cast_delay" } } "OnStateChanged" { "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "CheckToInterrupt" "channel_modifier" "modifier_relocate_channel_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "DestroyMarkerEndpoint" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "TryToTeleport" "timer_modifier" "modifier_relocate_timer_datadriven" } } } "modifier_relocate_return_datadriven" { // Visible from otheres as compared with modifier_relocate_timer_datadriven } "modifier_relocate_timer_datadriven" { "IsHidden" "1" "Duration" "%return_time" // Timer should be hidden "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_relocate_return_datadriven" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "Teleportation_PreDestroyTree" "tether_ability" "wisp_tether_datadriven" "tether_modifier" "modifier_tether_caster_datadriven" "tether_ally_property_name" "tether_ally" "tether_ally_modifier" "modifier_tether_ally_datadriven" "tether_duration" "%return_time + %extra_tether_duration" "teleport_particle" "particles/units/heroes/hero_wisp/wisp_relocate_teleport.vpcf" } "DestroyTrees" { "Target" "CASTER" "Radius" "%destroy_tree_radius" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "Teleportation_PostDestroyTree" "return_time" "%return_time" "marker_particle" "particles/units/heroes/hero_wisp/wisp_relocate_marker.vpcf" "timer_particle" "particles/units/heroes/hero_wisp/wisp_relocate_timer.vpcf" } "FireSound" { "EffectName" "Hero_Wisp.ReturnCounter" "Target" "CASTER" } } "ThinkInterval" "1.0" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "UpdateTimer" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "TryReturningTeleportation" "returning_modifier" "modifier_relocate_returning_teleport_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "StopSound" "Target" "CASTER" "sound_name" "Hero_Wisp.ReturnCounter" } "RemoveModifier" { "ModifierName" "modifier_relocate_return_datadriven" "Target" "TARGET" } } } "modifier_relocate_returning_teleport_datadriven" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "ReturningTeleportation_PreDestroyTree" "tether_ability" "wisp_tether_datadriven" "tether_modifier" "modifier_tether_caster_datadriven" "tether_ally_property_name" "tether_ally" "teleport_particle" "particles/units/heroes/hero_wisp/wisp_relocate_teleport.vpcf" } "DestroyTrees" { "Target" "CASTER" "Radius" "%destroy_tree_radius" } "RunScript" { "ScriptFile" "heroes/hero_wisp/relocate.lua" "Function" "ReturningTeleportation_PostDestroyTree" } "FireSound" { "EffectName" "Hero_Wisp.Return" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_relocate_returning_teleport_datadriven" "Target" "CASTER" } } } } } "wisp_spirits_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "wisp_spirits" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 18.0 16.0 14.0" "AbilityDuration" "19.0 19.0 19.0 19.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 130 140 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "02" { "var_type" "FIELD_INTEGER" "creep_damage" "8 14 20 26" } "03" { "var_type" "FIELD_INTEGER" "hero_damage" "25 50 75 100" } "04" { "var_type" "FIELD_FLOAT" "revolution_time" "5.0 5.0 5.0 5.0" } "05" { "var_type" "FIELD_INTEGER" "min_range" "100 100 100 100" } "06" { "var_type" "FIELD_INTEGER" "max_range" "875 875 875 875" } "07" { "var_type" "FIELD_INTEGER" "hero_hit_radius" "70 70 70 70" } "08" { "var_type" "FIELD_INTEGER" "explode_radius" "300 300 300 300" } "09" { "var_type" "FIELD_INTEGER" "hit_radius" "150 150 150 150" } "10" { "var_type" "FIELD_INTEGER" "default_radius" "150" } "11" { "var_type" "FIELD_INTEGER" "spirit_movement_rate" "250 250 250 250" } "12" { "var_type" "FIELD_FLOAT" "spirit_duration" "19.0 19.0 19.0 19.0" } // Extra variables "13" { "var_type" "FIELD_INTEGER" "num_spirits" "5" } "14" { "var_type" "FIELD_FLOAT" "spirit_summon_interval" "1.0" } "15" { "var_type" "FIELD_FLOAT" "spirit_turn_rate" "150" } "16" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0" } "17" { "var_type" "FIELD_FLOAT" "think_interval" "0.03" } "18" { "var_type" "FIELD_FLOAT" "creep_damage_interval" "0.48" // == 360 / %spirit_turn_rate / %num_spirits } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts" "particle" "particles/units/heroes/hero_wisp/wisp_guardian_.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_guardian_explosion.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_guardian_explosion_small.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Wisp.Spirits.Cast" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_spirits_caster_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_spirits_caster_datadriven" "Target" "CASTER" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "LevelUpAbility" "ability_name" "wisp_spirits_in_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "LevelUpAbility" "ability_name" "wisp_spirits_out_datadriven" } } "Modifiers" { "modifier_spirits_caster_datadriven" { "Duration" "%spirit_duration" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "CastSpirits" "default_radius" "%default_radius" "empty1_ability" "wisp_empty1_datadriven" "empty2_ability" "wisp_empty2_datadriven" "spirits_in_ability" "wisp_spirits_in_datadriven" "spirits_out_ability" "wisp_spirits_out_datadriven" } "FireSound" { "EffectName" "Hero_Wisp.Spirits.Loop" "Target" "CASTER" } } "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ThinkSpirits" "think_interval" "%think_interval" "num_spirits" "%num_spirits" "spirit_summon_interval" "%spirit_summon_interval" "spirit_turn_rate" "%spirit_turn_rate" "min_range" "%min_range" "max_range" "%max_range" "spirit_movement_rate" "%spirit_movement_rate" "caster_modifier" "modifier_spirits_caster_datadriven" "spirit_particle_name" "particles/units/heroes/hero_wisp/wisp_guardian_.vpcf" "spirit_modifier" "modifier_spirits_spirit_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "EndSpirits" "spirit_modifier" "modifier_spirits_spirit_datadriven" "empty1_ability" "wisp_empty1_datadriven" "empty2_ability" "wisp_empty2_datadriven" "spirits_in_ability" "wisp_spirits_in_datadriven" "spirits_out_ability" "wisp_spirits_out_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "StopSound" "sound_name" "Hero_Wisp.Spirits.Loop" } } } "modifier_spirits_spirit_datadriven" { "Aura" "modifier_spirits_creep_damage_datadriven" "Aura_Radius" "%hit_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "OnCreatedSpirit" "additionalModifier" "modifier_spirits_spirit_collision_with_hero_datadriven" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_spirits_spirit_collision_with_hero_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_guardian_explosion.vpcf" "EffectAttachType" "attach_origin" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Wisp.Spirits.Destroy" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "OnDestroySpirit" "Target" "TARGET" "vision_radius" "%explode_radius" "vision_duration" "%vision_duration" } "Damage" { "Target" { "Center" "TARGET" "Radius" "%explode_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%hero_damage" } } "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_spirits_spirit_collision_with_hero_datadriven" { "Aura" "modifier_spirits_trigger_explode_datadriven" "Aura_Radius" "%hero_hit_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" } "modifier_spirits_creep_damage_datadriven" { "Duration" "0.03" "IsHidden" "1" "OnCreated" { "FireSound" { "EffectName" "Hero_Wisp.Spirits.TargetCreep" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_guardian_explosion_small.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%creep_damage" } } "ThinkInterval" "%creep_damage_interval" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Wisp.Spirits.TargetCreep" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_guardian_explosion_small.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%creep_damage" } } } "modifier_spirits_trigger_explode_datadriven" { "Duration" "0.03" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ExplodeSpirit" "spirit_modifier" "modifier_spirits_spirit_datadriven" "explosion_sound" "Hero_Wisp.Spirits.Target" } } } } } "wisp_spirits_in_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "MaxLevel" "1" "AbilityTextureName" "wisp_spirits_in" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ToggleOn" "spirit_movement" "-1" "opposite_ability" "wisp_spirits_out_datadriven" } } "OnToggleOff" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ToggleOff" } } } "wisp_spirits_out_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "MaxLevel" "1" "AbilityTextureName" "wisp_spirits_out" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnToggleOn" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ToggleOn" "spirit_movement" "1" "opposite_ability" "wisp_spirits_in_datadriven" } } "OnToggleOff" { "RunScript" { "ScriptFile" "heroes/hero_wisp/spirits.lua" "Function" "ToggleOff" } } } "wisp_tether_break_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "MaxLevel" "1" "AbilityTextureName" "wisp_tether_break" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.0 1.0 1.0 1.0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_tether_caster_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "LevelUpAbility" "ability_name" "wisp_tether_datadriven" } } } // Rewrite of the Wisp Tether // Author: Ractidous // Date: 29.09.2015. "wisp_tether_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "wisp_tether" "CastFilterRejectCaster" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.001 0.001 0.001 0.001" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" "AbilityDuration" "12.0 12.0 12.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40 40 40 40" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1800 1800 1800 1800" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900 900 900 900" } "02" { "var_type" "FIELD_INTEGER" "movespeed" "17" } "03" { "var_type" "FIELD_INTEGER" "latch_distance" "700 700 700 700" } "04" { "var_type" "FIELD_INTEGER" "latch_speed" "1000 1000 1000 1000" } "05" { "var_type" "FIELD_FLOAT" "tether_duration" "12.0 12.0 12.0 12.0" } "06" { "var_type" "FIELD_FLOAT" "tether_heal_amp" "1.5" } "07" { "var_type" "FIELD_INTEGER" "slow" "-100" } "08" { "var_type" "FIELD_INTEGER" "attackslow_tooltip" "-100" } "09" { "var_type" "FIELD_FLOAT" "stun_duration" "0.75 1.25 1.75 2.25" } // Extra variables "10" { "var_type" "FIELD_INTEGER" "latch_distance_to_target" "300" } "11" { "var_type" "FIELD_INTEGER" "latch_destroy_tree_radius" "350" } "12" { "var_type" "FIELD_FLOAT" "latch_tick_interval" "0.03" } "13" { "var_type" "FIELD_INTEGER" "tether_line_radius" "32" } "14" { "var_type" "FIELD_FLOAT" "tether_line_tick_interval" "0.03" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts" "particle" "particles/units/heroes/hero_wisp/wisp_tether.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_tether_hit.vpcf" "particle" "particles/units/heroes/hero_wisp/wisp_tether_slow.vpcf" } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_tether_caster_datadriven" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_tether_ally_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "CastTether" "Target" "TARGET" "latch_distance" "%latch_distance" "latch_modifier" "modifier_tether_caster_latching_datadriven" "sub_ability_name" "wisp_tether_break_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "LevelUpAbility" "ability_name" "wisp_tether_break_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "OnProjectileHit" "Target" "TARGET" "slow_modifier" "modifier_tether_slow_datadriven" } } "Modifiers" { "modifier_tether_caster_datadriven" { "IsBuff" "1" "Duration" "%tether_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed" } "OnCreated" { "FireSound" { "EffectName" "Hero_Wisp.Tether" // a loop sound "Target" "CASTER" } } "OnDestroy" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_tether_caster_latching_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "EndTether" "ally_modifier" "modifier_tether_ally_datadriven" "sub_ability_name" "wisp_tether_break_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "StopSound" "sound_name" "Hero_Wisp.Tether" } "FireSound" { "EffectName" "Hero_Wisp.Tether.Stop" "Target" "CASTER" } } "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentHealth" } } "OnHealReceived" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "HealAlly" "tether_heal_amp" "%tether_heal_amp" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentHealth" } } "OnHealthGained" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "HealAlly" "tether_heal_amp" "%tether_heal_amp" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentHealth" } } "OnSpentMana" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "GiveManaToAlly" "tether_heal_amp" "%tether_heal_amp" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentMana" } } "OnManaGained" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "GiveManaToAlly" "tether_heal_amp" "%tether_heal_amp" } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentMana" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "TrackCurrentHealth" } // "RunScript" // { // "ScriptFile" "heroes/hero_wisp/tether.lua" // "Function" "TrackCurrentMana" // } "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "CheckDistance" "radius" "%radius" "caster_modifier" "modifier_tether_caster_datadriven" "latch_modifier" "modifier_tether_caster_latching_datadriven" } } } "modifier_tether_caster_latching_datadriven" { "IsHidden" "1" "Duration" "%tether_duration" "ThinkInterval" "%latch_tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "Latch" "tick_interval" "%latch_tick_interval" "latch_speed" "%latch_speed" "latch_distance_to_target" "%latch_distance_to_target" "latch_modifier" "modifier_tether_caster_latching_datadriven" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "DestroyTrees" { "Target" "TARGET" "Radius" "%latch_destroy_tree_radius" } } } "modifier_tether_ally_datadriven" { "IsBuff" "1" "Duration" "%tether_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed" } "OnCreated" { "FireSound" { "EffectName" "Hero_Wisp.Tether.Target" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_tether.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "ThinkInterval" "%tether_line_tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_wisp/tether.lua" "Function" "FireTetherProjectile" "Target" "TARGET" "tether_line_radius" "%tether_line_radius" "tick_interval" "%tether_line_tick_interval" } } } "modifier_tether_slow_datadriven" { "IsDebuff" "1" "Duration" "%stun_duration" "EffectName" "particles/units/heroes/hero_wisp/wisp_tether_slow.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow" } "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_wisp/wisp_tether_slow.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Wisp.Tether.Stun" "Target" "TARGET" } } } } } "witch_doctor_death_ward_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "witch_doctor_death_ward" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0" "AbilityChannelTime" "8.0 8.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 200 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "60 90 120" } "02" { "var_type" "FIELD_INTEGER" "bounces" "0 0 1" } "03" { "var_type" "FIELD_INTEGER" "damage_scepter" "90 120 150" } "04" { "var_type" "FIELD_INTEGER" "scepter_bounces" "4 4 4" } "05" { "var_type" "FIELD_INTEGER" "bounce_radius" "650 650 650" } } } "witch_doctor_maledict_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "witch_doctor_maledict" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "525" "AbilityCastPoint" "0.35 0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0" "AbilityDuration" "12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "5 10 15 20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "180" } "02" { "var_type" "FIELD_INTEGER" "duration_tooltip" "12" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "16 24 32 40" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage_threshold" "100" } "05" { "var_type" "FIELD_INTEGER" "ticks" "3" } } } "witch_doctor_paralyzing_cask_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "witch_doctor_paralyzing_cask" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.35 0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 18.0 16.0 14.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 100 125 150" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Can have multiple bounces // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hero_duration" "1.0 1.0 1.0 1.0" } "02" { "var_type" "FIELD_FLOAT" "creep_duration" "5.0 5.0 5.0 5.0" } "03" { "var_type" "FIELD_INTEGER" "hero_damage" "50 50 50 50" } "04" { "var_type" "FIELD_INTEGER" "bounce_range" "575 575 575 575" } "05" { "var_type" "FIELD_INTEGER" "bounces" "3 5 7 9" } "06" { "var_type" "FIELD_INTEGER" "speed" "1000" } "07" { "var_type" "FIELD_FLOAT" "bounce_delay" "0.3" } "08" { "var_type" "FIELD_INTEGER" "bounces_tooltip" "2 4 6 8" } } } "witch_doctor_voodoo_restoration_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "20 30 40 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_per_second" "8 12 16 20" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_INTEGER" "heal" "16 24 32 40" } "04" { "var_type" "FIELD_FLOAT" "heal_interval" "0.33 0.33 0.33 0.33" } } } "zuus_arc_lightning_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "850" "AbilityCastPoint" "0.2" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "85 100 115 145" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.75 1.75 1.75 1.75" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "65 70 75 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500 500 500 500" } "02" { "var_type" "FIELD_INTEGER" "jump_count" "5 7 9 15" } "03" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25 0.25 0.25 0.25" } } } "zuus_lightning_bolt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "zuus_lightning_bolt" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 175 275 350" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "6.0 6.0 6.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 95 115 135" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // just a ministun // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "true_sight_radius" "750" } "02" { "var_type" "FIELD_INTEGER" "sight_radius_day" "750" } "03" { "var_type" "FIELD_INTEGER" "sight_radius_night" "750" } "04" { "var_type" "FIELD_FLOAT" "sight_duration" "4.5" } "05" { "var_type" "FIELD_INTEGER" "spread_aoe" "325" } } } "zuus_static_field_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "1200" } "02" { "var_type" "FIELD_INTEGER" "damage_health_pct" "5 7 9 11" } } } "zuus_thundergods_wrath_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "zuus_thundergods_wrath" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "225 325 450" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "true_sight_radius" "900 900 900" } "02" { "var_type" "FIELD_INTEGER" "sight_radius_day" "1000 1000 1000 1000" } "03" { "var_type" "FIELD_INTEGER" "sight_radius_night" "1000 1000 1000 1000" } "04" { "var_type" "FIELD_FLOAT" "sight_duration" "3.0 3.0 3.0 3.0" } "05" { "var_type" "FIELD_INTEGER" "damage" "225 350 475" } "06" { "var_type" "FIELD_INTEGER" "damage_scepter" "440 540 640" } } } // Rewrite of Abaddon Aphotic Shield // Author: Noya // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_abaddon/aphotic_shield.lua "aphotic_shield_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "abaddon_aphotic_shield" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.452 0.452 0.452 0.452" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 10.0 8.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 105 110 115" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0" } "02" { "var_type" "FIELD_FLOAT" "damage_absorb" "110.0 140.0 170.0 200.0" } "03" { "var_type" "FIELD_INTEGER" "radius" "675" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" "particle" "particles/units/heroes/hero_abaddon/abaddon_aphotic_shield_explosion.vpcf" "particle" "particles/units/heroes/hero_abaddon/abaddon_aphotic_shield.vpcf" "particle" "particles/units/heroes/hero_abaddon/abaddon_aphotic_shield_hit.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/aphotic_shield.lua" "Function" "AphoticShield" } "FireSound" { "EffectName" "Hero_Abaddon.AphoticShield.Cast" "Target" "TARGET" } "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_aphotic_shield" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_aphotic_shield" } } "Modifiers" { "modifier_aphotic_shield" { "IsBuff" "1" "Duration" "%duration" "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/aphotic_shield.lua" "Function" "AphoticShieldHealth" } } "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/aphotic_shield.lua" "Function" "AphoticShieldAbsorb" "DamageTaken" "%attack_damage" } } "OnDestroy" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_abaddon/abaddon_aphotic_shield_explosion.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/hero_abaddon/aphotic_shield.lua" "Function" "EndShieldParticle" } "Damage" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage_absorb" } } } } } // Rewrite of Abaddon Borrowed Time // Author: Noya // Date: October 13, 2015 // Version: 6.78 // Type: Datadriven // Notes: The damage isn't really prevented, just healed twice so it looks like every damage instance is a heal. // This is not consistent with the Dota 2 mechanics for damage absorb, which has effects like denying lifesteal // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_abaddon/borrowed_time.lua "borrowed_time_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "abaddon_borrowed_time" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.452 0.452 0.452" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 50.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hp_threshold" "400" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.0 5.0" } "03" { "var_type" "FIELD_FLOAT" "duration_scepter" "5.0 6.0 7.0" } "04" { "var_type" "FIELD_FLOAT" "redirect" "0.35" } "05" { "var_type" "FIELD_FLOAT" "redirect_range_tooltip_scepter" "900" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" "particle" "particles/units/heroes/hero_abaddon/abaddon_borrowed_time.vpcf" "particle" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_borrowed_time" "Duration" "%duration" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_Abaddon.BorrowedTime" } "RunScript" { "ScriptFile" "heroes/hero_abaddon/borrowed_time.lua" "Function" "BorrowedTimePurge" } } "Modifiers" { "modifier_borrowed_time_passive" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/borrowed_time.lua" "Function" "BorrowedTimeActivate" } } } "modifier_borrowed_time" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_abaddon/abaddon_borrowed_time.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf" "StatusEffectPriority" "15" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/borrowed_time.lua" "Function" "BorrowedTimeHeal" "DamageTaken" "%attack_damage" } } } } } // Rewrite of Abaddon Death Coil // Author: Noya // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // Notes: Projectile is only cosmetic, the damage/heal is not tied to it // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_abaddon/death_coil.lua "death_coil_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "abaddon_death_coil" "CastFilterRejectCaster" "1" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.452 0.452 0.452 0.452" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "4.5 4.5 4.5 4.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 60 70 80" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "projectile_speed" "1250" } "02" { "var_type" "FIELD_FLOAT" "self_damage" "75 100 125 150" } "03" { "var_type" "FIELD_FLOAT" "target_damage" "100 150 200 250" } "04" { "var_type" "FIELD_INTEGER" "heal_amount" "100 150 200 250" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts" "particle" "particles/units/heroes/hero_abaddon/abaddon_death_coil.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_abaddon/death_coil.lua" "Function" "DeathCoil" } } } // Rewrite of Abaddon Curse of Avernus // Author: Noya // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven "frostmourne_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "abaddon_frostmourne" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "debuff_duration" "2.5" } "02" { "var_type" "FIELD_FLOAT" "buff_duration" "4.5" } "03" { "var_type" "FIELD_INTEGER" "slow_pct" "-5 -10 -15 -20" } "04" { "var_type" "FIELD_INTEGER" "attack_slow_tooltip" "-5 -10 -15 -20" } "05" { "var_type" "FIELD_INTEGER" "move_speed_pct" "15" } "06" { "var_type" "FIELD_INTEGER" "attack_speed" "10 20 30 40" } } "precache" { "particle" "particles/units/heroes/hero_abaddon/abaddon_frost_slow.vpcf" "particle" "particles/units/heroes/hero_abaddon/abaddon_frost_buff.vpcf" } "Modifiers" { "modifier_frostmourne" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "ModifierName" "modifier_frostmourne_debuff" "Duration" "%debuff_duration" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_frostmourne_buff" "Duration" "%buff_duration" } } } "modifier_frostmourne_debuff" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_abaddon/abaddon_frost_slow.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_pct" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_slow_tooltip" } "OnAttacked" { "ApplyModifier" { "Target" "ATTACKER" "ModifierName" "modifier_frostmourne_buff" "Duration" "%buff_duration" } } } "modifier_frostmourne_buff" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_abaddon/abaddon_frost_buff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_pct" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed" } } } } // Rewrite of Alchemist Acid Spray // Author: Noya // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_alchemist/acid_spray.lua "acid_spray_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "alchemist_acid_spray" "AOERadius" "625" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2" "AbilityCastRange" "900" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "130 140 150 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "625" } "02" { "var_type" "FIELD_FLOAT" "duration" "16.0" } "03" { "var_type" "FIELD_INTEGER" "damage" "15 20 25 30" } "04" { "var_type" "FIELD_INTEGER" "armor_reduction" "-4 -5 -6 -7" } "05" { "var_type" "FIELD_FLOAT" "tick_rate" "1.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" "particle" "particles/units/heroes/hero_alchemist/alchemist_acid_spray.vpcf" } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_acid_spray_thinker" "Target" "POINT" } } "Modifiers" { "modifier_acid_spray_thinker" { "Aura" "modifier_acid_spray" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "Duration" "%duration" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/acid_spray.lua" "Function" "AcidSpraySound" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_alchemist/alchemist_acid_spray.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius 1 1" "15" "25 150 25" "16" "0 0 0" } } } } "modifier_acid_spray" { "IsDebuff" "1" "ThinkInterval" "%tick_rate" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Alchemist.AcidSpray.Damage" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%damage" } } } } } // Rewrite of Alchemist Chemical Rage // Author: Noya // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // Notes: Didn't add the obnoxious "Hero_Alchemist.ChemicalRage" looping sound. // Neither the attack sounds, as they overlap with the original weapon sounds. "chemical_rage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "alchemist_chemical_rage" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 100 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "25.0" } "02" { "var_type" "FIELD_FLOAT" "transformation_time" "0.35" } "03" { "var_type" "FIELD_FLOAT" "base_attack_time" "1.4 1.2 1.0" } "04" { "var_type" "FIELD_INTEGER" "bonus_health" "0" } "05" { "var_type" "FIELD_INTEGER" "bonus_health_regen" "50 75 100" } "06" { "var_type" "FIELD_FLOAT" "bonus_mana_regen" "3.0 7.5 12.0" } "07" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "30 40 60" } } "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" } "ApplyModifier" { "ModifierName" "modifier_chemical_rage_transform" "Target" "CASTER" } } "Modifiers" { "modifier_chemical_rage_transform" { "IsBuff" "1" "IsHidden" "1" "Duration" "%transformation_time" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invulnerable" "Target" "CASTER" "Duration" "0.03" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_chemical_rage" "Target" "CASTER" } } } "modifier_chemical_rage" { "IsBuff" "1" "Duration" "%duration" "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_BASE_ATTACK_TIME_CONSTANT" "%base_attack_time" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%bonus_health_regen" "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT" "%bonus_mana_regen" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_movespeed" } } } } // Rewrite of Alchemist Greevils Greed // Author: Noya // Date: October 13, 2015 // Version: 6.82 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_alchemist/goblins_greed.lua "goblins_greed_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "alchemist_goblins_greed" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "25" } "02" { "var_type" "FIELD_INTEGER" "bonus_gold" "4 6 8 10" } "03" { "var_type" "FIELD_INTEGER" "bonus_bonus_gold" "1 2 3 4" } "04" { "var_type" "FIELD_INTEGER" "bonus_gold_cap" "30" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" "particle" "particles/units/heroes/hero_alchemist/alchemist_lasthit_coins.vpcf" "particle" "particles/units/heroes/hero_alchemist/alchemist_lasthit_msg_gold.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/goblins_greed.lua" "Function" "GoblinsGreedBaseBonus" } } "Modifiers" { "modifier_goblins_greed" { "Passive" "1" "IsHidden" "0" "OnKill" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/goblins_greed.lua" "Function" "GoblinsGreed" } } } } } // Rewrite of Alchemist Unstable Concoction // Author: Noya // Date: October 13, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_alchemist/unstable_concoction.lua // // KV files: // scripts/npc/abilities/alchemist/unstable_concoction_throw_datadriven.txt "unstable_concoction_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "alchemist_unstable_concoction" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "brew_time" "5.0" } "02" { "var_type" "FIELD_FLOAT" "brew_explosion" "5.5" } "03" { "var_type" "FIELD_FLOAT" "min_stun" "0.25" } "04" { "var_type" "FIELD_FLOAT" "max_stun" "1.75 2.5 3.25 4.0" } "05" { "var_type" "FIELD_INTEGER" "min_damage" "0" } "06" { "var_type" "FIELD_INTEGER" "max_damage" "150 220 290 360" } "07" { "var_type" "FIELD_INTEGER" "radius" "175" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" "particle" "particles/units/heroes/hero_alchemist/alchemist_unstable_concoction_timer.vpcf" // This particle isn't used because it would need a separate rule to attach to the hands or weapons for each hero // CP1 and CP2 are left and right hands respectively "particle" "particles/units/heroes/hero_alchemist/alchemist_unstableconc_bottles.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "StartBrewing" "sub_ability_name" "unstable_concoction_throw_datadriven" } "ApplyModifier" { "ModifierName" "modifier_unstable_concoction_brewing" "Target" "CASTER" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "LevelUpAbility" "ability_name" "unstable_concoction_throw_datadriven" } } "Modifiers" { "modifier_unstable_concoction_brewing" { "IsHidden" "1" "Duration" "%brew_explosion" "ThinkInterval" "0.5" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "UpdateTimerParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "CheckSelfStun" "sub_ability_name" "unstable_concoction_throw_datadriven" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } } } } "modifier_unstable_concoction_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" } } } // Rewrite of Alchemist Unstable Concoction Throw (Sub-Ability) // Author: Noya // Date: October 13, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_alchemist/unstable_concoction.lua // // KV files: // scripts/npc/abilities/alchemist/unstable_concoction_datadriven.txt "unstable_concoction_throw_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "alchemist_unstable_concoction_throw" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "775" "AbilityCastPoint" "0.2" "AoERadius" "%midair_explosion_radius" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "brew_time" "5.0" } "02" { "var_type" "FIELD_FLOAT" "min_stun" "0.25" } "03" { "var_type" "FIELD_FLOAT" "max_stun" "1.75 2.5 3.25 4.0" } "04" { "var_type" "FIELD_INTEGER" "min_damage" "0" } "05" { "var_type" "FIELD_INTEGER" "max_damage" "150 220 290 360" } "06" { "var_type" "FIELD_INTEGER" "movement_speed" "900" } "07" { "var_type" "FIELD_INTEGER" "vision_range" "400" } "08" { "var_type" "FIELD_INTEGER" "midair_explosion_radius" "175" } "09" { "var_type" "FIELD_FLOAT" "brew_explosion" "7.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts" "particle" "particles/units/heroes/hero_alchemist/alchemist_unstable_concoction_projectile.vpcf" "particle" "particles/units/heroes/hero_alchemist/alchemist_unstable_concoction_explosion.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_alchemist/alchemist_unstable_concoction_projectile.vpcf" "Dodgeable" "0" "ProvidesVision" "1" "VisionRadius" "%vision_range" "MoveSpeed" "%movement_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Throw" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "EndBrewing" "main_ability_name" "unstable_concoction_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_Alchemist.UnstableConcoction.Stun" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_alchemist/alchemist_unstable_concoction_explosion.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" //This is required for the explosion to actually attach on the projectile hit location "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "ConcoctionHit" "Target" { "Center" "TARGET" "Radius" "%midair_explosion_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_alchemist/unstable_concoction.lua" "Function" "LevelUpAbility" "ability_name" "unstable_concoction_datadriven" } } "Modifiers" { "modifier_unstable_concoction_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" } } } // Rewrite of the Ancient Apparition Chilling Touch ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.83 // Type: Datadriven // NOTE: Cast particle is missing the falling snow // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ancient_apparition/chilling_touch.lua "chilling_touch_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "ancient_apparition_chilling_touch" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ancient_apparition.vsndevts" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_chilling_touch.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_chilling_touch_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800 800 800 800" "AbilityCastPoint" "0.01 0.01 0.01 0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50.0 42.0 34.0 26.0" "AbilityDuration" "30.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 120 130 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "525" } "02" { "var_type" "FIELD_INTEGER" "max_attacks" "3 4 5 6" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "50 60 70 80" } "04" { "var_type" "FIELD_FLOAT" "attack_speed_pct" "-20" } // Extra "05" { "var_type" "FIELD_FLOAT" "duration" "30.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.ChillingTouchCast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_chilling_touch.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "RemoveModifier" { "ModifierName" "modifier_chilling_touch_stack_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_chilling_touch_stack_datadriven" "Target" "TARGET" "Duration" "%duration" } } } "RemoveModifier" { "ModifierName" "modifier_chilling_touch_stack_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_chilling_touch_stack_datadriven" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_chilling_touch_stack_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_chilling_touch_buff.vpcf" "EffectAttachType" "attach_attack1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/chilling_touch.lua" "Function" "ChillingTouchInitialize" "modifier_stack" "modifier_chilling_touch_stack_datadriven" } "ApplyModifier" { "ModifierName" "modifier_chilling_touch_attack_speed_datadriven" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_chilling_touch_attack_speed_datadriven" "Target" "TARGET" } } "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/chilling_touch.lua" "Function" "ChillingTouchDecrement" "modifier_stack" "modifier_chilling_touch_stack_datadriven" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%bonus_damage" } } } "modifier_chilling_touch_attack_speed_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_pct" } } } } // Rewrite of the Ancient Apparition Cold Feet ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ancient_apparition/cold_feet.lua "cold_feet_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ancient_apparition_cold_feet" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ancient_apparition.vsndevts" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet_frozen.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet_marker.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700 800 900 1000" "AbilityCastPoint" "0.01 0.01 0.01 0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 13.0 11.0 9.0" "AbilityDuration" "4.0 4.0 4.0 4.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 150 150 150" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Does two modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage" "37.5 50 62.5 75" } "02" { "var_type" "FIELD_INTEGER" "break_distance" "740 740 740 740" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "1.25 2.0 2.75 3.5" } // Extra "04" { "var_type" "FIELD_FLOAT" "damage_interval" "0.8" } "05" { "var_type" "FIELD_FLOAT" "leash_interval" "0.1" } "06" { "var_type" "FIELD_FLOAT" "duration" "4.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.ColdFeetCast" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_cold_feet_debuff_datadriven" "Target" "TARGET" "Duration" "%duration" } "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/cold_feet.lua" "Function" "ColdFeetInitializeCaster" } "CreateThinker" { "ModifierName" "modifier_cold_feet_thinker_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_cold_feet_thinker_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet_marker.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/cold_feet.lua" "Function" "ColdFeetInitializeThinker" } } "ThinkInterval" "%leash_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/cold_feet.lua" "Function" "ColdFeetLeashCheck" "modifier" "modifier_cold_feet_debuff_datadriven" } } } "modifier_cold_feet_damage_datadriven" { "IsHidden" "1" "ThinkInterval" "%damage_interval" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.ColdFeetTick" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } "modifier_cold_feet_debuff_datadriven" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_cold_feet_damage_datadriven" "Target" "TARGET" "Duration" "%duration" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_cold_feet_damage_datadriven" "Target" "TARGET" } } "ThinkInterval" "%duration" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_cold_feet_stun_datadriven" "Target" "TARGET" "Duration" "%stun_duration" } } } "modifier_cold_feet_stun_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_cold_feet_frozen.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.ColdFeetFreeze" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Ancient Apparition Ice Blast ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // NOTE: Tracer projectile is teal instead of blue // NOTE2: Hail particles arent working so there is no marker particle and the original tracer projectile // is used as the hail projectile instead // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ancient_apparition/ice_blast.lua // // KV files: // scripts/npc/abilities/ancient_apparition/ice_blast_release_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "ice_blast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "ancient_apparition_ice_blast" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ancient_apparition.vsndevts" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_initial.vpcf" // Start projectile //"particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_final.vpcf" // End projectile "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_explode.vpcf" //"particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_debuff.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_death.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_sphere_b.vpcf" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_initial_grid.vpcf" //"particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_main.vpcf" //"particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_marker.vpcf" //"particle" "particles/status_fx/status_effect_iceblast_half.vpcf" "particle" "particles/status_fx/status_effect_iceblast.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.01 0.01 0.01" "AbilityCastRange" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 125 150" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "250 350 450" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius_min" "275 275 275" } "02" { "var_type" "FIELD_FLOAT" "radius_grow" "50.0 50.0 50.0" } "03" { "var_type" "FIELD_INTEGER" "radius_max" "1000 1000 1000" } "04" { "var_type" "FIELD_INTEGER" "path_radius" "275 275 275" } "05" { "var_type" "FIELD_FLOAT" "frostbite_duration" "8.0 9.0 10.0" } "06" { "var_type" "FIELD_FLOAT" "dot_damage" "12.5 20.0 32.0" } "07" { "var_type" "FIELD_INTEGER" "speed" "1500 1500 1500 1500" } "08" { "var_type" "FIELD_FLOAT" "kill_pct" "10.0 11.0 12.0" } "09" { "var_type" "FIELD_INTEGER" "target_sight_radius" "500 500 500" } "10" { "var_type" "FIELD_FLOAT" "frostbite_duration_scepter" "17" } // Extra "11" { "var_type" "FIELD_FLOAT" "min_time" "2" } "12" { "var_type" "FIELD_FLOAT" "base_speed" "750" // This is the actual projectile, not the tracer } "13" { "var_type" "FIELD_FLOAT" "travel_vision" "500" } "14" { "var_type" "FIELD_FLOAT" "travel_vision_duration" "3.0" } "15" { "var_type" "FIELD_FLOAT" "area_vision" "650" } "16" { "var_type" "FIELD_FLOAT" "area_vision_duration" "4.0" } "17" { "var_type" "FIELD_FLOAT" "think_interval" "1.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.IceBlast.Tracker" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_blast.lua" "Function" "ice_blast_launch" "Target" "POINT" "projectile_particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_initial.vpcf" "tracer_modifier" "modifier_dummy_tracer" "tracer_sphere" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_sphere_b.vpcf" "tracer_grid" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_initial_grid.vpcf" "main_ability_name" "ice_blast_datadriven" "sub_ability_name" "ice_blast_release_datadriven" } } "OnUpgrade" { "LevelUpAbility" { "Target" "CASTER" "AbilityName" "ice_blast_release_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "ModifierName" "modifier_ice_blast_debuff_datadriven" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%frostbite_duration" } } "OnProjectileFinish" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_blast.lua" "Function" "ice_blast_explode" "modifier" "modifier_ice_blast_debuff_datadriven" "sound" "Hero_Ancient_Apparition.IceBlast.Target" "explosion_particle" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_explode.vpcf" } } "Modifiers" { "modifier_dummy_tracer" { "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_initial_grid.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_sphere_b.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" "TARGET" "follow_origin" } } } "States" { "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_BONUS_DAY_VISION" "%target_sight_radius" "MODIFIER_PROPERTY_BONUS_NIGHT_VISION" "%target_sight_radius" } } "modifier_ice_blast_debuff_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "StatusEffectName" "particles/status_fx/status_effect_iceblast.vpcf" "StatusEffectPriority" "10" "ThinkInterval" "%think_interval" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.IceBlastRelease.Tick" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%dot_damage" } } "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_blast.lua" "Function" "ice_blast_frostbite" } } "OnDeath" { "FireEffect" { "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_death.vpcf" "EffectAttachType" "follow_origin" "Target" "UNIT" } } "Properties" { "MODIFIER_PROPERTY_DISABLE_HEALING" "1" } } } } // Rewrite of the Ancient Apparition Ice Blast Release ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ancient_apparition/ice_blast.lua // // KV files: // scripts/npc/abilities/ancient_apparition/ice_blast_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "ice_blast_release_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "MaxLevel" "1" "AbilityTextureName" "ancient_apparition_ice_blast_release" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.0 1.0 1.0" "OnSpellStart" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.IceBlastRelease.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_blast.lua" "Function" "ice_blast_release" } } "Modifiers" { "modifier_ice_blast_release_datadriven" { "Passive" "1" "IsHidden" "1" "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_blast.lua" "Function" "ice_blast_release" } } } } } // Rewrite of the Ancient Apparition Ice Vortex ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ancient_apparition/ice_vortex.lua "ice_vortex_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "ancient_apparition_ice_vortex" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ancient_apparition.vsndevts" "particle" "particles/units/heroes/hero_ancient_apparition/ancient_ice_vortex.vpcf" "particle" "particles/status_fx/status_effect_frost_armor.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500 1500 1500 1500" "AbilityCastPoint" "0.01 0.01 0.01 0.01" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "4.0" "AbilityDuration" "16" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275 275 275 275" } "02" { "var_type" "FIELD_INTEGER" "movement_speed_pct" "-15 -20 -25 -30" } "03" { "var_type" "FIELD_INTEGER" "spell_resist_pct" "-15 -20 -25 -30" } "04" { "var_type" "FIELD_INTEGER" "vision_aoe" "200 200 200 200" } // Extra "05" { "var_type" "FIELD_FLOAT" "duration" "16" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.IceVortexCast" "Target" "CASTER" } "CreateThinker" { "ModifierName" "modifier_ice_vortex_thinker_datadriven" "Target" "POINT" } "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_vortex.lua" "Function" "IceVortexVision" "Target" "POINT" } } "Modifiers" { "modifier_ice_vortex_thinker_datadriven" { "Duration" "%duration" "Aura" "modifier_ice_vortex_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "OnCreated" { "FireSound" { "EffectName" "Hero_Ancient_Apparition.IceVortex" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_ancient_apparition/ancient_ice_vortex.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" "ControlPoints" { "01" "%radius 0 0" "05" "%radius 0 0" } } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_ancient_apparition/ice_vortex.lua" "Function" "IceVortexStopSound" "sound" "Hero_Ancient_Apparition.IceVortex" } } } "modifier_ice_vortex_datadriven" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_frost_armor.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%spell_resist_pct" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_speed_pct" } } } } // Rewrite of the Antimage Blink ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_antimage/blink.lua "blink_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityTextureName" "antimage_blink" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" "particle" "particles/units/heroes/hero_antimage/antimage_blink_end.vpcf" "particle" "particles/units/heroes/hero_antimage/antimage_blink_start.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 9.0 7.0 5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 60 60 60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "blink_range" "925 1000 1075 1150" } "02" { "var_type" "FIELD_INTEGER" "min_blink_range" "200" } } "OnSpellStart" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_antimage/blink.lua" "Function" "Blink" "Target" "POINT" } "FireSound" { "EffectName" "Hero_Antimage.Blink_out" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Antimage.Blink_in" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_antimage/antimage_blink_end.vpcf" "Target" "CASTER" "EffectAttachType" "follow_origin" } } } // Rewrite of the Antimage Mana Break ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_antimage/mana_break.lua "mana_break_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "antimage_mana_break" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_manaburn.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_burn" "0.6" } "02" { "var_type" "FIELD_INTEGER" "mana_per_hit" "28 40 52 64" } } "Modifiers" { "modifier_mana_break_orb_datadriven" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" } "OnOrbImpact" { "FireSound" { "EffectName" "Hero_Antimage.ManaBreak" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MANA_ONLY" } } "FireEffect" { "EffectName" "particles/generic_gameplay/generic_manaburn.vpcf" "EffectAttachType" "attach_hitloc" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MANA_ONLY" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_antimage/mana_break.lua" "Function" "ManaBreak" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MANA_ONLY" } } } } } } // Rewrite of the Antimage Mana Void ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_antimage/mana_void.lua "mana_void_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "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" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "antimage_mana_void" "AOERadius" "%mana_void_aoe_radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_antimage/antimage_manavoid.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "70.0 70.0 70.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 200 275" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // damage only // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_void_damage_per_mana" "0.6 0.85 1.1" } "02" { "var_type" "FIELD_FLOAT" "mana_void_ministun" "0.15" } "03" { "var_type" "FIELD_INTEGER" "mana_void_aoe_radius" "500" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_Antimage.ManaVoidCast" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Antimage.ManaVoid" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_antimage/antimage_manavoid.vpcf" "EffectAttachType" "attach_hitloc" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "ControlPoints" { "00" "0 0 0" "01" "%mana_void_aoe_radius 0 0" } } "ApplyModifier" { "ModifierName" "modifier_mana_void_ministun_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Duration" "%mana_void_ministun" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_antimage/mana_void.lua" "Function" "ManaVoid" "Target" "TARGET" } } "Modifiers" { "modifier_mana_void_ministun_datadriven" { "IsDebuff" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Remwrite of the Antimage Spellshield ability // Author: Pizzalol // Date: October 13, 2015 // Version: 6.85 // Type: Datadriven "spell_shield_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "antimage_spell_shield" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "spell_shield_resistance" "26 34 42 50" } } "Modifiers" { "modifier_spell_shield_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%spell_shield_resistance" } } } } // Rewrite of the Axe Battle Hunger ability // Author: Pizzalol // Date: October 14, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_axe/battle_hunger.lua "battle_hunger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "axe_battle_hunger" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_axe.vsndevts" "particle" "particles/units/heroes/hero_axe/axe_battle_hunger.vpcf" "particle" "particles/status_fx/status_effect_battle_hunger.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 15.0 10.0 5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "16 24 32 40" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "10.0" } "02" { "var_type" "FIELD_INTEGER" "slow" "-12" } "03" { "var_type" "FIELD_INTEGER" "speed_bonus" "12" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Axe.Battle_Hunger" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_battle_hunger_enemy_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_battle_hunger_caster_datadriven" { "IsBuff" "1" "IsPurgable" "0" } "modifier_battle_hunger_caster_speed_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%speed_bonus" } } "modifier_battle_hunger_enemy_datadriven" { "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_battle_hunger.vpcf" "StatusEffectPriority" "9" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_axe/axe_battle_hunger.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_axe/battle_hunger.lua" "Function" "BattleHungerStart" "caster_modifier" "modifier_battle_hunger_caster_datadriven" "speed_modifier" "modifier_battle_hunger_caster_speed_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_axe/battle_hunger.lua" "Function" "BattleHungerEnd" "caster_modifier" "modifier_battle_hunger_caster_datadriven" "speed_modifier" "modifier_battle_hunger_caster_speed_datadriven" } } "OnKill" { "RunScript" { "ScriptFile" "heroes/hero_axe/battle_hunger.lua" "Function" "BattleHungerKill" "modifier" "modifier_battle_hunger_enemy_datadriven" } } } } } // Rewrite of the Axe Berserkers Call ability // Author: Pizzalol // Date: October 14, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_axe/berserkers_call.lua "berserkers_call_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "axe_berserkers_call" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_axe.vsndevts" "particle" "particles/units/heroes/hero_axe/axe_beserkers_call_owner.vpcf" "particle" "particles/status_fx/status_effect_beserkers_call.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16 14 12 10" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "300" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "40" } "03" { "var_type" "FIELD_FLOAT" "duration" "2.0 2.4 2.8 3.2" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Axe.Berserkers_Call" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_berserkers_call_caster_datadriven" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_berserkers_call_caster_datadriven" "Target" "CASTER" "Duration" "%duration" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "Action" { "ApplyModifier" { "ModifierName" "modifier_beserkers_call_enemy_datadriven" "Target" "TARGET" "Duration" "%duration" } } } } "Modifiers" { "modifier_berserkers_call_caster_datadriven" { "IsPurgable" "0" "IsBuff" "1" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_axe/axe_beserkers_call_owner.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "02" "%radius 1 1" //Required for Rampant Outrage (axe immortal) } "ControlPointEntities" { "CASTER" "follow_origin" "CASTER" "follow_origin" "CASTER" "follow_origin" } } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" } } "modifier_beserkers_call_enemy_datadriven" { "IsPurgable" "0" "IsDebuff" "1" "StatusEffectName" "particles/status_fx/status_effect_beserkers_call.vpcf" "StatusEffectPriority" "10" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_axe/berserkers_call.lua" "Function" "BerserkersCall" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_axe/berserkers_call.lua" "Function" "BerserkersCallEnd" } } } } } // Rewrite of the Axe Counter Helix ability // Author: Pizzalol // Date: October 14, 2015 // Version: 6.83c // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_axe/counter_helix.lua "counter_helix_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "axe_counter_helix" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_axe.vsndevts" "particle" "particles/units/heroes/hero_axe/axe_attack_blur_counterhelix.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.45 0.4 0.35 0.3" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 135 170 205" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "275" } "02" { "var_type" "FIELD_INTEGER" "trigger_chance" "20" } "03" { "var_type" "FIELD_FLOAT" "cooldown" "0.45 0.4 0.35 0.3" } // Extra "04" { "var_type" "FIELD_FLOAT" "trigger_radius" "1000" } } "Modifiers" { "modifier_counter_helix_aura_datadriven" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_counter_helix_enemy_datadriven" "Aura_Radius" "%trigger_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "modifier_counter_helix_enemy_datadriven" { "IsHidden" "1" "OnAttackStart" { "Random" { "Chance" "%trigger_chance" "PseudoRandom" "DOTA_PSEUDO_RANDOM_JUGG_CRIT" "OnSuccess" { "RunScript" { "ScriptFile" "heroes/hero_axe/counter_helix.lua" "Function" "CounterHelix" "helix_modifier" "modifier_counter_helix_datadriven" } } } } } "modifier_counter_helix_datadriven" { "Duration" "%cooldown" "IsHidden" "1" "EffectName" "particles/units/heroes/hero_axe/axe_attack_blur_counterhelix.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Axe.CounterHelix" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" } } } "ApplyModifier" { "ModifierName" "modifier_counter_helix_rotate_datadriven" "Target" "CASTER" "Duration" "0.15" } } } "modifier_counter_helix_rotate_datadriven" { "IsHidden" "1" "ThinkInterval" "0.03" "OnIntervalThink" { "Rotate" { "Target" "CASTER" "PitchYawRoll" "0 72 0" } } } } } // Rewrite of the Axe Culling Blade ability // Author: Pizzalol // Date: October 14, 2015 // Version: 6.85 // Type: Datadriven // NOTE: You need to specify the modifiers that need to be removed (only if they cant be purged) // which would otherwise prevent death in the culling_blade.lua file // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_axe/culling_blade.lua "culling_blade_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "axe_culling_blade" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_axe.vsndevts" "particle" "particles/units/heroes/hero_axe/axe_culling_blade.vpcf" "particle" "particles/units/heroes/hero_axe/axe_culling_blade_boost.vpcf" "particle" "particles/units/heroes/hero_axe/axe_culling_blade_kill.vpcf" "particle" "particles/units/heroes/hero_axe/axe_cullingblade_sprint.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "75.0 65.0 55.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 120 180" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "kill_threshold" "250 325 400" } "02" { "var_type" "FIELD_INTEGER" "damage" "150 250 300" } "03" { "var_type" "FIELD_INTEGER" "speed_bonus" "30" } "04" { "var_type" "FIELD_FLOAT" "speed_duration" "6" } "05" { "var_type" "FIELD_INTEGER" "speed_aoe" "900" } "06" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "6.0 6.0 6.0" } "07" { "var_type" "FIELD_INTEGER" "kill_threshold_scepter" "300 450 625" } "08" { "var_type" "FIELD_FLOAT" "speed_duration_scepter" "10" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_axe/axe_culling_blade.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_axe/culling_blade.lua" "Function" "CullingBlade" "sound_fail" "Hero_Axe.Culling_Blade_Fail" "sound_success" "Hero_Axe.Culling_Blade_Success" "particle_kill" "particles/units/heroes/hero_axe/axe_culling_blade_kill.vpcf" "modifier_sprint" "modifier_culling_blade_sprint_datadriven" } } "Modifiers" { "modifier_culling_blade_sprint_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_axe/axe_cullingblade_sprint.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_axe/axe_culling_blade_boost.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "follow_origin" "TARGET" "follow_origin" } } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%speed_bonus" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%speed_bonus" } } } } // Rewrite of the Bane Brain Sap // Author: chrislotix // Date: October 22, 2015 // Version: 6.85 // Type: Datadriven "brain_sap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "bane_brain_sap" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" "particle" "particles/units/heroes/hero_bane/bane_enfeeble.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityCastRange" "600" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0 14.0 14.0 14.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "90 160 230 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 100 130 160" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "tooltip_brain_sap_heal_amt" "90 160 230 300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bane.BrainSap.Target" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Bane.BrainSap" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bane/bane_sap.vpcf" "EffectAttachType" "follow_origin" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "follow_origin" } } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%tooltip_brain_sap_heal_amt" } "Heal" { "Target" "CASTER" "HealAmount" "%tooltip_brain_sap_heal_amt" } } } // Rewrite of the Bane Enfeeble // Author: chrislotix // Date: October 22, 2015 // Version: 6.85 // Type: Datadriven "enfeeble_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "bane_enfeeble" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" "particle" "particles/units/heroes/hero_bane/bane_enfeeble.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityCastAnimation" "ACT_DOTA_ENFEEBLE" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0" "AbilityDuration" "20.0 20.0 20.0 20.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 105 115 125" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "enfeeble_attack_reduction" "-30 -60 -90 -120" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bane.Enfeeble.Cast" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Bane.Enfeeble" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_enfeeble_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_enfeeble_datadriven" { "IsDebuff" "1" "Duration" "%AbilityDuration" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_bane/bane_enfeeble.vpcf" "EffectAttachType" "follow_overhead" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%enfeeble_attack_reduction" } } } } // Rewrite of the Bane Fiends Grip // Author: chrislotix, Pizzalol // Date: October 22, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bane/fiends_grip.lua "fiends_grip_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "bane_fiends_grip" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" "particle" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "625" "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityChannelTime" "5.0 5.0 5.0" "AbilityCooldown" "100.0 100.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 300 400" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fiend_grip_tick_interval" "1.0" } "02" { "var_type" "FIELD_INTEGER" "fiend_grip_mana_drain" "5" } "03" { "var_type" "FIELD_FLOAT" "fiend_grip_duration" "5.0 5.0 5.0" } "04" { "var_type" "FIELD_INTEGER" "fiend_grip_damage" "100 155 215" } "05" { "var_type" "FIELD_INTEGER" "fiend_grip_mana_drain_scepter" "10" } "06" { "var_type" "FIELD_FLOAT" "fiend_grip_duration_scepter" "7" } "07" { "var_type" "FIELD_INTEGER" "fiend_grip_damage_scepter" "155 215 270" } } "OnSpellStart" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%fiend_grip_damage" } "FireSound" { "EffectName" "Hero_Bane.FiendsGrip.Cast" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "ApplyModifier" { "ModifierName" "modifier_fiends_grip_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "ApplyModifier" { "ModifierName" "modifier_fiends_grip_caster_datadriven" "Target" "CASTER" } } "OnChannelInterrupted" { "RemoveModifier" { "ModifierName" "modifier_fiends_grip_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "RemoveModifier" { "ModifierName" "modifier_fiends_grip_invis_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "RemoveModifier" { "ModifierName" "modifier_fiends_grip_caster_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_bane/fiends_grip.lua" "Function" "FiendsGripStopSound" "sound" "Hero_Bane.FiendsGrip" } "RunScript" { "ScriptFile" "heroes/hero_bane/fiends_grip.lua" "Function" "FiendsGripStopSound" "sound" "Hero_Bane.FiendsGrip.Cast" } } "OnChannelFinish" { "RemoveModifier" { "ModifierName" "modifier_fiends_grip_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "RemoveModifier" { "ModifierName" "modifier_fiends_grip_invis_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "RemoveModifier" { "ModifierName" "modifier_fiends_grip_caster_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_bane/fiends_grip.lua" "Function" "FiendsGripStopSound" "sound" "Hero_Bane.FiendsGrip" } "RunScript" { "ScriptFile" "heroes/hero_bane/fiends_grip.lua" "Function" "FiendsGripStopSound" "sound" "Hero_Bane.FiendsGrip.Cast" } } "Modifiers" { "modifier_fiends_grip_datadriven" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_bane/bane_fiends_grip.vpcf" "EffectAttachType" "attach_origin" "OverrideAnimation" "ACT_DOTA_FLAIL" "OnCreated" { "FireSound" { "EffectName" "Hero_Bane.FiendsGrip" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_bane/fiends_grip.lua" "Function" "FiendsGripInvisCheck" "modifier_reveal" "modifier_fiend_grip_invis_datadriven" } } "ThinkInterval" "%fiend_grip_tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/fiends_grip.lua" "Function" "ManaDrain" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%fiend_grip_damage" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fiends_grip_caster_datadriven" { "IsHidden" "1" "States" { "MODIFIER_STATE_LOW_ATTACK_PRIORITY" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_fiend_grip_invis_datadriven" { "IsHidden" "1" "States" { "MODIFIER_STATE_INVISIBILITY" "MODIFIER_STATE_VALUE_DISABLED" } } } } // Rewrite of the Bane Nightmare ability // Author: Pizzalol, chrislotix // Date: October 22, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bane/nightmare.lua // // KV files: // scripts/npc/abilities/bane/nightmare_end_datadriven.txt "nightmare_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityTextureName" "bane_nightmare" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bane.vsndevts" "particle" "particles/units/heroes/hero_bane/bane_nightmare.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500 550 600 650" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityDuration" "4.0 5.0 6.0 7.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "20 20 20 20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "165 165 165 165" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Applies two modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "nightmare_dot_interval" "1.0" } "02" { "var_type" "FIELD_FLOAT" "nightmare_invuln_time" "1.0" } "03" { "var_type" "FIELD_FLOAT" "duration" "4.0 5.0 6.0 7.0" } "04" { "var_type" "FIELD_FLOAT" "animation_rate" "0.2" } "05" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "500 550 600 650" } "06" //extra variable { "var_type" "FIELD_INTEGER" "aura_radius" "1000" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bane.Nightmare" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_nightmare_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_nightmare_datadriven" { "Duration" "%duration" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_bane/bane_nightmare.vpcf" "EffectAttachType" "follow_overhead" "OverrideAnimation" "ACT_DOTA_FLAIL" //"OverrideAnimationRate" "%animation_rate" "OnTakeDamage" { "RemoveModifier" { "ModifierName" "modifier_nightmare_datadriven" "Target" "UNIT" } } "OnCreated" { "FireSound" { "EffectName" "Hero_Bane.Nightmare.Loop" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_nightmare_damage_datadriven" "Target" "TARGET" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_nightmare_invul_datadriven" "Target" "TARGET" "Duration" "%nightmare_invuln_time" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareCasterCheck" "main_ability_name" "nightmare_datadriven" "sub_ability_name" "nightmare_end_datadriven" "check_ability" "nightmare_datadriven" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Bane.Nightmare.End" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "RemoveModifier" { "ModifierName" "modifier_nightmare_damage_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareStopSound" "sound" "Hero_Bane.Nightmare.Loop" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareCasterCheck" "sub_ability_name" "nightmare_datadriven" "main_ability_name" "nightmare_end_datadriven" "check_ability" "nightmare_datadriven" } } "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareAura" "modifier" "modifier_nightmare_debuff_datadriven" } } "States" { "MODIFIER_STATE_NIGHTMARED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_SPECIALLY_DENIABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_LOW_ATTACK_PRIORITY" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_nightmare_damage_datadriven" { "IsHidden" "1" "ThinkInterval" "%nightmare_dot_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareDamage" } } } "modifier_nightmare_debuff_datadriven" { "IsHidden" "1" "IsDebuff" "1" "OnAttackStart" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareBreak" "nightmare_modifier" "modifier_nightmare_datadriven" } } } "modifier_nightmare_invul_datadriven" { "IsDebuff" "1" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Bane Nightmare End Sub-ability // Author: Pizzalol // Date: October 22, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bane/nightmare.lua // // KV files: // scripts/npc/abilities/bane/nightmare_datadriven.txt "nightmare_end_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_PSEUDO_QUEUE" "MaxLevel" "1" "AbilityTextureName" "bane_nightmare_end" "OnToggleOn" { "RemoveModifier" { "ModifierName" "modifier_nightmare_datadriven" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "RemoveModifier" { "ModifierName" "modifier_nightmare_invul_datadriven" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bane/nightmare.lua" "Function" "NightmareCasterEnd" } } } // Rewrite of Beastmaster Call of the Wild Boar // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_beastmaster/call_of_the_wild.lua // // KV files: // scripts/npc/abilities/beastmaster/call_of_the_wild_hawk_datadriven.txt "call_of_the_wild_boar_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityTextureName" "beastmaster_call_of_the_wild_boar" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0 40.0 40.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hawk_duration" "60 60 60 60" } "02" { "var_type" "FIELD_INTEGER" "boar_hp_tooltip" "200 300 400 500" } "03" { "var_type" "FIELD_INTEGER" "boar_damage_tooltip" "15 30 45 60" } "04" { "var_type" "FIELD_INTEGER" "boar_moveslow_tooltip" "10 20 30 40" } "05" { "var_type" "FIELD_INTEGER" "boar_attackslow_tooltip" "10 20 30 40" } "06" { "var_type" "FIELD_INTEGER" "poison_duration_tooltip" "3" } "07" { "var_type" "FIELD_INTEGER" "boar_duration" "60 60 60 60" } // Extra "08" { "var_type" "FIELD_INTEGER" "boar_1_count" "1 0 0 0" } "09" { "var_type" "FIELD_INTEGER" "boar_2_count" "0 1 0 0" } "10" { "var_type" "FIELD_INTEGER" "boar_3_count" "0 0 1 0" } "11" { "var_type" "FIELD_INTEGER" "boar_4_count" "0 0 0 1" } "12" { "var_type" "FIELD_INTEGER" "distance" "150" // The distance in front of the target at which units will be created } } "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" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "LevelUpAbility" "ability_name" "call_of_the_wild_hawk_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Boar" "Target" "CASTER" } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_boar_1" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%boar_1_count" "Duration" "%boar_duration" "GrantsGold" "1" "GrantsXP" "1" // This makes sure units never get stuck "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_boar" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_boar_4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%boar_2_count" "Duration" "%boar_duration" "GrantsGold" "1" "GrantsXP" "1" // This makes sure units never get stuck "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_boar" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_boar_3" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%boar_1_count" "Duration" "%boar_duration" "GrantsGold" "1" "GrantsXP" "1" // This makes sure units never get stuck "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_boar" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_boar_4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%boar_4_count" "Duration" "%boar_duration" "GrantsGold" "1" "GrantsXP" "1" // This makes sure units never get stuck "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_boar" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } } "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" } } } } } // Rewrite of Beastmaster Call of the Wild // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_beastmaster/call_of_the_wild.lua // // KV files: // scripts/npc/abilities/beastmaster/call_of_the_wild_boar_datadriven.txt "call_of_the_wild_hawk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityTextureName" "beastmaster_call_of_the_wild_hawk" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "15" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "boar_duration" "60 60 60 60" } "02" { "var_type" "FIELD_INTEGER" "hawk_hp_tooltip" "40 60 80 100" } "03" { "var_type" "FIELD_INTEGER" "hawk_speed_tooltip" "250 300 350 400" } "04" { "var_type" "FIELD_INTEGER" "hawk_daysight_tooltip" "700 1000 1300 1600" } "05" { "var_type" "FIELD_INTEGER" "hawk_nightsight_tooltip" "700 800 900 1000" } "06" { "var_type" "FIELD_INTEGER" "hawk_duration" "60 60 60 60" } // Extra "07" { "var_type" "FIELD_INTEGER" "hawk_1_count" "1 0 0 0" } "08" { "var_type" "FIELD_INTEGER" "hawk_2_count" "0 1 0 0" } "09" { "var_type" "FIELD_INTEGER" "hawk_3_count" "0 0 1 0" } "10" { "var_type" "FIELD_INTEGER" "hawk_4_count" "0 0 0 1" } "11" { "var_type" "FIELD_INTEGER" "distance" "150" // The distance in front of the target at which units will be created } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "LevelUpAbility" "ability_name" "call_of_the_wild_boar_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Call.Hawk" "Target" "CASTER" } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_hawk_1" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%hawk_1_count" "Duration" "%hawk_duration" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_hawk" "Target" "TARGET" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_hawk_2" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%hawk_2_count" "Duration" "%hawk_duration" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_hawk" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_hawk_4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%hawk_3_count" "Duration" "%hawk_duration" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_hawk" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } "SpawnUnit" { "UnitName" "npc_dota_beastmaster_hawk_4" "Target" { "Center" "CASTER" "ScriptSelectPoints" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "GetFrontPoint" "Target" "CASTER" "Distance" "%distance" } } "UnitCount" "%hawk_4_count" "Duration" "%hawk_duration" "GrantsGold" "1" "GrantsXP" "1" "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } "ApplyModifier" { "ModifierName" "modifier_beastmaster_hawk" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_beastmaster/call_of_the_wild.lua" "Function" "SetUnitsMoveForward" } } } } "Modifiers" { "modifier_beastmaster_hawk" { "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" } } } } } // Rewrite of Beastmaster Inner Beast // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "inner_beast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityTextureName" "beastmaster_inner_beast" // Casting "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "15 25 35 45" } } "Modifiers" { "modifier_inner_beast" { "Passive" "1" "IsHidden" "1" "Aura" "modifier_inner_beast_buff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" //mechanical? "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ALLIES" //Needed? } "modifier_inner_beast_buff" { "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed" } } } } // Rewrite of Beastmaster Primal Roar // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "primal_roar_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "beastmaster_primal_roar" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0 75.0 70.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 175 200" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.6" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.5 4.0" } "02" { "var_type" "FIELD_INTEGER" "damage" "200 250 300" } "03" { "var_type" "FIELD_INTEGER" "side_damage" "200 250 300" } "04" { "var_type" "FIELD_INTEGER" "damage_radius" "300" } "05" { "var_type" "FIELD_INTEGER" "slow_movement_speed_pct" "-50 -50 -50" } "06" { "var_type" "FIELD_INTEGER" "slow_attack_speed_pct" "-50 -50 -50" } "07" { "var_type" "FIELD_INTEGER" "push_distance" "300" } "08" { "var_type" "FIELD_FLOAT" "push_duration" "0.6" } "09" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0 3.0 4.0" } "10" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "950 950 950" } "11" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "45.0 45.0 45.0" } // Extra "12" { "var_type" "FIELD_INTEGER" "cast_range" "600" } } "precache" { "particle" "particles/units/heroes/hero_beastmaster/beastmaster_primal_roar.vpcf" "particle" "particles/units/heroes/hero_beastmaster/beastmaster_primal_target.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Beastmaster.Primal_Roar" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_beastmaster/beastmaster_primal_roar.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "TARGET" "ControlPointEntities" { "CASTER" "attach_cast4_primal_roar" "TARGET" "attach_hitloc" } } "ApplyModifier" { "ModifierName" "modifier_primal_roar_stun" "Target" "TARGET" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_primal_roar_slow" "Target" "TARGET" "Duration" "%slow_duration" } "ActOnTargets" { "Target" { "Center" "TARGET" "Line" { "Length" "%cast_range" "Thickness" "%damage_radius" } "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } // Causes the primary target to be knocked back as well "Action" { "Knockback" { "Target" "TARGET" "Center" "UNIT" "Distance" "%push_distance" "Duration" "%push_duration" "Height" "0" "IsFixedDistance" "0" "ShouldStun" "0" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "ApplyModifier" { "ModifierName" "modifier_primal_roar_slow" "Target" "TARGET" "Duration" "%slow_duration" } } } } "Modifiers" { "modifier_primal_roar_stun" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_primal_roar_slow" { "IsDebuff" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed_pct" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed_pct" } } } } // Rewrite of the Bloodseeker Bloodrage ability // Author: YOLOSPAGHETTI // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bloodseeker/bloodrage.lua "bloodrage_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "bloodseeker_bloodrage" "precache" { "particle" "particles/units/heroes/hero_bloodseeker/bloodseeker_bloodrage.vpcf" "soundfile" "sounds/weapons/hero/bloodseeker/rage.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12 10 8 6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "9 10 11 12" } "02" { "var_type" "FIELD_INTEGER" "damage_increase_pct" "25 30 35 40" } "03" { "var_type" "FIELD_INTEGER" "health_bonus_pct" "19 21 23 25" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_blood_rage_datadriven" "Target" "TARGET" } "FireSound" { "Target" "TARGET" "EffectName" "Hero_Bloodseeker.Rage" } } "Modifiers" { "modifier_blood_rage_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_bloodrage.vpcf" "EffectAttachType" "attach_origin" "OnKill" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/bloodrage.lua" "Function" "HealKiller" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/bloodrage.lua" "Function" "HealKiller" } } "Properties" { "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "%damage_increase_pct" "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%damage_increase_pct" } } } } // Rewrite of the Bloodseeker Blood Rite ability // Author: YOLOSPAGHETTI // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bloodseeker/blood_rite.lua "blood_rite_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "bloodseeker_blood_bath" // Prechache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_bloodseeker/bloodseeker_bloodritual_ring_lv.vpcf" "soundfile" "sounds/weapons/hero/bloodseeker/blood_rite.vsnd" "soundfile" "sounds/weapons/hero/bloodseeker/blood_rite_cast.vsnd" "soundfile" "sounds/weapons/hero/bloodseeker/blood_rite_silence.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.4" "AoERadius" "600" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30 25 20 15" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "600" } "02" { "var_type" "FIELD_FLOAT" "silence_duration" "3 4 5 6" } "03" { "var_type" "FIELD_INTEGER" "damage" "120 160 200 240" } "04" { "var_type" "FIELD_FLOAT" "delay" "2.6" } "05" { "var_type" "FIELD_FLOAT" "delay_plus_castpoint_tooltip" "3.0" } "06" { "var_type" "FIELD_INTEGER" "flying_vision" "400" } "06" { "var_type" "FIELD_FLOAT" "vision_duration" "6.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bloodseeker.BloodRite.Cast" "Target" "TARGET" } "CreateThinker" { "ModifierName" "modifier_blood_rite_delay" "Target" "POINT" } "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/blood_rite.lua" "Function" "GiveVision" } } "Modifiers" { "modifier_blood_rite_delay" { "Duration" "%delay" "OnCreated" { "FireSound" { "EffectName" "hero_bloodseeker.bloodRite" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_bloodritual_ring_lv.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" } } } "OnDestroy" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" } "Action" { "FireSound" { "EffectName" "hero_bloodseeker.bloodRite.silence" "Target" "TARGET" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_silence" "Duration" "%silence_duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%damage" } } } } } } } // Rewrite of the Bloodseeker Rupture ability // Author: YOLOSPAGHETTI // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bloodseeker/rupture.lua "rupture_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "FightRecapLevel" "2" "AbilityTextureName" "bloodseeker_rupture" "precache" { "particle" "particles/units/heroes/hero_bloodseeker/bloodseeker_rupture.vpcf" "soundfile" "sounds/weapons/hero/bloodseeker/rupture.vsnd" "soundfile" "sounds/weapons/hero/bloodseeker/rupture_cast.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.6" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 200 250" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Only does damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "12.0" } "02" { "var_type" "FIELD_INTEGER" "movement_damage_pct" "20 40 60" } "03" { "var_type" "FIELD_INTEGER" "damage_cap_amount" "1300" } "04" { "var_type" "FIELD_FLOAT" "damage_cap_interval" "0.25" } "05" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "1000" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_rupture_datadriven" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Bloodseeker.Rupture" "Target" "TARGET" } } "Modifiers" { "modifier_rupture_datadriven" { "Duration" "%duration" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_rupture.vpcf" "EffectAttachType" "attach_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/rupture.lua" "Function" "DistanceCheck" } } "ThinkInterval" "%damage_cap_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/rupture.lua" "Function" "DistanceCheck" } } } } } // Rewrite of the Bloodseeker Thirst ability // Author: YOLOSPAGHETTI // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven/Lua // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bloodseeker/thirst.lua // scripts/vscripts/libraries/modifiers/modifier_movespeed_cap.lua "thirst_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "bloodseeker_thirst" "precache" { "particle" "particles/units/heroes/hero_bloodseeker/bloodseeker_thirst_owner.vpcf" "particle" "particles/status_fx/status_effect_thirst_vision.vpcf" "particle" "particles/units/heroes/hero_bloodseeker/bloodseeker_vision.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "visibility_threshold_pct" "25" } "02" { "var_type" "FIELD_INTEGER" "buff_threshold_pct" "75" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "10 20 30 40" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "10 20 30 40" } "05" { "var_type" "FIELD_FLOAT" "bonus_movement_speed_per_stack" "0.2 0.4 0.6 0.8" } "06" { "var_type" "FIELD_FLOAT" "bonus_damage_per_stack" "0.2 0.4 0.6 0.8" } "07" { "var_type" "FIELD_INTEGER" "global_radius" "100000" } } "Modifiers" { "modifier_thirst_datadriven" { "IsHidden" "1" "Passive" "1" "Aura" "modifier_thirst_check_health_datadriven" "Aura_Radius" "%global_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" } "modifier_thirst_check_health_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/thirst.lua" "Function" "AddThirst" } } "OnHealReceived" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/thirst.lua" "Function" "RemoveThirst" } } } "modifier_thirst_buff" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage_per_stack" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed_per_stack" } } "modifier_thirst_visual" { "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_thirst_owner.vpcf" "EffectAttachType" "follow_origin" } "modifier_thirst_debuff_datadriven" { "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_vision.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_bloodseeker/thirst.lua" "Function" "GiveVision" } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" } } } } // Rewrite of the Bounty Hunter Jinda // Author: chrislotix // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bounty_hunter/jinada.lua "jinada_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "bounty_hunter_jinada" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_jinda_slow.vpcf" "particle" "particles/units/heroes/hero_bounty_hunter/status_effect_bounty_hunter_jinda_slow.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 10.0 8.0 6.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_multiplier" "150 175 200 225" } "02" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "-25 -25 -25 -25" } "03" { "var_type" "FIELD_INTEGER" "bonus_attackspeed" "-25 -25 -25 -25" } "04" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.0 3.0 3.0" } } "Modifiers" { "modifier_jinada_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_multiplier" } "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_jinada_slow_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_jinda_slow.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_BountyHunter.Jinada" "Target" "TARGET" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bounty_hunter/jinada.lua" "Function" "Jinada" } } } "modifier_jinada_slow_datadriven" { "IsDebuff" "1" "Duration" "%duration" "StatusEffectName" "particles/units/heroes/hero_bounty_hunter/status_effect_bounty_hunter_jinda_slow.vpcf" "StatusEffectPriority" "3" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attackspeed" } } } } // Rewrite of the Bounty Hunter Shuriken Toss // Author: chrislotix // Date: November 28, 2015 // Version: 6.81 // Type: Datadriven "shuriken_toss_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "FightRecapLevel" "1" "AbilityTextureName" "bounty_hunter_shuriken_toss" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_suriken_toss.vpcf" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_suriken_impact.vpcf" } // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "650" "AbilityCastPoint" "0.3 0.3 0.3 0.3" "AbilityCooldown" "10" "AbilityManaCost" "90 115 135 155" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.1" // just a mini stun // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "100 200 250 325" } "02" { "var_type" "FIELD_INTEGER" "speed" "1000 1000 1000 1000" } "03" { "var_type" "FIELD_INTEGER" "bounce_aoe" "900" } "04" { "var_type" "FIELD_FLOAT" "mini_stun" "0.1" } } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_suriken_toss.vpcf" "Dodgeable" "1" "ProvidesVision" "0" //"VisionRadius" "300" "MoveSpeed" "%speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } "FireSound" { "EffectName" "Hero_BountyHunter.Shuriken" "Target" "CASTER" } } "OnProjectileHitUnit" { "FireEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_suriken_impact.vpcf" "Target" "TARGET" "EffectAttachType" "attach_hitloc" } "Stun" { "Duration" "%mini_stun" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_BountyHunter.Shuriken.Impact" "Target" "TARGET" } "Damage" { "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%bonus_damage" "Target" "TARGET" } } } // Rewrite of the Bounty Hunter Track ability // Author: Pizzalol, chrislotix // Date: November 28, 2015 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bounty_hunter/track.lua "track_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "bounty_hunter_track" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track.vpcf" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_trail.vpcf" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_haste.vpcf" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_shield.vpcf" } // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilityCastPoint" "0.3 0.3 0.3" "AbilityCooldown" "4.0" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "aura_radius" "900 900 900" } "02" { "var_type" "FIELD_INTEGER" "bonus_move_speed_pct" "20 20 20" } "03" { "var_type" "FIELD_INTEGER" "bonus_gold_radius" "925 925 925" } "04" { "var_type" "FIELD_INTEGER" "bonus_gold_self" "200 275 350" } "05" { "var_type" "FIELD_INTEGER" "bonus_gold" "50 100 150" } "06" { "var_type" "FIELD_FLOAT" "duration" "30.0 30.0 30.0" } "07" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "1200" } "08" { "var_type" "FIELD_FLOAT" "gold_steal" "0.2 0.3 0.4" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_track_aura_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_track_datadriven" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_cast.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" "TARGET" "attach_hitloc" } } "FireSound" { "EffectName" "Hero_BountyHunter.Target" "Target" "TARGET" } } "Modifiers" { "modifier_track_aura_datadriven" { "Duration" "%duration" "IsDebuff" "1" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_trail.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_hitloc" } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_shield.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "Aura" "modifier_track_speed_datadriven" "Aura_Radius" "%aura_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_ApplyToCaster" "1" "ThinkInterval" "0.5" "OnIntervalThink" { "RemoveModifier" { "ModifierName" "modifier_track_reveal_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_track_reveal_datadriven" "Target" "TARGET" "Duration" "0.5" } } "States" { "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_track_datadriven" { "Duration" "%duration" "IsHidden" "1" "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bounty_hunter/track.lua" "Function" "Track" "Target" { "Center" "TARGET" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } } "modifier_track_speed_datadriven" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_track_haste.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_move_speed_pct" } } "modifier_track_reveal_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Priority" "MODIFIER_PRIORITY_HIGH" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" } } } } // Rewrite of the Bounty Hunter Windwalk // Author: chrislotix // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "wind_walk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "bounty_hunter_wind_walk" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts" "particle" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_windwalk.vpcf" "particle" "particles/generic_hero_status/status_invisibility_start.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "20.0 25.0 30.0 35.0" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "1.0 0.75 0.5 0.25" } "03" { "var_type" "FIELD_INTEGER" "bonus_damage" "30 60 90 120" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_bounty_hunter/bounty_hunter_windwalk.vpcf" "Target" "CASTER" "EffectAttachType" "attach_origin" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_BountyHunter.WindWalk" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk_fade_datadriven" } "DelayedAction" { "Delay" "%fade_time" "Action" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } } } "Modifiers" { "modifier_wind_walk_fade_datadriven" { "Duration" "%fade_time" "isBuff" "1" "EffectName" "particles/generic_hero_status/status_invisibility_start.vpcf" "EffectAttachType" "follow_origin" "OnAttackLanded" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%bonus_damage" } } } "modifier_wind_walk_datadriven" { "Duration" "%duration" "isBuff" "1" "OnAttackLanded" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%bonus_damage" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } "OnAbilityExecuted" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RemoveModifier" { "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ModifierName" "modifier_invisible" } } } } } // Rewrite of Brewmaster Drunken Brawler // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // Notes: Icon changing is originally done with flash scaleform, in this ability there will just be a buff icon to display when the player has a guaranteed crit/miss. // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_brewmaster/drunken_brawler.lua "drunken_brawler_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "brewmaster_drunken_brawler" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "dodge_chance" "10 15 20 25" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "10 15 20 25" } "03" { "var_type" "FIELD_INTEGER" "crit_multiplier" "200" } "04" { "var_type" "FIELD_FLOAT" "last_proc" "16 14 12 10" } } "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" } "Modifiers" { "modifier_drunken_brawler" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "%dodge_chance" } // As we aren't tracking the attacks before the spell is learned, let's asume that when the // modifier is first created, the caster hasn't attacked in the last 10 sec and give the guaranteed crit/dodge. "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_drunken_brawler_guaranteed_crit" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_drunken_brawler_guaranteed_dodge" "Target" "TARGET" } } // Normal Crit "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" } } } } // Guaranteed Crit Tracking "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_brewmaster/drunken_brawler.lua" "Function" "DrunkenBrawlerCritReset" } "RemoveModifier" { "ModifierName" "modifier_drunken_brawler_guaranteed_crit" "Target" "CASTER" } } // Guaranteed Dodge Tracking. Also needs an aura to check for OnAttackFailed and remove the guaranteed dodge "OnAttacked" { "RunScript" { "ScriptFile" "heroes/hero_brewmaster/drunken_brawler.lua" "Function" "DrunkenBrawlerDodgeReset" } } "Aura" "modifier_drunken_brawler_miss_detection" "Aura_Radius" "1000" //Max Attack Range "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 | DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "modifier_drunken_brawler_crit" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_multiplier" } } "modifier_drunken_brawler_guaranteed_crit" { "TextureName" "brewmaster_drunken_brawler_crit" "OnAttackLanded" { "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" } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_multiplier" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunkenbrawler_crit.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" } } } } "modifier_drunken_brawler_miss_detection" { "IsHidden" "1" "OnAttackFailed" { "RunScript" { "ScriptFile" "heroes/hero_brewmaster/drunken_brawler.lua" "Function" "DrunkenBrawlerDodgeReset" } "RemoveModifier" { "ModifierName" "modifier_drunken_brawler_guaranteed_dodge" "Target" "TARGET" // <- attacked unit } } } "modifier_drunken_brawler_guaranteed_dodge" { "TextureName" "brewmaster_drunken_brawler_miss" "Properties" { "MODIFIER_PROPERTY_EVASION_CONSTANT" "100" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_drunkenbrawler_evade.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" } } } } } } // Rewrite of Brewmaster Drunken Haze // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "drunken_haze_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityCastRange" "850 850 850 850" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "brewmaster_drunken_haze" "AoERadius" "200" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200" } "02" { "var_type" "FIELD_FLOAT" "duration" "8.0 8.0 8.0 8.0" } "03" { "var_type" "FIELD_FLOAT" "duration_creeps" "12.0 12.0 12.0 12.0" } "05" { "var_type" "FIELD_INTEGER" "movement_slow" "-14 -18 -22 -26" } "04" { "var_type" "FIELD_INTEGER" "miss_chance" "45 55 65 75" } } "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" } "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_1" } "FireSound" { "EffectName" "Hero_Brewmaster.DrunkenHaze.Cast" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_drunken_haze" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_drunken_haze" "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC" } "Duration" "%duration_creeps" } "FireSound" { "EffectName" "Hero_Brewmaster.DrunkenHaze.Target" "Target" "CASTER" } } "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" "%movement_slow" } } } } // Rewrite of Brewmaster Primal Split // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_brewmaster/primal_split.lua "primal_split_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "brewmaster_primal_split" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0 120.0 100.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.65" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 150 175" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0 17.0 19.0" } "02" { "var_type" "FIELD_FLOAT" "split_duration" "0.6" } } "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/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" "States" { "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_brewmaster/brewmaster_primal_split.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Brewmaster.PrimalSplit.Spawn" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_primal_split_duration" "Target" "CASTER" "Duration" "%duration" } } } "modifier_primal_split_duration" { "IsHidden" "0" "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" } "OnCreated" { // If you want to change the unit names, make sure to have one for each level, with the rank number at the end. "RunScript" { "ScriptFile" "heroes/hero_brewmaster/primal_split.lua" "Function" "PrimalSplit" "unit_name_earth" "npc_dota_brewmaster_earth_" "unit_name_storm" "npc_dota_brewmaster_storm_" "unit_name_fire" "npc_dota_brewmaster_fire_" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_brewmaster/primal_split.lua" "Function" "PrimalSplitAuraMove" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Brewmaster.PrimalSplit.Return" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_brewmaster/primal_split.lua" "Function" "PrimalSplitEnd" } } } "modifier_split_unit" { "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_brewmaster/primal_split.lua" "Function" "SplitUnitDied" } } } } } // Rewrite of Brewmaster Thunder Clap // Author: Noya // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "thunder_clap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "brewmaster_thunder_clap" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0 13.0 13.0 13.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 105 130 150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "400 400 400 400" } "02" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.0 4.0 4.0" } "03" { "var_type" "FIELD_FLOAT" "duration_creeps" "8.0 8.0 8.0 8.0" } "04" { "var_type" "FIELD_INTEGER" "damage" "100 175 250 300" } "05" { "var_type" "FIELD_INTEGER" "movement_slow" "-25 -35 -45 -55" } "06" { "var_type" "FIELD_INTEGER" "attack_speed_slow" "-25 -35 -45 -55" } } "precache" { "particle" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap.vpcf" "particle" "particles/units/heroes/hero_brewmaster/brewmaster_thunder_clap_debuff.vpcf" "particle" "particles/status_fx/status_effect_brewmaster_thunder_clap.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_brewmaster.vsndevts" } "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" "%attack_speed_slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_slow" } "OnCreated" { "FireSound" { "EffectName" "Hero_Brewmaster.ThunderClap.Target" "Target" "TARGET" } } } } } // Ability: Bristleback // By: Ragnar Homsar // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bristleback/bristleback.lua // // KV files: // scripts/npc/abilities/bristleback/quill_spray_datadriven.txt "bristleback_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "bristleback_bristleback" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "side_damage_reduction" "8 12 16 20" } "02" { "var_type" "FIELD_INTEGER" "back_damage_reduction" "16 24 32 40" } "03" { "var_type" "FIELD_INTEGER" "side_angle" "110" } "04" { "var_type" "FIELD_INTEGER" "back_angle" "70" } "05" { "var_type" "FIELD_FLOAT" "quill_release_threshold" "230.0" } } "precache" { "particle" "particles/units/heroes/hero_bristleback/bristleback_side_dmg.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_back_dmg.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_bristleback.vsndevts" } "Modifiers" { "modifier_bristleback" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/bristleback.lua" "Function" "bristleback_takedamage" "Damage" "%attack_damage" "back_particle" "particles/units/heroes/hero_bristleback/bristleback_back_dmg.vpcf" "side_particle" "particles/units/heroes/hero_bristleback/bristleback_side_dmg.vpcf" "sound" "Hero_Bristleback.Bristleback" } } } } } // Rewrite of the Bristleback Quill Spray ability // Author: Ragnar Homsar // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bristleback/quill_spray.lua "quill_spray_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "bristleback_quill_spray" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "625" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "3.0 3.0 3.0 3.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "35 35 35 35" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "625" } "02" { "var_type" "FIELD_FLOAT" "quill_base_damage" "20.0 40.0 60.0 80.0" } "03" { "var_type" "FIELD_FLOAT" "quill_stack_damage" "30.0 32.0 34.0 36.0" } "04" { "var_type" "FIELD_FLOAT" "quill_stack_duration" "14.0" } "05" { "var_type" "FIELD_FLOAT" "max_damage" "400.0" } } "precache" { "particle" "particles/units/heroes/hero_bristleback/bristleback_quill_spray.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_impact.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_hit.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_hit_creep.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_bristleback.vsndevts" } "OnSpellStart" { "ApplyModifier" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_quill_spray_datadriven_determiner" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bristleback/bristleback_quill_spray.vpcf" "EffectAttachType" "attach_hitloc" "EffectRadius" "%radius" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Bristleback.QuillSpray.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Bristleback.QuillSpray.Target" "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } "Modifiers" { "modifier_quill_spray_datadriven_user_display" { "IsDebuff" "1" } "modifier_quill_spray_datadriven_stack_creep" // with thanks to BMD for explaining MODIFIER_ATTRIBUTE_MULTIPLE and telling me a good way to handle this { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%quill_stack_duration" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/quill_spray.lua" "Function" "stack_created" "stack_duration" "%quill_stack_duration" "base_damage" "%quill_base_damage" "stack_damage" "%quill_stack_damage" "max_damage" "%max_damage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_impact.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_hit_creep.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/quill_spray.lua" "Function" "stack_destroyed" } } } "modifier_quill_spray_datadriven_stack_hero" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%quill_stack_duration" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/quill_spray.lua" "Function" "stack_created" "stack_duration" "%quill_stack_duration" "base_damage" "%quill_base_damage" "stack_damage" "%quill_stack_damage" "max_damage" "%max_damage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_impact.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_bristleback/bristleback_quill_spray_hit.vpcf" "EffectAttachType" "follow_hitloc" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" "TARGET" "attach_hitloc" } } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/quill_spray.lua" "Function" "stack_destroyed" } } } "modifier_quill_spray_datadriven_determiner" { "IsHidden" "1" "Duration" "0.01" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/quill_spray.lua" "Function" "determine_debuff" } } } } } // Rewrite of the Bristleback Viscous Nasal Goo ability // Author: Ragnar Homsar // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bristleback/viscous_nasal_goo.lua "viscous_nasal_goo_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "bristleback_viscous_nasal_goo" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "1.5 1.5 1.5 1.5" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "30 30 30 30" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "goo_speed" "1000" } "02" { "var_type" "FIELD_FLOAT" "goo_duration" "5.0" } "03" { "var_type" "FIELD_INTEGER" "armor_per_stack" "-1 -1.4 -1.8 -2.2" // These were originally positive, but that kind of made doing the slow through keyvalue a pain. Therefore, I've changed them to be negative. } "04" { "var_type" "FIELD_INTEGER" "base_move_slow" "-20" // See above. } "05" { "var_type" "FIELD_INTEGER" "move_slow_per_stack" "-3 -6 -9 -12" // Also see above. } "06" { "var_type" "FIELD_INTEGER" "stack_limit" "4" } "07" { "var_type" "FIELD_FLOAT" "goo_duration_creep" "10.0" } } "precache" { "particle" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_goo.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_goo_debuff.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_stack.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_bristleback.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Bristleback.ViscousGoo.Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_goo.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "1000" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Bristleback.ViscousGoo.Target" "Target" "TARGET" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_viscous_nasal_goo_datadriven_determiner" } } "Modifiers" { "modifier_viscous_nasal_goo_datadriven_base_creep" { "IsHidden" "1" "Duration" "%goo_duration_creep" "EffectName" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_goo_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%base_move_slow" } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/viscous_nasal_goo.lua" "Function" "destroy_particles" } } } "modifier_viscous_nasal_goo_datadriven_base_hero" { "IsHidden" "1" "Duration" "%goo_duration" "EffectName" "particles/units/heroes/hero_bristleback/bristleback_viscous_nasal_goo_debuff.vpcf" "EffectAttachType" "attach_hitloc" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%base_move_slow" } "OnDestroy" { "RunScript" { "ScriptFIle" "scripts/vscripts/heroes/hero_bristleback/viscous_nasal_goo.lua" "Function" "destroy_particles" } } } "modifier_viscous_nasal_goo_datadriven_stack_creep" { "IsDebuff" "1" "Duration" "%goo_duration_creep" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_per_stack" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_slow_per_stack" } } "modifier_viscous_nasal_goo_datadriven_stack_hero" { "IsDebuff" "1" "Duration" "%goo_duration" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_per_stack" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_slow_per_stack" } } "modifier_viscous_nasal_goo_datadriven_determiner" { "IsHidden" "1" "Duration" "0.01" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/viscous_nasal_goo.lua" "Function" "determine_debuff" "debuff_duration" "%goo_duration" "debuff_duration_creep" "%goo_duration_creep" "max_stacks" "%stack_limit" } } } } } // Rewrite of Bristleback Warpath ability // Author: Ragnar Homsar // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // Notes: Warpath is currently missing its particle effects and run/idle animations. // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_bristleback/warpath.lua "warpath_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "bristleback_warpath" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "10.0 10.0 10.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "base_damage" "20 25 30" } "02" { "var_type" "FIELD_INTEGER" "damage_per_stack" "20 25 30" } "03" { "var_type" "FIELD_INTEGER" "base_move_speed" "3 4 5" } "04" { "var_type" "FIELD_INTEGER" "move_speed_per_stack" "3 4 5" } "05" { "var_type" "FIELD_FLOAT" "stack_duration" "14.0" } "06" { "var_type" "FIELD_INTEGER" "max_stacks" "5 6 7" } } "precache" { "particle" "particles/units/heroes/hero_bristleback/bristleback_warpath.vpcf" "particle" "particles/units/heroes/hero_bristleback/bristleback_warpath_dust.vpcf" } "Modifiers" { "modifier_warpath_datadriven_factory" { "Passive" "1" "IsHidden" "1" "OnAbilityExecuted" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/warpath.lua" "Function" "ability_executed" "max_stacks" "%max_stacks" "duration" "%stack_duration" } } } "modifier_warpath_datadriven_counter" { "IsBuff" "1" "Duration" "%stack_duration" } "modifier_warpath_datadriven_stack" { "IsHidden" "1" "Duration" "%stack_duration" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_per_stack" "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_per_stack" } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_bristleback/warpath.lua" "Function" "stack_destroyed" } } } } } // Rewrite of the Broodmother Incapacitating Bite ability // Author: Pizzalol // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven "incapacitating_bite_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "broodmother_incapacitating_bite" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_broodmother/broodmother_incapacitatingbite_debuff.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "miss_chance" "30 40 50 60" } "02" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "-10 -20 -30 -40" } "03" { "var_type" "FIELD_FLOAT" "duration" "2.0 2.0 2.0 2.0" } } "Modifiers" { "modifier_incapacitating_bite_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_incapacitating_bite_debuff_datadriven" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } } "modifier_incapacitating_bite_debuff_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_broodmother/broodmother_incapacitatingbite_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_chance" } } } } // Rewrite of the Broodmother Insatiable Hunger ability // Author: Pizzalol // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_broodmother/insatiable_hunger.lua "insatiable_hunger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "broodmother_insatiable_hunger" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.2 0.2 0.2" "AbilityCooldown" "45.0 45.0 45.0" "AbilityManaCost" "100 100 100" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_broodmother.vsndevts" "particle" "particles/units/heroes/hero_broodmother/broodmother_hunger_buff.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "60 90 120" } "02" { "var_type" "FIELD_INTEGER" "lifesteal_pct" "60 80 100" } "03" { "var_type" "FIELD_FLOAT" "duration" "14.0 14.0 14.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Broodmother.InsatiableHunger" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_insatiable_hunger_datadriven" "Target" "CASTER" } } "Modifiers" { "modifier_insatiable_hunger_datadriven" { "Duration" "%duration" "IsBuff" "1" "EffectName" "particles/units/heroes/hero_broodmother/broodmother_hunger_buff.vpcf" "EffectAttachType" "follow_origin" "OnAttackLanded" { "Lifesteal" { "Target" "CASTER" "LifestealPercent" "%lifesteal_pct" } } "OnDestroy" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_broodmother/insatiable_hunger.lua" "Function" "InsatiableHungerStopSound" "sound" "Hero_Broodmother.InsatiableHunger" } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" } } } } // Rewrite of the Broodmother Spawn Spiderlings ability // Author: Pizzalol // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // Notes: Uses the normal dota spiderlings NOT custom ones "spawn_spiderlings_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "FightRecapLevel" "1" "AbilityTextureName" "broodmother_spawn_spiderlings" // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.2 0.2 0.2 0.2" "AbilityCooldown" "10.0 10.0 10.0 10.0" "AbilityManaCost" "120 120 120 120" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_broodmother.vsndevts" "particle" "particles/units/heroes/hero_broodmother/broodmother_spiderlings_debuff.vpcf" "particle" "particles/units/heroes/hero_broodmother/broodmother_web_cast.vpcf" "particle" "particles/units/heroes/hero_broodmother/broodmother_spiderlings_spawn.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Modifier has no support value // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "buff_duration" "2.0 2.0 2.0 2.0" } "02" { "var_type" "FIELD_FLOAT" "spiderling_duration" "60.0 60.0 60.0 60.0" } "03" { "var_type" "FIELD_INTEGER" "damage" "75 150 225 300" } "04" { "var_type" "FIELD_INTEGER" "count" "1 2 3 4" } "05" { "var_type" "FIELD_INTEGER" "projectile_speed" "1200" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Broodmother.SpawnSpiderlingsCast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_broodmother/broodmother_web_cast.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_Broodmother.SpawnSpiderlingsImpact" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_spawn_spiderlings_datadriven" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "Modifiers" { "modifier_spawn_spiderlings_datadriven" { "Duration" "%buff_duration" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_broodmother/broodmother_spiderlings_debuff.vpcf" "EffectAttachType" "follow_origin" "OnDeath" { "FireSound" { "EffectName" "Hero_Broodmother.SpawnSpiderlings" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "FireEffect" { "EffectName" "particles/units/heroes/hero_broodmother/broodmother_spiderlings_spawn.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "SpawnUnit" { "UnitName" "npc_dota_broodmother_spiderling" "UnitCount" "%count" "SpawnRadius" "50" "Duration" "%spiderling_duration" "Target" { "Center" "UNIT" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "OnSpawn" { "ApplyModifier" { "ModifierName" "modifier_phased" "Target" "TARGET" "Duration" "0.03" } } "GrantsGold" "1" "GrantsXP" "1" } } } } } // Rewrite of the Broodmother Spin Web ability // Author: Pizzalol // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_broodmother/spin_web.lua // // KV files: // scripts/npc/abilities/broodmother/spin_web_destroy_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "spin_web_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityTextureName" "broodmother_spin_web" "AOERadius" "%radius" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.4" "AbilityCooldown" "0.0" "AbilityManaCost" "50" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_broodmother.vsndevts" "particle" "particles/units/heroes/hero_broodmother/broodmother_web.vpcf" "particle" "particles/units/heroes/hero_broodmother/broodmother_spin_web_cast.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "900" } "02" { "var_type" "FIELD_INTEGER" "count" "2 4 6 8" } "03" { "var_type" "FIELD_INTEGER" "health_regen" "2 4 6 8" } "04" { "var_type" "FIELD_INTEGER" "bonus_movespeed" "20 25 30 35" } "05" { "var_type" "FIELD_INTEGER" "invis_movespeed_tooltip" "40 50 60 70" } "06" { "var_type" "FIELD_FLOAT" "fade_delay" "2.0" } "07" { "var_type" "FIELD_FLOAT" "damage_time" "6.0" } "08" { "var_type" "FIELD_INTEGER" "max_charges" "1 2 3 4" } "09" { "var_type" "FIELD_FLOAT" "charge_restore_time" "40.0" } // Extra // Set this value to 1 if you want it to affect every player controlled unit "10" { "var_type" "FIELD_INTEGER" "all_units" "0" } "11" { "var_type" "FIELD_FLOAT" "linger_time" "0.15" } "12" { "var_type" "FIELD_FLOAT" "aura_interval" "0.1" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_broodmother/spin_web.lua" "Function" "web_start_charge" "modifier_name" "modifier_web_stack_counter_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Broodmother.SpinWebCast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_broodmother/spin_web.lua" "Function" "spin_web" "Target" "POINT" "stack_modifier" "modifier_web_stack_counter_datadriven" "dummy_modifier" "modifier_web_dummy_aura_datadriven" "dummy_ability" "spin_web_destroy_datadriven" } } "Modifiers" { // Cosmetic modifier for stacks "modifier_web_stack_counter_datadriven" { "Passive" "1" "IsHidden" "0" "IsPurgable" "0" "IsDebuff" "0" } // Cosmetic modifier for the web tooltip "modifier_web_tooltip_datadriven" { "IsPurgable" "0" "IsDebuff" "0" } // Runs a script which checks all the units in an area around the dummy // checks if its the caster or any of the specified units belonging to the caster // applies the aura modifier along with the other required modifiers "modifier_web_dummy_aura_datadriven" { "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_broodmother/broodmother_web.vpcf" "EffectAttachType" "attach_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius 0 150" } } } "ThinkInterval" "%aura_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_broodmother/spin_web.lua" "Function" "spin_web_aura" "unit_spiderling" "npc_dota_broodmother_spiderling" "unit_spiderite" "npc_dota_broodmother_spiderite" "aura_modifier" "modifier_web_regen_datadriven" "pathing_modifier" "modifier_web_pathing_datadriven" "pathing_fade_modifier" "modifier_web_pathing_fade_datadriven" "invis_modifier" "modifier_web_invis_datadriven" "invis_fade_modifier" "modifier_web_invis_fade_datadriven" } } } } "States" { "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_TEAM_SELECT" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP_FOR_ENEMIES" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } // Pathing "modifier_web_pathing_datadriven" { "IsHidden" "1" "OnTakeDamage" { "ApplyModifier" { "ModifierName" "modifier_web_pathing_fade_datadriven" "Target" "UNIT" } "RemoveModifier" { "ModifierName" "modifier_web_pathing_datadriven" "Target" "UNIT" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" } "States" { "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_web_pathing_fade_datadriven" { "IsHidden" "1" "Duration" "%damage_time" "OnTakeDamage" { "ApplyModifier" { "ModifierName" "modifier_web_pathing_fade_datadriven" "Target" "UNIT" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_web_pathing_datadriven" "Target" "TARGET" } } } // The modifier which gets applied by the aura "modifier_web_regen_datadriven" { "IsHidden" "1" "Duration" "%linger_time" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_web_tooltip_datadriven" "Target" "TARGET" } } "OnDestroy" { // Remove all the modifiers // Pathing "RemoveModifier" { "ModifierName" "modifier_web_pathing_fade_datadriven" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_web_pathing_datadriven" "Target" "TARGET" } // Cosmetic "RemoveModifier" { "ModifierName" "modifier_web_tooltip_datadriven" "Target" "TARGET" } // Invis "RemoveModifier" { "ModifierName" "modifier_web_invis_fade_datadriven" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_web_invis_datadriven" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%health_regen" } } // Invisibility "modifier_web_invis_datadriven" { "IsHidden" "1" "OnAttack" { "ApplyModifier" { "ModifierName" "modifier_web_invis_fade_datadriven" "Target" "ATTACKER" } } "OnAbilityExecuted" { "ApplyModifier" { "ModifierName" "modifier_web_invis_fade_datadriven" "Target" "UNIT" } } "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" "TARGET" } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_web_invis_fade_datadriven" { "Duration" "%fade_delay" "IsHidden" "1" "OnAttack" { "ApplyModifier" { "ModifierName" "modifier_web_invis_fade_datadriven" "Target" "ATTACKER" } } "OnAbilityExecuted" { "ApplyModifier" { "ModifierName" "modifier_web_invis_fade_datadriven" "Target" "UNIT" } } "OnCreated" { "RemoveModifier" { "ModifierName" "modifier_web_invis_datadriven" "Target" "TARGET" } } "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_web_invis_datadriven" "Target" "TARGET" } } } } } // Rewrite of the Broodmother Spin Web Destroy ability // Author: Pizzalol // Date: November 28, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_broodmother/spin_web.lua // // KV files: // scripts/npc/abilities/broodmother/spin_web_datadriven.txt "spin_web_destroy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "MaxLevel" "1" "AbilityTextureName" "broodmother_spin_web_destroy" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_broodmother/spin_web.lua" "Function" "spin_web_destroy" } } } // Rewrite of Centaur Double Edge // Author: Noya // Date: December 1, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_centaur/double_edge.lua "double_edge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "centaur_double_edge" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 8.0 8.0 8.0" "AbilityCastRange" "150 150 150 150" "AbilityCastPoint" "0.5 0.5 0.5 0.5" //------------------------------------------------------------------------------ "AbilityManaCost" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "edge_damage" "175 250 325 400" } "02" { "var_type" "FIELD_INTEGER" "radius" "190" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" "particle" "particles/units/heroes/hero_centaur/centaur_double_edge.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_Centaur.DoubleEdge" } "RunScript" { "ScriptFile" "heroes/hero_centaur/double_edge.lua" "Function" "DoubleEdgeParticle" } "Damage" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%edge_damage" } "RunScript" { "ScriptFile" "heroes/hero_centaur/double_edge.lua" "Function" "DoubleEdgeSelfDamage" } } } // Rewrite of Centaur Hoof Stomp // Author: Noya // Date: December 1, 2015 // Version: 6.85 // Type: Datadriven "hoof_stomp_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "centaur_hoof_stomp" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5 0.5" "AbilityCooldown" "13.0 13.0 13.0 13.0" "AbilityManaCost" "130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "315" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "2.0 2.25 2.5 2.75" } "03" { "var_type" "FIELD_INTEGER" "stomp_damage" "100 150 200 250" } } "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" } "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" "%stomp_damage" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_hoof_stomp" } } } } "Modifiers" { "modifier_hoof_stomp" { "IsDebuff" "1" "Duration" "%stun_duration" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" } } } // Rewrite of Centaur Return // Author: Noya // Date: December 1, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_centaur/return.lua "return_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "centaur_return" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "return_damage" "16 18 20 22" } "02" { "var_type" "FIELD_INTEGER" "strength_pct" "30 42 54 66" } } "precache" { "particle" "particles/units/heroes/hero_centaur/centaur_return.vpcf" } "Modifiers" { "modifier_return" { "Passive" "1" "OnAttacked" { "RunScript" { "ScriptFile" "heroes/hero_centaur/return.lua" "Function" "Return" } "FireEffect" { "EffectName" "particles/units/heroes/hero_centaur/centaur_return.vpcf" "EffectAttachType" "attach_hitloc" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_hitloc" "ATTACKER" "attach_hitloc" } } } } } } // Rewrite of Centaur Stampede // Author: Noya // Date: December 1, 2015 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_centaur/stampede.lua "stampede_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "centaur_stampede" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90.0 75.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.2" // hits everything on the map // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.75" } "02" { "var_type" "FIELD_INTEGER" "base_damage" "0" } "03" { "var_type" "FIELD_FLOAT" "strength_damage" "1.0 2.0 3.0" } "04" { "var_type" "FIELD_FLOAT" "slow_duration" "1.5" } "05" { "var_type" "FIELD_INTEGER" "radius" "105" } "06" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "100" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_centaur.vsndevts" "particle" "particles/units/heroes/hero_centaur/centaur_stampede_overhead.vpcf" "particle" "particles/units/heroes/hero_centaur/centaur_stampede.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_centaur/stampede.lua" "Function" "StampedeStart" } "ApplyModifier" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "ExcludeTypes" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_stampede" } } "Modifiers" { "modifier_stampede" { "Duration" "%duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "50000" } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } "EffectName" "particles/units/heroes/hero_centaur/centaur_stampede.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_centaur/centaur_stampede_overhead.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } } "OnUnitMoved" { "Random" { "Chance" "3.22" "OnSuccess" { "FireSound" { "EffectName" "Hero_Centaur.Stampede.Movement" "Target" "UNIT" } } } } "Aura" "modifier_stampede_collision" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "modifier_stampede_collision" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_centaur/stampede.lua" "Function" "Stampede" } "FireSound" { "EffectName" "Hero_Centaur.Stampede.Stun" "Target" "TARGET" } } } "modifier_stampede_debuff" { "IsDebuff" "1" "Duration" "%slow_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "%slow_movement_speed" } } } } // Rewrite of the Chaos Knight Chaos Bolt ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chaos_knight/chaos_bolt.lua "chaos_bolt_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "chaos_knight_chaos_bolt" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_chaos_bolt.vpcf" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_bolt_msg.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "140 140 140 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "chaos_bolt_speed" "1000" } "02" { "var_type" "FIELD_INTEGER" "stun_min" "1 1 1 2" } "03" { "var_type" "FIELD_INTEGER" "stun_max" "2 3 4 4" } "04" { "var_type" "FIELD_INTEGER" "damage_min" "75 100 125 150" } "05" { "var_type" "FIELD_INTEGER" "damage_max" "200 225 250 275" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ChaosKnight.ChaosBolt.Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_chaos_knight/chaos_knight_chaos_bolt.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%chaos_bolt_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_ChaosKnight.ChaosBolt.Impact" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_chaos_knight/chaos_bolt.lua" "Function" "ChaosBolt" "chaos_bolt_particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_bolt_msg.vpcf" } } } // Rewrite of the Chaos Knight Chaos Strike ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven "chaos_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "chaos_knight_chaos_strike" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_weapon_blur_critical.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "crit_damage" "150 200 250 300" } "02" { "var_type" "FIELD_INTEGER" "crit_chance" "10 10 10 10" } "03" { "var_type" "FIELD_INTEGER" "armor_reduction" "-5" } "04" { "var_type" "FIELD_FLOAT" "armor_reduction_duration" "8" } } "Modifiers" { "modifier_chaos_strike_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackStart" { "RemoveModifier" { "ModifierName" "modifier_chaos_strike_crit_datadriven" "Target" "CASTER" } "Random" { "Chance" "%crit_chance" "OnSuccess" { "FireSound" { "EffectName" "Hero_ChaosKnight.ChaosStrike" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chaos_knight/chaos_knight_weapon_blur_critical.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_chaos_strike_crit_datadriven" "Target" "CASTER" } } } } } "modifier_chaos_strike_crit_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE" "%crit_damage" } "OnAttack" { "ApplyModifier" { "ModifierName" "modifier_chaos_strike_armor_datadriven" "Target" "TARGET" "Duration" "%armor_reduction_duration" } } "OnAttackLanded" { "RemoveModifier" { "ModifierName" "modifier_chaos_strike_crit_datadriven" "Target" "CASTER" } } } "modifier_chaos_strike_armor_datadriven" { "IsHidden" "1" "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_reduction" } } } } // Rewrite of the Chaos Knight Phantasm ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chaos_knight/phantasm.lua "phantasm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "FightRecapLevel" "2" "AbilityTextureName" "chaos_knight_phantasm" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_phantasm.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "140.0 140.0 140.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 200 275" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "images_count" "1 2 3" } "02" { "var_type" "FIELD_INTEGER" "extra_phantasm_chance_pct_tooltip" "50" } "03" { "var_type" "FIELD_FLOAT" "illusion_duration" "42" } "04" { "var_type" "FIELD_INTEGER" "outgoing_damage" "0 0 0" } "05" { "var_type" "FIELD_INTEGER" "outgoing_damage_tooltip" "100 100 100" } "06" { "var_type" "FIELD_INTEGER" "incoming_damage" "100 100 100" } "07" { "var_type" "FIELD_INTEGER" "incoming_damage_tooltip" "200 200 200" } "08" { "var_type" "FIELD_FLOAT" "invuln_duration" "0.5" } "09" { "var_type" "FIELD_INTEGER" "vision_radius" "400" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_chaos_knight/phantasm.lua" "Function" "PhantasmVision" } "ApplyModifier" { "ModifierName" "modifier_phantasm_datadriven" "Target" "CASTER" "Duration" "%invuln_duration" } } "Modifiers" { "modifier_phantasm_datadriven" { "IsHidden" "1" "IsPurgable" "0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_chaos_knight/chaos_knight_phantasm.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_ChaosKnight.Phantasm" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_chaos_knight/phantasm.lua" "Function" "Phantasm" "sound" "Hero_ChaosKnight.Phantasm.Plus" } } "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" } } } } // Rewrite of the Chaos Knight Reality Rift ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chaos_knight/reality_rift.lua "reality_rift_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "chaos_knight_reality_rift" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_reality_rift.vpcf" "particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_reality_rift_buff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550 600 650 700" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "24 18 12 6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "cast_range" "550 600 650 700" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "60 100 140 180" } "03" { "var_type" "FIELD_FLOAT" "bonus_duration" "1.2" } // Extra "04" { "var_type" "FIELD_FLOAT" "illusion_search_radius" "1375" } "05" { "var_type" "FIELD_FLOAT" "min_range" "0.3" } "06" { "var_type" "FIELD_FLOAT" "max_range" "0.8" } } "OnAbilityPhaseStart" { "FireSound" { "EffectName" "Hero_ChaosKnight.RealityRift" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_chaos_knight/reality_rift.lua" "Function" "RealityRiftPosition" "reality_rift_particle" "particles/units/heroes/hero_chaos_knight/chaos_knight_reality_rift.vpcf" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_ChaosKnight.RealityRift.Target" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_reality_rift_datadriven" "Target" "CASTER" "Duration" "%bonus_duration" } "RunScript" { "ScriptFile" "heroes/hero_chaos_knight/reality_rift.lua" "Function" "RealityRift" "bonus_modifier" "modifier_reality_rift_datadriven" } } "Modifiers" { "modifier_reality_rift_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_chaos_knight/chaos_knight_reality_rift_buff.vpcf" "EffectAttachType" "attach_attack" "OnAttackLanded" // "%attack_damage" is set to the damage value before mitigation { "RemoveModifier" { "ModifierName" "modifier_reality_rift_datadriven" "Target" "ATTACKER" } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" } } } } // Rewrite of the Chen Hand of God ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chen/hand_of_god.lua "hand_of_god_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "chen_hand_of_god" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" "particle" "particles/units/heroes/hero_chen/chen_hand_of_god.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "160.0 140.0 120.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 300 400" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal_amount" "200 300 400" } "02" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "30" } "03" { "var_type" "FIELD_INTEGER" "ancient_creeps_scepter" "1 2 3" } } "OnSpellStart" { "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "FireSound" { "EffectName" "Hero_Chen.HandOfGodHealHero" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_hand_of_god.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } "Heal" { "Target" "TARGET" "HealAmount" "%heal_amount" } } } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "GLOBAL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_ALL" "Flags" "DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_chen/hand_of_god.lua" "Function" "HandOfGod" "sound" "Hero_Chen.HandOfGodHealCreep" "hand_particle" "particles/units/heroes/hero_chen/chen_hand_of_god.vpcf" } } } } } // Rewrite of the Chen Holy Persuasion ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chen/holy_persuasion.lua "holy_persuasion_datadriven" { // 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_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO | DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "AbilityTextureName" "chen_holy_persuasion" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" "particle" "particles/units/heroes/hero_chen/chen_holy_persuasion.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900 900 900 900" "AbilityCooldown" "30.0 26.0 22.0 18.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_units" "1 1 2 3" } "02" { "var_type" "FIELD_INTEGER" "health_bonus" "700 800 900 1000" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Chen.HolyPersuasionCast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Chen.HolyPersuasionEnemy" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_holy_persuasion.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/hero_chen/holy_persuasion.lua" "Function" "HolyPersuasion" } "ApplyModifier" { "ModifierName" "modifier_holy_persuasion_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_holy_persuasion_datadriven" { "IsBuff" "1" "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_chen/holy_persuasion.lua" "Function" "HolyPersuasionRemove" } } "States" { "MODIFIER_STATE_DOMINATED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Chen Penitence ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven "penitence_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "chen_penitence" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" "particle" "particles/units/heroes/hero_chen/chen_penitence.vpcf" "particle" "particles/units/heroes/hero_chen/chen_penitence_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCooldown" "14.0 13.0 12.0 11.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 70 70 70" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "8" } "02" { "var_type" "FIELD_INTEGER" "speed" "2000 2000 2000 2000" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "-15 -20 -25 -30" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage_taken" "15 20 25 30" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Chen.PenitenceCast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "" "Dodgeable" "0" "ProvidesVision" "0" "MoveSpeed" "%speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_Chen.PenitenceImpact" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_penitence.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_penitence_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_penitence_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_chen/chen_penitence_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%bonus_damage_taken" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed" } } } } // Rewrite of the Chen Test of Faith ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chen/test_of_faith.lua // // KV files: // scripts/npc/abilities/chen/test_of_faith_teleport_datadriven.txt "test_of_faith_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "FightRecapLevel" "1" "AbilityTextureName" "chen_test_of_faith" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" "particle" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" "AbilityCooldown" "16 16 16 16" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_min" "50 100 150 200" } "02" { "var_type" "FIELD_INTEGER" "damage_max" "100 200 300 400" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_chen/test_of_faith.lua" "Function" "LevelUpAbility" "ability_name" "test_of_faith_teleport_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Chen.TestOfFaith.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_test_of_faith.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "? %damage_min %damage_max" } } } // Rewrite of the Chen Test of Faith ability // Author: Pizzalol // Date: December 30, 2015 // Version: 6.86 // Type: Datadriven // NOTE: Teleports targets to the middle of the map instead of fountain // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_chen/test_of_faith.lua // // KV files: // scripts/npc/abilities/chen/test_of_faith_datadriven.txt "test_of_faith_teleport_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "AbilityTextureName" "chen_test_of_faith_teleport" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts" "particle" "particles/units/heroes/hero_chen/chen_teleport_cast.vpcf" "particle" "particles/units/heroes/hero_chen/chen_teleport.vpcf" "particle" "particles/units/heroes/hero_chen/chen_teleport_flash.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" "AbilityCooldown" "24.0 24.0 24.0 24.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 200 200 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "hero_teleport_delay" "6.0 5.0 4.0 3.0" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_chen/test_of_faith.lua" "Function" "LevelUpAbility" "ability_name" "test_of_faith_datadriven" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_teleport_cast.vpcf" "EffectAttachType" "attach_attack1" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_chen/test_of_faith.lua" "Function" "TestOfFaithTeleportTarget" "sound_tp_out" "Hero_Chen.TeleportOut" "sound_tp_in" "Hero_Chen.TeleportIn" "teleport_modifier" "modifier_test_of_faith_teleport_datadriven" "teleport_particle" "particles/units/heroes/hero_chen/chen_teleport_flash.vpcf" } } "Modifiers" { "modifier_test_of_faith_teleport_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_chen/chen_teleport.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "EffectName" "Hero_Chen.TeleportLoop" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_chen/test_of_faith.lua" "Function" "TestOfFaithStopSound" "sound" "Hero_Chen.TeleportLoop" } } "ThinkInterval" "%hero_teleport_delay" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Chen.TeleportOut" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Chen.TeleportIn" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_chen/chen_teleport_flash.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_chen/test_of_faith.lua" "Function" "TestOfFaithTeleport" } } } } } // Rewrite of Clinkz Death Pact // Author: Noya // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_clinkz/death_pact.lua "death_pact_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "clinkz_death_pact" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "45.0 35.0 25.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "35.0 35.0 35.0" } "02" { "var_type" "FIELD_INTEGER" "health_gain_pct" "50 65 80" } "03" { "var_type" "FIELD_FLOAT" "damage_gain_pct" "5.0 6.5 8.0" } } "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_death_pact.vpcf" "particle" "particles/units/heroes/hero_clinkz/clinkz_death_pact_buff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Clinkz.DeathPact.Cast" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_death_pact.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "FireSound" { "EffectName" "Hero_Clinkz.DeathPact" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_death_pact" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_death_pact_damage" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_death_pact_health" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_death_pact" "Target" "CASTER" "Duration" "%duration" } "RunScript" { "ScriptFile" "heroes/hero_clinkz/death_pact.lua" "Function" "DeathPact" } } "Modifiers" { "modifier_death_pact" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_death_pact_buff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_clinkz/death_pact.lua" "Function" "DeathPactHealth" } } } "modifier_death_pact_damage" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "1" } } "modifier_death_pact_health" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_HEALTH_BONUS" "1" } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_clinkz/death_pact.lua" "Function" "SetCurrentHealth" } } } } } // Rewrite of Clinkz Searing Arrows // Author: Noya // Date: December 31, 2015 // Version: 6.81 // Type: Datadriven // NOTE: This uses the old Orb mechanic. Orb Labels seem to be malfunctioning, need to warn Valve about this issue. // A non-orb rewrite might be impossible because OnAttackStart triggers earlier than OnOrbFire (i.e. there's no OnAttackLaunched) "searing_arrows_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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_MECHANICAL | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "clinkz_searing_arrows" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "10" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_bonus" "30 40 50 60" } } "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_searing_arrow.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "Modifiers" { "modifier_searing_arrow" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_DEFAULT" "ProjectileName" "particles/units/heroes/hero_clinkz/clinkz_searing_arrow.vpcf" "CastAttack" "1" } "OnOrbFire" { "SpendMana" { "Mana" "%AbilityManaCost" } "FireSound" { "EffectName" "Hero_Clinkz.SearingArrows" "Target" "CASTER" } } "OnOrbImpact" { "Damage" { "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_Clinkz.SearingArrows.Impact" "Target" "CASTER" } } } } } // Rewrite of Clinkz Strafe // Author: Noya // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven "strafe_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "FightRecapLevel" "1" "AbilityTextureName" "clinkz_strafe" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0 35.0 30.0 25.0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 90 90 90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0 6.0 8.0 10.0" } "02" { "var_type" "FIELD_INTEGER" "attack_speed_bonus_pct" "130" } } "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_strafe_fire.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_strafe_fire.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Clinkz.Strafe" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_strafe" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_strafe" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_strafe.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_bonus_pct" } } } } // Rewrite of Clinkz Wind Walk // Author: Noya // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven "wind_walk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityTextureName" "clinkz_wind_walk" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 19.0 18.0 17.0" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "20.0 25.0 30.0 35.0" } "02" { "var_type" "FIELD_FLOAT" "fade_time" "0.6 0.6 0.6 0.6" } "03" { "var_type" "FIELD_INTEGER" "move_speed_bonus_pct" "11 22 33 44" } } "precache" { "particle" "particles/units/heroes/hero_clinkz/clinkz_windwalk.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_clinkz.vsndevts" } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_clinkz/clinkz_windwalk.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "FireSound" { "Target" "CASTER" "EffectName" "Hero_Clinkz.WindWalk" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk_fade" "Duration" "%fade_time" } } "Modifiers" { "modifier_wind_walk_fade" { "IsHidden" "1" "EffectName" "particles/generic_hero_status/status_invisibility_start.vpcf" "EffectAttachType" "follow_origin" "OnDestroy" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk" "Duration" "%duration" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" "Duration" "%duration" } } } "modifier_wind_walk" { "OnAttackLanded" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } "OnAbilityExecuted" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_wind_walk" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_bonus_pct" } "OnDestroy" { "RemoveModifier" { "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ModifierName" "modifier_invisible" } } } } } // Rewrite of Crystal Maiden Arcane Aura // Author: kritth // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven "brilliance_aura_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityTextureName" "crystal_maiden_brilliance_aura" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_regen" "1.0 1.5 2.0 3" } // Extra variables "02" { "var_type" "FIELD_INTEGER" "global_radius" "9000" } } // Data driven //------------------------------------------------------------------------------------------------------------- "Modifiers" { "modifier_brilliance_aura_caster_datadriven" { "Passive" "1" "IsPurgable" "0" "IsHidden" "1" "Aura" "modifier_brilliance_aura_effect_datadriven" "Aura_Radius" "%global_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT" "%mana_regen" } } "modifier_brilliance_aura_effect_datadriven" { "Properties" { "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT" "%mana_regen" } } } } // Rewrite of Crystal Maiden Crystal Nova // Author: kritth // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_crystal_maiden/crystal_nova.lua "crystal_nova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "crystal_maiden_crystal_nova" "AOERadius" "%radius" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "100 150 200 250" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 120 140 160" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.5" } "02" { "var_type" "FIELD_INTEGER" "radius" "400" } "03" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-20 -30 -40 -50" } "04" { "var_type" "FIELD_INTEGER" "attackspeed_slow" "-20 -30 -40 -50" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "6.0" } // Extra variable "06" { "var_type" "FIELD_INTEGER" "vision_radius" "900" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_crystal_nova.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" } "OnSpellStart" { "FireEffect" { "TargetPoint" "POINT" "EffectName" "particles/units/heroes/hero_crystalmaiden/maiden_crystal_nova.vpcf" "EffectAttachType" "world_origin" "ControlPoints" { "01" "%radius 2 %radius*2" } } "FireSound" { "EffectName" "Hero_Crystal.CrystalNova" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Type" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_crystal_nova_slow_datadriven" } } } "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/crystal_nova.lua" "Function" "crystal_nova_post_vision" "Target" "POINT" } } "Modifiers" { "modifier_crystal_nova_slow_datadriven" { "Duration" "%duration" "EffectName" "particles/generic_gameplay/generic_slowed_cold.vpcf" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed_slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_slow" } } } } // Rewrite of Crystal Maiden Freezing Field // Author: kritth // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_crystal_maiden/freezing_field.lua "freezing_field_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "crystal_maiden_freezing_field" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityChannelTime" "10 10 10" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "90" "AbilityDuration" "10" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 400 600" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.35" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "835 835 835" } "02" { "var_type" "FIELD_INTEGER" "explosion_radius" "300" } "04" { "var_type" "FIELD_FLOAT" "explosion_interval" "0.1" } "05" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-30" } "06" { "var_type" "FIELD_INTEGER" "attack_slow" "-30" } "07" { "var_type" "FIELD_FLOAT" "slow_duration" "1.0" } "08" { "var_type" "FIELD_INTEGER" "explosion_min_dist" "195" } "09" { "var_type" "FIELD_INTEGER" "explosion_max_dist" "785" } "10" { "var_type" "FIELD_INTEGER" "damage" "105 170 250" } "11" { "var_type" "FIELD_INTEGER" "damage_scepter" "170 250 310" } "12" { "var_type" "FIELD_INTEGER" "movespeed_slow_scepter" "-50" } "13" { "var_type" "FIELD_INTEGER" "attack_slow_scepter" "-50" } } // Data driven //------------------------------------------------------------------------------------------------------------- "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" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_caster_datadriven" } "FireSound" { "Target" "CASTER" "EffectName" "hero_Crystal.freezingField.wind" } } "OnChannelFinish" { "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_caster_datadriven" } // Remove 4 modifiers, one for each section "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_northeast_thinker_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_northwest_thinker_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_southwest_thinker_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_freezing_field_southeast_thinker_datadriven" } } "Modifiers" { "modifier_freezing_field_caster_datadriven" { "IsPurgable" "0" "IsHidden" "0" "OverrideAnimation" "ACT_DOTA_IDLE" "Aura" "modifier_freezing_field_debuff_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Duration" "%AbilityDuration" "OnCreated" { "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_crystalmaiden/maiden_freezing_field_snow.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" } "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/freezing_field.lua" "Function" "freezing_field_order_explosion" } } } "modifier_freezing_field_northwest_thinker_datadriven" { "IsPurgable" "0" "IsHidden" "1" "ThinkInterval" "%explosion_interval * 4" "Duration" "%AbilityDuration" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/freezing_field.lua" "Function" "freezing_field_explode" "section" "0" } } } "modifier_freezing_field_northeast_thinker_datadriven" { "IsPurgable" "0" "IsHidden" "1" "ThinkInterval" "%explosion_interval * 4" "Duration" "%AbilityDuration" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/freezing_field.lua" "Function" "freezing_field_explode" "section" "1" } } } "modifier_freezing_field_southeast_thinker_datadriven" { "IsPurgable" "0" "IsHidden" "1" "ThinkInterval" "%explosion_interval * 4" "Duration" "%AbilityDuration" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/freezing_field.lua" "Function" "freezing_field_explode" "section" "2" } } } "modifier_freezing_field_southwest_thinker_datadriven" { "IsPurgable" "0" "IsHidden" "1" "ThinkInterval" "%explosion_interval * 4" "Duration" "%AbilityDuration" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_crystal_maiden/freezing_field.lua" "Function" "freezing_field_explode" "section" "3" } } } "modifier_freezing_field_debuff_datadriven" { "IsHidden" "0" "IsPurgable" "0" "Duration" "%slow_duration" "EffectName" "particles/generic_gameplay/generic_slowed_cold.vpcf" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_slow" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_slow" } } "modifier_freezing_field_ref_point_datadriven" { "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" } } } } // Rewrite of Crystal Maiden Frostbite // Author: kritth // Date: December 31, 2015 // Version: 6.86 // Type: Datadriven "frostbite_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "crystal_maiden_frostbite" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9.0 8.0 7.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "115 125 140 150" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second_tooltip" "50" } "02" { "var_type" "FIELD_FLOAT" "duration" "1.5 2.0 2.5 3.0" } "03" { "var_type" "FIELD_INTEGER" "hero_damage_tooltip" "150 200 250 300" } "04" { "var_type" "FIELD_FLOAT" "creep_duration" "10.0 10.0 10.0 10.0" } "05" { "var_type" "FIELD_INTEGER" "creep_damage_tooltip" "1000" } "06" { "var_type" "FIELD_FLOAT" "damage" "100" } // Extra variable "07" { "var_type" "FIELD_FLOAT" "stun_duration" "0.1" } "08" { "var_type" "FIELD_FLOAT" "damage_interval" "0.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite_buff.vpcf" "particle" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite.vpcf" } "OnSpellStart" { "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite.vpcf" "MoveSpeed" "2000" } "Stun" { "Target" "TARGET" "Duration" "%stun_duration" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_frost_bite_root_datadriven" "Duration" "%duration" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_frost_bite_damage_datadriven" "Duration" "%duration - %damage_interval" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_frost_bite_root_datadriven" "Duration" "%creep_duration" } "ApplyModifier" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_frost_bite_damage_datadriven" "Duration" "%creep_duration - %damage_interval" } "FireSound" { "Target" "TARGET" "EffectName" "hero_Crystal.frostbite" } } "Modifiers" { "modifier_frost_bite_root_datadriven" { "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_crystalmaiden/maiden_frostbite_buff.vpcf" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_DISABLED" } } "modifier_frost_bite_damage_datadriven" { "IsPurgable" "1" "IsHidden" "1" "OnCreated" { "Damage" { "Target" "TARGET" "Damage" "%damage_per_second_tooltip / 2" "Type" "DAMAGE_TYPE_MAGICAL" } } "ThinkInterval" "%damage_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Damage" "%damage_per_second_tooltip / 2" "Type" "DAMAGE_TYPE_MAGICAL" } } } } } // Rewrite of the Dark Seer Ion Shell ability // Author: Pizzalol // Date: January 1, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dark_seer/ion_shell.lua "ion_shell_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "dark_seer_ion_shell" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dark_seer.vsndevts" "particle" "particles/units/heroes/hero_dark_seer/dark_seer_ion_shell.vpcf" "particle" "particles/units/heroes/hero_dark_seer/dark_seer_ion_shell_damage.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 90 110 130" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // just does damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250" } "02" { "var_type" "FIELD_INTEGER" "damage_per_second" "30 50 70 90" } "03" { "var_type" "FIELD_FLOAT" "duration" "25" } // Extra "04" { "var_type" "FIELD_FLOAT" "think_interval" "0.1" } } "OnSpellStart" { "RemoveModifier" { "ModifierName" "modifier_ion_shell_datadriven" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_ion_shell_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_ion_shell_datadriven" { "IsBuff" "1" "IsPurgable" "1" "OnCreated" { "FireSound" { "EffectName" "Hero_Dark_Seer.Ion_Shield_Start" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_dark_seer/dark_seer_ion_shell.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" "ControlPoints" { "01" "100 100 100" } } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Dark_Seer.Ion_Shield_end" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_dark_seer/ion_shell.lua" "Function" "IonShell" "ion_particle" "particles/units/heroes/hero_dark_seer/dark_seer_ion_shell_damage.vpcf" } } } } } // Rewrite of the Dark Seer Surge ability // Author: Pizzalol // Date: January 1, 2016 // Version: 6.86 // Type: Datadriven "surge_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityTextureName" "dark_seer_surge" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dark_seer.vsndevts" "particle" "particles/units/heroes/hero_dark_seer/dark_seer_surge.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 11.0 10.0 9.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "2.5" // Value much higher than manacost // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.5 6.0 7.5" } // Extra "02" { "var_type" "FIELD_INTEGER" "move_speed" "522" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dark_Seer.Surge" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_surge_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_surge_datadriven" { "IsBuff" "1" "EffectName" "particles/units/heroes/hero_dark_seer/dark_seer_surge.vpcf" "EffectAttachType" "follow_hitloc" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "%move_speed" } } } } // Rewrite of the Dark Seer Vacuum ability // Author: Pizzalol // Date: January 1, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dark_seer/vacuum.lua "vacuum_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "dark_seer_vacuum" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dark_seer.vsndevts" "particle" "particles/units/heroes/hero_dark_seer/dark_seer_vacuum.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "28" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 130 160 190" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250 350 450 550" } "02" { "var_type" "FIELD_FLOAT" "duration" "0.5 0.5 0.5 0.5" } "03" { "var_type" "FIELD_INTEGER" "damage" "40 80 120 160" } "04" { "var_type" "FIELD_INTEGER" "radius_tree" "275" } } "OnSpellStart" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dark_seer/dark_seer_vacuum.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "CreateThinker" { "ModifierName" "modifier_vacuum_thinker_datadriven" "Target" "POINT" } } "Modifiers" { "modifier_vacuum_thinker_datadriven" { "Duration" "%duration" "OnCreated" { "FireSound" { "EffectName" "Hero_Dark_Seer.Vacuum" "Target" "TARGET" } "DestroyTrees" { "Target" "TARGET" "Radius" "%radius_tree" } "RunScript" { "ScriptFile" "heroes/hero_dark_seer/vacuum.lua" "Function" "VacuumStart" } } "OnDestroy" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Flags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_dark_seer/vacuum.lua" "Function" "Vacuum" "vacuum_modifier" "modifier_vacuum_datadriven" } } } "modifier_vacuum_datadriven" { "IsPurgable" "0" "OverrideAnimation" "ACT_DOTA_FLAIL" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Dark Seer Wall of Replica ability // Author: Pizzalol // Date: January 1, 2016 // Version: 6.86 // Type: Datadriven // NOTE: Shows up as an illusion only for friendly units // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dark_seer/wall_of_replica.lua // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "wall_of_replica_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "dark_seer_wall_of_replica" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dark_seer.vsndevts" "particle" "particles/units/heroes/hero_dark_seer/dark_seer_wall_of_replica.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500 900 1300" "AbilityCastPoint" "0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "100.0 100.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 250 375" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "150 150 150" } "02" { "var_type" "FIELD_FLOAT" "duration" "45.0" } "03" { "var_type" "FIELD_INTEGER" "replica_damage_outgoing" "-40 -25 -10" } "04" { "var_type" "FIELD_INTEGER" "tooltip_outgoing" "60 75 90" } "05" { "var_type" "FIELD_INTEGER" "replica_damage_incoming" "300 300 300" } "06" { "var_type" "FIELD_INTEGER" "tooltip_replica_total_damage_incoming" "400 400 400" } "07" { "var_type" "FIELD_INTEGER" "length" "1000 1000 1000" } "08" { "var_type" "FIELD_INTEGER" "replica_scale" "0" } "09" { "var_type" "FIELD_INTEGER" "range_tooltip" "500 900 1300" } "10" { "var_type" "FIELD_INTEGER" "replica_damage_outgoing_scepter" "0 20 40" } "11" { "var_type" "FIELD_INTEGER" "tooltip_outgoing_scepter" "100 120 140" } // Extra "12" { "var_type" "FIELD_INTEGER" "width" "50 50 50" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dark_Seer.Wall_of_Replica_Start" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_dark_seer/wall_of_replica.lua" "Function" "WallOfReplica" "Target" "POINT" "wall_particle" "particles/units/heroes/hero_dark_seer/dark_seer_wall_of_replica.vpcf" "dummy_modifier" "modifier_wall_of_replica_dummy_datadriven" "dummy_sound" "Hero_Dark_Seer.Wall_of_Replica_lp" } } "Modifiers" { "modifier_wall_of_replica_dummy_datadriven" { "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "0.2" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_dark_seer/wall_of_replica.lua" "Function" "WallOfReplicaAura" "aura_modifier" "modifier_wall_of_replica_datadriven" } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_wall_of_replica_datadriven" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_dark_seer/wall_of_replica.lua" "Function" "WallOfReplicaIllusionCheck" } } } } } // Rewrite of the Dazzle Poison Touch ability // Author: Pizzalol // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dazzle/poison_touch.lua "poison_touch_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "dazzle_poison_touch" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/units/heroes/hero_dazzle/dazzle_poison_touch.vpcf" "particle" "particles/units/heroes/hero_dazzle/dazzle_poison_debuff.vpcf" "particle" "particles/status_fx/status_effect_poison_dazzle.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15 13 11 7" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "14 20 26 36" "AbilityDuration" "10" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.35" // Can apply multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "set_time" "3" } "02" { "var_type" "FIELD_INTEGER" "slow_1" "-33 -33 -33 -33" } "03" { "var_type" "FIELD_INTEGER" "slow_2" "-33 -33 -66 -66" } "04" { "var_type" "FIELD_INTEGER" "slow_3" "-33 -66 -100 -100" } "05" { "var_type" "FIELD_INTEGER" "projectile_speed" "1300" } "06" { "var_type" "FIELD_INTEGER" "should_stun" "0 0 0 1" } "07" { "var_type" "FIELD_FLOAT" "stun_duration" "1" } "08" { "var_type" "FIELD_FLOAT" "duration_tooltip" "10" } // Extra "09" { "var_type" "FIELD_FLOAT" "slow_1_duration" "3 2 1 1" } "10" { "var_type" "FIELD_FLOAT" "slow_2_duration" "0 1 1 1" } "11" { "var_type" "FIELD_FLOAT" "slow_3_duration" "0 0 1 0" } "12" { "var_type" "FIELD_FLOAT" "damage_duration" "7" } "13" { "var_type" "FIELD_FLOAT" "tick_interval" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Poison_Cast" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_dazzle/dazzle_poison_touch.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "FireSound" { "EffectName" "Hero_Dazzle.Poison_Touch" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_poison_touch_slow_1_datadriven" "Target" "TARGET" "Duration" "%slow_1_duration" } "ApplyModifier" { "ModifierName" "modifier_poison_touch_debuff_datadriven" "Target" "TARGET" "Duration" "%duration_tooltip" } "DelayedAction" { "Delay" "%set_time" "Action" { "ApplyModifier" { "ModifierName" "modifier_poison_touch_damage_datadriven" "Target" "TARGET" "Duration" "%damage_duration" } } } } "Modifiers" { "modifier_poison_touch_debuff_datadriven" { "IsDebuff" "1" "IsPurgable" "1" "EffectName" "particles/units/heroes/hero_dazzle/dazzle_poison_debuff.vpcf" "EffectAttachType" "follow_origin" } "modifier_poison_touch_damage_datadriven" { "IsHidden" "1" "OnCreated" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PHYSICAL" "Damage" "%AbilityDamage" } } } "modifier_poison_touch_slow_1_datadriven" { "IsHidden" "1" "StatusEffectName" "particles/status_fx/status_effect_poison_dazzle.vpcf" "StatusEffectPriority" "10" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_poison_touch_slow_2_datadriven" "Target" "TARGET" "Duration" "%slow_2_duration" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_1" } } "modifier_poison_touch_slow_2_datadriven" { "IsHidden" "1" "OnDestroy" { "ApplyModifier" { "ModifierName" "modifier_poison_touch_slow_3_datadriven" "Target" "TARGET" "Duration" "%slow_3_duration" } "RunScript" { "ScriptFile" "heroes/hero_dazzle/poison_touch.lua" "Function" "PoisonTouchStun" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_2" } } "modifier_poison_touch_slow_3_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_3" } } } } // Rewrite of the Dazzle Shadow Wave ability // Author: Pizzalol // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dazzle/shadow_wave.lua "shadow_wave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "dazzle_shadow_wave" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/units/heroes/hero_dazzle/dazzle_shadow_wave.vpcf" "particle" "particles/units/heroes/hero_dazzle/dazzle_shadow_wave_impact_damage.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12 10 8 6" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "80 100 120 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bounce_radius" "475" } "02" { "var_type" "FIELD_INTEGER" "damage_radius" "185" } "03" { "var_type" "FIELD_INTEGER" "max_targets" "3 4 5 6" } "04" { "var_type" "FIELD_INTEGER" "tooltip_max_targets_inc_dazzle" "4 5 6 7" } "05" { "var_type" "FIELD_INTEGER" "damage" "80 100 120 140" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Shadow_Wave" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_dazzle/dazzle_shadow_wave.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" "TARGET" "follow_origin" } } "RunScript" { "ScriptFile" "heroes/hero_dazzle/shadow_wave.lua" "Function" "ShadowWave" "shadow_wave_particle" "particles/units/heroes/hero_dazzle/dazzle_shadow_wave.vpcf" "damage_particle" "particles/units/heroes/hero_dazzle/dazzle_shadow_wave_impact_damage.vpcf" } } } // Rewrite of the Dazzle Shallow Grave ability // Author: Pizzalol // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven "shallow_grave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "dazzle_shallow_grave" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/units/heroes/hero_dazzle/dazzle_shallow_grave.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550 700 850 1000" "AbilityCastPoint" "0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60 45 30 15" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150" "AbilityDuration" "5 5 5 5" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration_tooltip" "5 5 5 5" } "02" { "var_type" "FIELD_INTEGER" "range_tooltip" "550 700 850 1000" } // Extra "03" { "var_type" "FIELD_FLOAT" "min_health" "1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Shallow_Grave" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_shallow_grave_datadriven" "Target" "TARGET" "Duration" "%duration_tooltip" } } "Modifiers" { "modifier_shallow_grave_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "IsPurgable" "0" "IsBuff" "1" "EffectName" "particles/units/heroes/hero_dazzle/dazzle_shallow_grave.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MIN_HEALTH" "%min_health" } } } } // Rewrite of the Dazzle Weave ability // Author: Pizzalol // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dazzle/weave.lua "weave_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "dazzle_weave" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts" "particle" "particles/units/heroes/hero_dazzle/dazzle_weave.vpcf" "particle" "particles/units/heroes/hero_dazzle/dazzle_armor_friend.vpcf" "particle" "particles/units/heroes/hero_dazzle/dazzle_armor_enemy.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2000" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40 40 40" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "575 575 575" } "02" { "var_type" "FIELD_INTEGER" "vision" "575" } "03" { "var_type" "FIELD_FLOAT" "armor_per_second" "0.75 1 1.25" } "04" { "var_type" "FIELD_FLOAT" "duration" "24.0" } "05" { "var_type" "FIELD_INTEGER" "radius_scepter" "775 775 775" } "06" { "var_type" "FIELD_INTEGER" "duration_scepter" "24" } "07" { "var_type" "FIELD_FLOAT" "armor_per_second_scepter" "1.25 1.5 1.75" } // Extra "08" { "var_type" "FIELD_FLOAT" "negative_armor_per_second" "-0.75 -1 -1.25" } "09" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } "10" { "var_type" "FIELD_FLOAT" "vision_duration" "3.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Dazzle.Weave" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_dazzle/dazzle_weave.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius 0 0" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_BOTH" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "ModifierName" "modifier_weave_friendly_datadriven" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" } "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_weave_enemy_datadriven" "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Duration" "%duration" } } } "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveVision" "Target" "POINT" } } "Modifiers" { "modifier_weave_friendly_datadriven" { "Passive" "0" "IsHidden" "0" "IsBuff" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeavePositiveParticle" "particle_name" "particles/units/heroes/hero_dazzle/dazzle_armor_friend.vpcf" "modifier" "modifier_weave_friendly_datadriven" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveIncrement" "modifier" "modifier_weave_friendly_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveRemoveModifier" "modifier" "modifier_weave_friendly_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "EndWeaveParticle" "modifier" "modifier_weave_friendly_datadriven" "particle_type" "1" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_per_second" } } "modifier_weave_enemy_datadriven" { "IsDebuff" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveNegativeParticle" "particle_name" "particles/units/heroes/hero_dazzle/dazzle_armor_enemy.vpcf" "modifier" "modifier_weave_enemy_datadriven" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveIncrement" "modifier" "modifier_weave_enemy_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "WeaveRemoveModifier" "modifier" "modifier_weave_enemy_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_dazzle/weave.lua" "Function" "EndWeaveParticle" "modifier" "modifier_weave_enemy_datadriven" "particle_type" "0" } } "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%negative_armor_per_second" } } } } // Rewrite of Death Prophet Carrion Swarm // Author: Noya // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Default projectile particle can't be properly attached. This uses the economy arcana particle. "carrion_swarm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "death_prophet_carrion_swarm" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0 7.0 6.0 5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "75 150 225 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "105 120 140 165" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "start_radius" "110 110 110 110" } "02" { "var_type" "FIELD_INTEGER" "end_radius" "300 300 300 300" } "03" { "var_type" "FIELD_INTEGER" "range" "810 810 810 810" } "04" { "var_type" "FIELD_INTEGER" "speed" "1100 1100 1100 1100" } } "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" } "OnSpellStart" { "LinearProjectile" { "Target" "POINT" "EffectName" "particles/econ/items/death_prophet/death_prophet_acherontia/death_prophet_acher_swarm.vpcf" "MoveSpeed" "%speed" "StartRadius" "%start_radius" "EndRadius" "%end_radius" "StartPosition" "attach_attack1" "FixedDistance" "%range" "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" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } // Rewrite of Death Prophet Exorcism // Author: Noya // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // NOTES: The Targeting & Movement AI is "smarter" than the original ability, so the overall DPS is way higher when all spirits focus the same target // To go around this, there is a min_time_between_attacks value which if it isn't reached after returning to the hero, the spirit will idle // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_death_prophet/exorcism.lua // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "exorcism_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "death_prophet_exorcism" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "145.0" "AbilityDuration" "35.0 35.0 35.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 300 400" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "700 700 700" } "02" { "var_type" "FIELD_INTEGER" "spirits" "8 16 24" } "03" { "var_type" "FIELD_INTEGER" "spirit_speed" "500 500 500" } "04" { "var_type" "FIELD_INTEGER" "max_distance" "2000 2000 2000" } "05" { "var_type" "FIELD_INTEGER" "give_up_distance" "1200 1200 1200" } "06" { "var_type" "FIELD_INTEGER" "min_damage" "53 53 53" } "07" { "var_type" "FIELD_INTEGER" "max_damage" "58 58 58" } "08" { "var_type" "FIELD_INTEGER" "heal_percent" "25 25 25" } "09" { "var_type" "FIELD_INTEGER" "average_damage" "55 55 55" } // Extra "10" { "var_type" "FIELD_INTEGER" "duration" "35" //Always have a duration AbilitySpecial, don't believe Valves lies. } "11" { "var_type" "FIELD_FLOAT" "delay_between_spirits" "0.3" } "12" { "var_type" "FIELD_FLOAT" "min_time_between_attacks" "3.0" } } "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_model.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_exorcism_attack.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_exorcism_attack_building.vpcf" "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_glow.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismDeath" } "RemoveModifier" { "ModifierName" "modifier_exorcism" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_exorcism" "Target" "CASTER" "Duration" "%AbilityDuration" } "FireSound" { "EffectName" "Hero_DeathProphet.Exorcism.Cast" "Target" "CASTER" } } "Modifiers" { "modifier_exorcism" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismStart" } "FireSound" { "EffectName" "Hero_DeathProphet.Exorcism" "Target" "CASTER" } } "OnAttackStart" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismAttack" } } "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismDeath" } "FireSound" { "EffectName" "Hero_DeathProphet.Death" "Target" "CASTER" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismEnd" } } } "modifier_exorcism_spirit" { "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/exorcism.lua" "Function" "ExorcismPhysics" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_glow.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "AttachEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_spirit_model.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" } } } } // Rewrite of Death Prophet Silence // Author: Noya // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven "silence_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "death_prophet_silence" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.5 0.5 0.5 0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 14.0 13.0 12.0" "AbilityDuration" "3.0 4.0 5.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 80 80 80" "AOERadius" "%radius" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "425" } "02" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.0 5.0 6.0" } } "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" } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_silenced" "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Duration" "%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" } } } } // Rewrite of Death Prophet Soul Siphon // Author: Pizzalol // Date: January 26, 2016 // Version: 6.86 // Type: Datadriven // NOTES: This implementation doesn't have an error message in case you try to cast multiple siphons on the same target // Instead, it will just interrupt the cast if you try to cast it on a haunted target // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_death_prophet/spirit_siphon.lua "spirit_siphon_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "death_prophet_spirit_siphon" // Precache "precache" { "particle" "particles/units/heroes/hero_death_prophet/death_prophet_spiritsiphon.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.1" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 65 60 55" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage" "20" } "02" { "var_type" "FIELD_FLOAT" "damage_pct" "1 2 3 4" } "03" { "var_type" "FIELD_FLOAT" "haunt_duration" "5" } "04" { "var_type" "FIELD_INTEGER" "movement_slow" "-5 -10 -15 -20" } "05" { "var_type" "FIELD_INTEGER" "siphon_buffer" "300" } "06" { "var_type" "FIELD_INTEGER" "max_charges" "1 2 3 4" } "07" { "var_type" "FIELD_INTEGER" "charge_restore_time" "45" } // Extra "08" { "var_type" "FIELD_FLOAT" "think_interval" "0.25" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/spirit_siphon.lua" "Function" "siphon_start_charge" "modifier_name" "modifier_spirit_siphon_counter_datadriven" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/spirit_siphon.lua" "Function" "SpiritSiphonCheck" "modifier" "modifier_spirit_siphon_datadriven" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/spirit_siphon.lua" "Function" "SpiritSiphonCast" "modifier" "modifier_spirit_siphon_datadriven" "stack_modifier" "modifier_spirit_siphon_counter_datadriven" "sound" "Hero_DeathProphet.SpiritSiphon.Cast" } } "Modifiers" { "modifier_spirit_siphon_datadriven" { "IsPurgable" "0" "IsHidden" "1" "IsDebuff" "1" "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_death_prophet/spirit_siphon.lua" "Function" "SpiritSiphon" "modifier" "modifier_spirit_siphon_datadriven" } } "OnCreated" { "FireSound" { "EffectName" "Hero_DeathProphet.SpiritSiphon.Target" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_death_prophet/death_prophet_spiritsiphon.vpcf" "EffectAttachType" "start_at_customorigin" "Target" "TARGET" "ControlPointEntities" { "CASTER" "attach_hitloc" "TARGET" "attach_hitloc" } } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movement_slow" } "States" { "MODIFIER_STATE_PROVIDES_VISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_spirit_siphon_counter_datadriven" { "IsBuff" "1" "IsPurgable" "0" "Passive" "1" } } } // Rewrite of the Doom Devour ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // NOTES: You have to add the specific units to the Lua table to be able to steal their abilities // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/devour.lua // // KV files: // scripts/npc/abilities/doom_bringer/doom_bringer_empty1_datadriven.txt // scripts/npc/abilities/doom_bringer/doom_bringer_empty2_datadriven.txt "devour_datadriven" { // 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_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityTextureName" "doom_bringer_devour" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_devour.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "300 300 300 300" "AbilityCooldown" "70.0 60.0 50.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_gold" "25 50 75 100" } "02" { "var_type" "FIELD_INTEGER" "health_per_second" "20 20 20 20" } } "OnAbilityPhaseStart" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/devour.lua" "Function" "DevourCheck" "modifier" "modifier_devour_datadriven" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_DoomBringer.DevourCast" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_doom_bringer/doom_bringer_devour.vpcf" "EffectAttachType" "follow_origin" "ControlPointEntities" { "TARGET" "attach_origin" "CASTER" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/devour.lua" "Function" "Devour" "modifier" "modifier_devour_datadriven" "doom_empty1" "doom_bringer_empty1_datadriven" "doom_empty2" "doom_bringer_empty2_datadriven" } } "Modifiers" { "modifier_devour_datadriven" { "IsDebuff" "1" "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/devour.lua" "Function" "DevourGold" } } } } } // Rewrite of the Doom Empty1 ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // NOTES: This is a placeholder ability for the Devour ability // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/devour.lua // // KV files: // scripts/npc/abilities/doom_bringer/devour_datadriven.txt // scripts/npc/abilities/doom_bringer/doom_bringer_empty2_datadriven.txt "doom_bringer_empty1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } // Rewrite of the Doom Empty2 ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // NOTES: This is a placeholder ability for the Devour ability // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/devour.lua // // KV files: // scripts/npc/abilities/doom_bringer/devour_datadriven.txt // scripts/npc/abilities/doom_bringer/doom_bringer_empty1_datadriven.txt "doom_bringer_empty2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" } // Rewrite of the Doom Doom ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/doom.lua "doom_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "FightRecapLevel" "2" "AbilityTextureName" "doom_bringer_doom" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_doom_ring.vpcf" "particle" "particles/status_fx/status_effect_doom.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550 550 550" "AbilityCooldown" "125.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 200 250" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "15.0" } "02" { "var_type" "FIELD_INTEGER" "damage" "20 35 50" } "03" { "var_type" "FIELD_FLOAT" "duration_scepter" "16.0 16.0 16.0" } "04" { "var_type" "FIELD_INTEGER" "damage_scepter" "40 60 80" } "05" { "var_type" "FIELD_INTEGER" "deniable_pct" "25 25 25" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_DoomBringer.Doom" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } } "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/doom.lua" "Function" "DoomPurge" } "ApplyModifier" { "ModifierName" "modifier_doom_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_doom_deny_check_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Duration" "%duration" } } "Modifiers" { "modifier_doom_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "StatusEffectName" "particles/status_fx/status_effect_doom.vpcf" "StatusEffectPriority" "10" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_doom_bringer/doom_bringer_doom.vpcf" "EffectAttachType" "follow_origin" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "ControlPoints" { "04" "TARGET" } } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/doom.lua" "Function" "StopSound" "sound" "Hero_DoomBringer.Doom" } } "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_PURE" "Damage" "%damage" } } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_doom_deny_check_datadriven" { "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/doom.lua" "Function" "DoomDenyCheck" "modifier" "modifier_doom_deny_datadriven" } } } "modifier_doom_deny_datadriven" { "IsHidden" "1" "IsPurgable" "0" "States" { "MODIFIER_STATE_SPECIALLY_DENIABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of Infernal Blade // Author: YOLOSPAGHETTI // Date: February 8, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/infernal_blade.lua "infernal_blade_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_ATTACK | DOTA_ABILITY_BEHAVIOR_AUTOCAST" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "doom_bringer_infernal_blade" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_stunned.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade_debuff.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade_impact.vpcf" "soundfile" "sounds/weapons/hero/doom_bringer/infernal_blade_preattack.vsnd" "soundfile" "sounds/weapons/hero/doom_bringer/infernal_blade_target.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16 12 8 4" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "40" } "02" { "var_type" "FIELD_FLOAT" "health_damage_pct" "1.25 2.5 3.75 5" } "03" { "var_type" "FIELD_FLOAT" "burn_duration" "4.0" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "0.3" } "05" { "var_type" "FIELD_FLOAT" "burn_interval" "1.0" } } "Modifiers" { "modifier_infernal_blade_datadriven" { "Passive" "1" "IsHidden" "1" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "CastAttack" "1" } "OnOrbFire" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/infernal_blade.lua" "Function" "CheckCooldown" "particle" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade.vpcf" //Name? "sound" "Hero_DoomBringer.InfernalBlade" } } "OnOrbImpact" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/infernal_blade.lua" "Function" "ApplyModifiers" } } } "modifier_infernal_blade_damage" { "IsDebuff" "1" "Duration" "%burn_duration" "EffectName" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade_debuff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_doom_bringer/doom_infernal_blade_impact.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } //Name? "FireSound" { "EffectName" "Hero_DoomBringer.InfernalBlade_Target" "Target" "TARGET" } } "ThinkInterval" "%burn_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/infernal_blade.lua" "Function" "DealDamage" } } } "modifier_infernal_blade_stun" { "IsHidden" "1" "Duration" "%stun_duration" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Doom Lvl Death ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/lvl_death.lua "lvl_death_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "doom_bringer_lvl_death" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_lvl_death.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_lvl_death_bonus.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" "AbilityCooldown" "7.0 7.0 7.0 7.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 110 110 110" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // damage only // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage" "125 175 225 275" } "02" { "var_type" "FIELD_FLOAT" "lvl_bonus_damage" "20" } "03" { "var_type" "FIELD_INTEGER" "lvl_bonus_multiple" "6 5 4 3" } // Extra "04" { "var_type" "FIELD_FLOAT" "stun_duration" "0.01" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_DoomBringer.LvlDeath" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_doom_bringer/doom_bringer_lvl_death.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "Stun" { "Duration" "%stun_duration" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/lvl_death.lua" "Function" "LvlDeath" "bonus_particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_lvl_death_bonus.vpcf" } } } // Rewrite of the Doom Scorched Earth ability // Author: Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_doom_bringer/scorched_earth.lua "scorched_earth_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "doom_bringer_scorched_earth" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_scorched_earth_buff.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_scorched_earth.vpcf" "particle" "particles/units/heroes/hero_doom_bringer/doom_bringer_scorched_earth_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600 600 600 600" "AbilityCooldown" "55.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "60 65 70 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_per_second" "10 20 30 40" } "02" { "var_type" "FIELD_INTEGER" "radius" "600 600 600 600" } "03" { "var_type" "FIELD_INTEGER" "bonus_movement_speed_pct" "14 14 14 14" } "04" { "var_type" "FIELD_FLOAT" "duration" "10.0 12.0 14.0 16.0" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_scorched_earth_datadriven" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_scorched_earth_datadriven" { "IsBuff" "1" "IsPurgable" "0" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_doom_bringer/doom_scorched_earth.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "01" "%radius 0 0" } } } "Aura" "modifier_scorched_earth_check_datadriven" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NONE" "Aura_ApplyToCaster" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "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" "%damage_per_second" } } } } } "modifier_scorched_earth_check_datadriven" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/scorched_earth.lua" "Function" "ScorchedEarthCheck" "modifier" "modifier_scorched_earth_buff_datadriven" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_scorched_earth_buff_datadriven" "Target" "TARGET" } } } "modifier_scorched_earth_buff_datadriven" { "IsHidden" "1" "OnCreated" { "FireSound" { "EffectName" "Hero_DoomBringer.ScorchedEarthAura" "Target" "TARGET" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_doom_bringer/scorched_earth.lua" "Function" "StopSound" "sound" "Hero_DoomBringer.ScorchedEarthAura" } } "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%damage_per_second" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movement_speed_pct" } } } } // Rewrite of the Dragon Knight Breathe Fire // Author: chrislotix, Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven "breathe_fire_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "dragon_knight_breathe_fire" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "500" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 12.0 12.0 12.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "90 170 240 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 110 120 130" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "start_radius" "150 150 150 150" } "02" { "var_type" "FIELD_INTEGER" "end_radius" "250 250 250 250" } "03" { "var_type" "FIELD_INTEGER" "range" "650 650 650 650" } "04" { "var_type" "FIELD_INTEGER" "speed" "1050" } "05" { "var_type" "FIELD_INTEGER" "dmg_reduction_pct" "-20 -25 -30 -35" } "06" { "var_type" "FIELD_FLOAT" "reduction_duration" "11.0" } } "OnSpellStart" { "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_breathe_fire.vpcf" "MoveSpeed" "%speed" "StartRadius" "%start_radius" "StartPosition" "attach_origin" "EndRadius" "%end_radius" "FixedDistance" "%range" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO | DOTA_UNITY_TARGET_MECHANICAL" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "1" "ProvidesVision" "0" } "FireSound" { "EffectName" "Hero_DragonKnight.BreathFire" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "ModifierName" "modifier_breathe_fire_reduction_datadriven" "Target" "TARGET" "Duration" "%reduction_duration" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } "Modifiers" { "modifier_breathe_fire_reduction_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%dmg_reduction_pct" } } } } // Rewrite of the Dragon Knight Dragon Blood // Author: chrislotix // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven "dragon_blood_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "dragon_knight_dragon_blood" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_health_regen" "3 6 9 12" } "02" { "var_type" "FIELD_INTEGER" "bonus_armor" "3 6 9 12" } } "Modifiers" { "modifier_dragon_blood_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%bonus_armor" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%bonus_health_regen" } } } } // Rewrite of the Dragon Knight Dragon Tail // Author: chrislotix // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven "dragon_tail_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "dragon_knight_dragon_tail" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_dragon_tail.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12 11 10 9" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "25 50 75 100" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "stun_duration" "2.5 2.75 3.0 3.25" } "02" { "var_type" "FIELD_INTEGER" "dragon_cast_range" "400" } } "OnSpellStart" { "Stun" { "Target" "TARGET" "Duration" "%stun_duration" } "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_dragon_tail.vpcf" "Target" "TARGET" } "FireSound" { "EffectName" "Hero_DragonKnight.DragonTail.Target" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DOTA_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } } // Rewrite of the Dragon Knight Elder Dragon Form // Author: chrislotix,Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven/Lua // NOTES: #1 Dragon Form is always a Green Dragon // #2 Autoattack projectile model will be the most recent dragon form AA model // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua // scripts/vscripts/heroes/hero_dragon_knight/modifiers/modifier_elder_dragon_form_model_lua.lua "elder_dragon_form_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "dragon_knight_elder_dragon_form" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_green.vpcf" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_red.vpcf" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_blue.vpcf" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_corrosive.vpcf" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_fire.vpcf" "particle" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_frost.vpcf" "model" "models/heroes/dragon_knight/dragon_knight_dragon.vmdl" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "115.0 115.0 115.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.35" // Attacks are primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "60.0 60.0 60.0" } "02" { "var_type" "FIELD_INTEGER" "bonus_movement_speed" "25 25 25" } "03" { "var_type" "FIELD_INTEGER" "bonus_attack_range" "372 372 372" } "05" { "var_type" "FIELD_INTEGER" "corrosive_breath_damage" "20 20 20" } "06" { "var_type" "FIELD_FLOAT" "corrosive_breath_duration" "5.0 5.0 5.0" } "07" { "var_type" "FIELD_INTEGER" "splash_radius" "150 225 300" } "08" { "var_type" "FIELD_INTEGER" "splash_damage_percent" "100 75 50" } "09" { "var_type" "FIELD_INTEGER" "frost_bonus_movement_speed" "-30 -30 -30" } "10" { "var_type" "FIELD_INTEGER" "frost_bonus_attack_speed" "-20 -20 -20" } "11" { "var_type" "FIELD_FLOAT" "frost_duration" "3.0 3.0 3.0" } "12" { "var_type" "FIELD_FLOAT" "frost_aoe" "300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_DragonKnight.ElderDragonForm" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "Transform" "modifier_one" "modifier_green_dragon_datadriven" "modifier_two" "modifier_red_dragon_datadriven" "modifier_three" "modifier_blue_dragon_datadriven" } } "Modifiers" { "modifier_green_dragon_datadriven" { "IsHidden" "1" "IsPurgable" "0" "AllowIllusionDuplicate" "1" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_green.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_corrosive_breath_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapStart" "projectile_model" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_corrosive.vpcf" } } "OnAttack" { "FireSound" { "EffectName" "Hero_DragonKnight.ElderDragonShoot1.Attack" "Target" "CASTER" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_green.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapEnd" } } "OnAttackLanded" { "FireSound" { "EffectName" "Hero_DragonKnight.ProjectileImpact" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_movement_speed" } } "modifier_red_dragon_datadriven" { "IsHidden" "1" "IsPurgable" "0" "AllowIllusionDuplicate" "1" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_red.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapStart" "projectile_model" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_fire.vpcf" } "ApplyModifier" { "ModifierName" "modifier_corrosive_breath_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_splash_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_red.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapEnd" } } "OnAttack" { "FireSound" { "EffectName" "Hero_DragonKnight.ElderDragonShoot2.Attack" "Target" "CASTER" } } "OnAttackLanded" { "FireSound" { "EffectName" "Hero_DragonKnight.ProjectileImpact" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_movement_speed" } } "modifier_blue_dragon_datadriven" { "IsHidden" "1" "IsPurgable" "0" "AllowIllusionDuplicate" "1" "OnCreated" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_blue.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapStart" "projectile_model" "particles/units/heroes/hero_dragon_knight/dragon_knight_elder_dragon_frost.vpcf" } "ApplyModifier" { "ModifierName" "modifier_corrosive_breath_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_splash_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } "ApplyModifier" { "ModifierName" "modifier_frost_breath_attack_datadriven" "Target" "CASTER" "Duration" "%duration" } } "OnDestroy" { "FireEffect" { "EffectName" "particles/units/heroes/hero_dragon_knight/dragon_knight_transform_blue.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "ModelSwapEnd" } } "OnAttack" { "FireSound" { "EffectName" "Hero_DragonKnight.ElderDragonShoot3.Attack" "Target" "CASTER" } } "OnAttacklanded" { "FireSound" { "EffectName" "Hero_DragonKnight.ProjectileImpact" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%bonus_movement_speed" } } "modifier_corrosive_breath_attack_datadriven" { "IsPurgable" "0" "IsBuff" "1" "OnAttackLanded" { "ApplyModifier" { "ModifierName" "modifier_corrosive_breath_datadriven" "Target" "TARGET" "Duration" "%corrosive_breath_duration" } } } "modifier_splash_attack_datadriven" { "IsPurgable" "0" "IsBuff" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_dragon_knight/elder_dragon_form.lua" "Function" "Splash" } } } "modifier_frost_breath_attack_datadriven" { "IsPurgable" "0" "IsBuff" "1" "OnAttackLanded" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%frost_aoe" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" } "Action" { "ApplyModifier" { "ModifierName" "modifier_frost_breath_slow_datadriven" "Target" "TARGET" "Duration" "%frost_duration" } } } } } "modifier_corrosive_breath_datadriven" { "IsDebuff" "1" "ThinkInterval" "1.0" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%corrosive_breath_damage" } } } "modifier_frost_breath_slow_datadriven" { "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%frost_bonus_movement_speed" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%frost_bonus_attack_speed" } } } } // Rewrite of the Drow Ranger Frost Arrows // Author: kritth // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven "frost_arrows_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "drow_ranger_frost_arrows" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "625" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0 0.0" "AbilityDuration" "1.5 1.5 1.5 1.5" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0 0 0 0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "12 12 12 12" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "frost_arrows_movement_speed" "-15 -30 -45 -60" } "02" { "var_type" "FIELD_FLOAT" "frost_arrows_hero_duration_tooltip" "1.5" } "03" { "var_type" "FIELD_FLOAT" "frost_arrows_creep_duration" "7.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts" "particle" "particles/units/heroes/hero_drow/drow_frost_arrow.vpcf" "particle" "particles/generic_gameplay/generic_slowed_cold.vpcf" } "Modifiers" { "modifier_frost_arrows_caster_datadriven" { "Passive" "1" "IsHidden" "1" "IsPurgable" "0" "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" { "Target" { "Center" "TARGET" "Type" "DOTA_UNIT_TARGET_BASIC" } "ModifierName" "modifier_frost_arrows_slow_datadriven" "Duration" "%frost_arrows_creep_duration" } "ApplyModifier" { "Target" { "Center" "TARGET" "Type" "DOTA_UNIT_TARGET_HERO" } "ModifierName" "modifier_frost_arrows_slow_datadriven" "Duration" "%frost_arrows_hero_duration" } } } "modifier_frost_arrows_slow_datadriven" { "IsHidden" "0" "EffectName" "particles/generic_gameplay/generic_slowed_cold.vpcf" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%frost_arrows_movement_speed" } } } } // Rewrite of the Drow Ranger Markshmanship // Author: kritth // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_drow_ranger/marksmanship.lua "marksmanship_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "drow_ranger_marksmanship" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "marksmanship_agility_bonus" "40 60 80" } "02" { "var_type" "FIELD_INTEGER" "radius" "400" } // Extra variables "03" { "var_type" "FIELD_FLOAT" "think_interval" "0.1" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_drow/drow_marksmanship.vpcf" "particle" "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf" } "Modifiers" { "modifier_marksmanship_passive_datadriven" { "Passive" "1" "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "%think_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_drow_ranger/marksmanship.lua" "Function" "marksmanship_detection" } } } "modifier_marksmanship_effect_datadriven" { "IsPurgable" "0" "OnCreated" { "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_drow/drow_marksmanship_start.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_attack1" } } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_drow/drow_marksmanship.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "02" "150 150 150" } } } "Properties" { "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%marksmanship_agility_bonus" } } } } // Rewrite of the Drow Ranger Trueshot aura // Author: kritth, Pizzalol // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_drow_ranger/trueshot.lua "trueshot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityTextureName" "drow_ranger_trueshot" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0 0 0 0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "100" "AbilityDuration" "5.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "trueshot_ranged_damage" "20 26 32 38" } // extra variable "02" { "var_type" "FIELD_INTEGER" "global_radius" "9000" } } // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_trueshot_aura_creep_datadriven" "Duration" "%AbilityDuration" } } "Modifiers" { "modifier_trueshot_aura_datadriven" { "Passive" "1" "IsPurgable" "0" "IsHidden" "1" "Aura" "modifier_trueshot_effect_datadriven" "Aura_Radius" "%global_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_RANGED_ONLY" } "modifier_trueshot_aura_creep_datadriven" { "IsPurgable" "0" "IsHidden" "0" "Aura" "modifier_trueshot_effect_datadriven" "Aura_Radius" "%global_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Aura_Types" "DOTA_UNIT_TARGET_BASIC" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_RANGED_ONLY" } "modifier_trueshot_effect_datadriven" { "IsPurgable" "0" "IsHidden" "0" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_drow_ranger/trueshot.lua" "Function" "trueshot_initialize" "trueshot_modifier" "modifier_trueshot_effect_datadriven" "trueshot_damage_modifier" "modifier_trueshot_damage_datadriven" } } "ThinkInterval" "0.25" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_drow_ranger/trueshot.lua" "Function" "trueshot_initialize" "trueshot_modifier" "modifier_trueshot_effect_datadriven" "trueshot_damage_modifier" "modifier_trueshot_damage_datadriven" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_trueshot_damage_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD | DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD" } } } } "modifier_trueshot_damage_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "1" } } } } // Rewrite of the Drow Ranger Wave of silence // Author: kritth // Date: January 27, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_drow_ranger/wave_of_silence.lua "wave_of_silence_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "drow_ranger_wave_of_silence" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "wave_speed" "2000.0" } "02" { "var_type" "FIELD_INTEGER" "wave_range_tooltip" "900" } "03" { "var_type" "FIELD_INTEGER" "wave_width" "250" } "04" { "var_type" "FIELD_FLOAT" "silence_duration" "3 4 5 6" } "05" { "var_type" "FIELD_FLOAT" "knockback_distance_max" "350" } "06" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.6 0.7 0.8 0.9" } "07" { "var_type" "FIELD_INTEGER" "knockback_height" "0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts" "particle" "particles/units/heroes/hero_drow/drow_silence_wave.vpcf" "particle" "particles/generic_gameplay/generic_silence.vpcf" } "OnSpellStart" { "LinearProjectile" { "Target" "POINT" "EffectName" "particles/units/heroes/hero_drow/drow_silence_wave.vpcf" "MoveSpeed" "%wave_speed" "StartRadius" "%wave_width" "StartPosition" "attach_attack1" "EndRadius" "%wave_width" "FixedDistance" "%wave_range_tooltip" "TargetTeams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "TargetTypes" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" "TargetFlags" "DOTA_UNIT_TARGET_FLAG_NONE" "HasFrontalCone" "0" } "FireSound" { "EffectName" "Hero_DrowRanger.Silence" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "ModifierName" "modifier_wave_of_silence_debuff_datadriven" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_drow_ranger/wave_of_silence.lua" "Function" "modifier_wave_of_silence_knockback" "height" "%knockback_height" "duration" "%knockback_duration" "distance" "%knockback_distance_max" "range" "%wave_range_tooltip" } } "Modifiers" { "modifier_wave_of_silence_debuff_datadriven" { "Duration" "%silence_duration" "EffectName" "particles/generic_gameplay/generic_silence.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Ember Spirit Fire Remnant ability // Author: kritth // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ember_spirit/fire_remnant.lua // // KV files: // scripts/npc/abilities/ember_spirit/fire_remnant_datadriven.txt "activate_fire_remnant_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityType" "DOTA_ABILITY_TYPE_BASIC" "MaxLevel" "3" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ember_spirit_activate_fire_remnant" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "99999" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed_multiplier" "250" } "02" { "var_type" "FIELD_INTEGER" "max_charges" "3" } "03" { "var_type" "FIELD_FLOAT" "charge_restore_time" "35.0" } "04" { "var_type" "FIELD_INTEGER" "damage" "100 150 200" } "05" { "var_type" "FIELD_INTEGER" "radius" "450" } "06" { "var_type" "FIELD_INTEGER" "speed" "1300" } // Extra variable "07" { "var_type" "FIELD_FLOAT" "timer_upper_bound" "0.4" } "08" { "var_type" "FIELD_INTEGER" "tree_radius" "200" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_remnant_dash.vpcf" } "OnSpellStart" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_activate_fire_remnant_buff_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/fire_remnant.lua" "Function" "fire_remnant_activate" "Target" "POINT" } } "Modifiers" { "modifier_activate_fire_remnant_buff_datadriven" { "IsHidden" "0" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_remnant_dash.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "0.04" "OnIntervalThink" { "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_activate_fire_remnant_destroy_tree_datadriven" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_activate_fire_remnant_destroy_tree_datadriven" } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_activate_fire_remnant_destroy_tree_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "0.04" "OnCreated" { "DestroyTrees" { "Target" "TARGET" "Radius" "%tree_radius" } } } } } // Rewrite of the Ember Spirit Fire Remnant ability // Author: kritth // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // NOTE: Particles for remnant is wrong // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ember_spirit/fire_remnant.lua // // KV files: // scripts/npc/abilities/ember_spirit/activate_fire_remnant_datadriven.txt "fire_remnant_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "ember_spirit_fire_remnant" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "speed_multiplier" "2.5" } "02" { "var_type" "FIELD_INTEGER" "max_charges" "3" } "03" { "var_type" "FIELD_FLOAT" "charge_restore_time" "35.0" } "04" { "var_type" "FIELD_INTEGER" "damage" "100 150 200" } "05" { "var_type" "FIELD_INTEGER" "radius" "450" } "06" { "var_type" "FIELD_FLOAT" "duration" "45.0" } // Extra variables "07" { "var_type" "FIELD_INTEGER" "vision_radius" "0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_fire_remnant.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/fire_remnant.lua" "Function" "fire_remnant_upgrade" "ability_name" "activate_fire_remnant_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/fire_remnant.lua" "Function" "fire_remnant_charge" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/fire_remnant.lua" "Function" "fire_remnant_add_location" "Target" "POINT" } } "Modifiers" { "modifier_fire_remnant_counter_datadriven" { "Purgable" "0" } "modifier_fire_remnant_counter_cooldown_datadriven" { "Purgable" "0" "Duration" "%duration" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" } // Modifiers for remnant "modifier_fire_remnant_dummy_animation_override_datadriven" { "OverrideAnimation" "ACT_DOTA_RUN" } "modifier_fire_remnant_dummy_buff_datadriven" { "Duration" "%duration" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_fire_remnant.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "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_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Ember Spirit Flame Guard ability // Author: kritth // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // NOTE: This ability will only absorb damage whose AbilityUnitDamageType field is marked as DAMAGE_TYPE_MAGICAL // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ember_spirit/flame_guard.lua "flame_guard_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "ember_spirit_flame_guard" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "80 90 100 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "8.0 12.0 16.0 20.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "400" } "03" { "var_type" "FIELD_INTEGER" "absorb_amount" "50 200 350 500" } "04" { "var_type" "FIELD_FLOAT" "tick_interval" "0.2" } "05" { "var_type" "FIELD_INTEGER" "damage_per_second" "30 40 50 60" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_flameguard.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_EmberSpirit.FlameGuard.Cast" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_flame_guard_buff_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_flame_guard_buff_datadriven" } } "Modifiers" { "modifier_flame_guard_buff_datadriven" { "Duration" "%duration" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_flameguard.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" "TARGET" "attach_origin" } } "FireSound" { "Target" "TARGET" "EffectName" "Hero_EmberSpirit.FlameGuard.Loop" } "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/flame_guard.lua" "Function" "flame_guard_init" } } "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/flame_guard.lua" "Function" "flame_guard_on_take_damage" "Damage" "%attack_damage" "modifier" "modifier_flame_guard_buff_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/flame_guard.lua" "Function" "flame_guard_stop_listening" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "ActOnTargets" { "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" } "Action" { "Damage" { "Target" "TARGET" "Damage" "%damage_per_second * %tick_interval" "Type" "DAMAGE_TYPE_MAGICAL" } } } } } } } // Rewrite of the Ember Spirit Searing Chains ability // Author: kritth // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ember_spirit/searing_chains.lua "searing_chains_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "ember_spirit_searing_chains" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "14.0 12.0 10.0 8.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "1.0 2.0 2.0 3.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "400" } "03" { "var_type" "FIELD_INTEGER" "chains_damage" "80 60 120 100" } "04" { "var_type" "FIELD_INTEGER" "total_damage_tooltip" "80 120 240 300" } "05" { "var_type" "FIELD_FLOAT" "tick_interval" "1.0" } "06" { "var_type" "FIELD_INTEGER" "unit_count" "2" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_searing_chains_cast.vpcf" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_searing_chains_debuff.vpcf" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_searing_chains_start.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_EmberSpirit.SearingChains.Cast" } "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_searing_chains_cast.vpcf" "EffectAttachType" "follow_origin" "ControlPoints" { "01" "%radius 0 0" } } "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/searing_chains.lua" "Function" "searing_chains_pin_point" } } "Modifiers" { "modifier_searing_chains_debuff_datadriven" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_searing_chains_debuff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_EmberSpirit.SearingChains.Target" } } "ThinkInterval" "%tick_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Damage" "%chains_damage" "Type" "DAMAGE_TYPE_MAGICAL" } } "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Ember Spirit Sleight of Fist ability // Author: kritth // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_ember_spirit/sleight_of_fist.lua "sleight_of_fist_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityCastRange" "700" "AbilityCastPoint" "0" "FightRecapLevel" "1" "AbilityTextureName" "ember_spirit_sleight_of_fist" "AOERadius" "%radius" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30.0 22.0 14.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250 350 450 550" } "02" { "var_type" "FIELD_INTEGER" "bonus_hero_damage" "20 40 60 80" } "03" { "var_type" "FIELD_FLOAT" "attack_interval" "0.2" } "04" { "var_type" "FIELD_INTEGER" "creep_damage_penalty" "-50" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_ember_spirit.vsndevts" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleight_of_fist_cast.vpcf" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleight_of_fist_caster.vpcf" // for dummy "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleight_of_fist_targetted_marker.vpcf" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleightoffist_tgt.vpcf" "particle" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleightoffist_trail.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Hero_EmberSpirit.SleightOfFist.Cast" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_sleight_of_fist_caster_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_ember_spirit/sleight_of_fist.lua" "Function" "sleight_of_fist_init" "Target" "POINT" } } "Modifiers" { "modifier_sleight_of_fist_caster_datadriven" { "IsPurgable" "0" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_sleight_of_fist_dummy_datadriven" { "IsPurgable" "0" "IsHidden" "1" "OnCreated" { "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleight_of_fist_caster.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_hitloc" } } } "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_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_sleight_of_fist_target_datadriven" { "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_ember_spirit/ember_spirit_sleight_of_fist_targetted_marker.vpcf" "EffectAttachType" "follow_overhead" } "modifier_sleight_of_fist_target_hero_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_hero_damage" } } "modifier_sleight_if_fist_target_creep_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE" "%creep_damage_penalty" } } } } // Rewrite of the Enigma Black Hole ability // Author: YOLOSPAGHETTI // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_enigma/black_hole.lua "black_hole_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "enigma_black_hole" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_enigma/enigma_blackhole.vpcf" "soundfile" "sounds/weapons/hero/enigma/black_hole_loop.vsnd" "soundfile" "sounds/weapons/hero/enigma/black_hole_stop.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "275" "AbilityCastPoint" "0.3 0.3 0.3" "AbilityChannelTime" "4.0 4.0 4.0" "AoERadius" "420" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "200.0 180.0 160.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "275 325 375" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "pull_speed" "40 40 40" } "02" { "var_type" "FIELD_INTEGER" "far_radius" "420" } "03" { "var_type" "FIELD_INTEGER" "near_radius" "160" } "04" { "var_type" "FIELD_INTEGER" "damage" "55 110 165" } "05" { "var_type" "FIELD_FLOAT" "move_tick_rate" "0.1 0.1 0.1" } "06" { "var_type" "FIELD_FLOAT" "damage_tick_rate" "1.0 1.0 1.0" } "07" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.0 4.0" } "08" { "var_type" "FIELD_INTEGER" "vision_radius" "800 800 800" } } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_black_hole_datadriven" "Target" "POINT" } "RunScript" { "ScriptFile" "heroes/hero_enigma/black_hole.lua" "Function" "GiveVision" } } "OnChannelFinish" { "RunScript" { "ScriptFile" "heroes/hero_enigma/black_hole.lua" "Function" "ChannelEnd" } } "Modifiers" { "modifier_black_hole_datadriven" { "Aura" "modifier_black_hole_debuff" "Aura_Radius" "%far_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Duration" "%duration" "OnCreated" { "FireSound" { "EffectName" "Hero_Enigma.Black_Hole" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_enigma/enigma_blackhole.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%far_radius %far_radius %far_radius" } } "RunScript" { "ScriptFile" "heroes/hero_enigma/black_hole.lua" "Function" "MoveUnits" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_Enigma.Black_Hole.Stop" "Target" "TARGET" } } "ThinkInterval" "%move_tick_rate" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_enigma/black_hole.lua" "Function" "MoveUnits" } } } "modifier_black_hole_debuff" { "IsPurgable" "0" "OverrideAnimation" "ACT_DOTA_FLAIL" "ThinkInterval" "%damage_tick_rate" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Enigma Demonic Conversion ability // Author: YOLOSPAGHETTI // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // Notes: Works on all creeps except for ancients // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_enigma/demonic_conversion.lua "demonic_conversion_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS | DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityTextureName" "enigma_demonic_conversion" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "sounds/weapons/hero/enigma/demonic_conversion.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35.0 35.0 35.0 35.0" "AbilityDuration" "35.0 35.0 35.0 35.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "170 170 170 170" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "spawn_count" "3 3 3 3" } "02" { "var_type" "FIELD_INTEGER" "split_attack_count" "6 6 6 6" } "03" { "var_type" "FIELD_INTEGER" "eidolon_hp_tooltip" "180 200 220 240" } "04" { "var_type" "FIELD_FLOAT" "life_extension" "2.0 2.0 2.0 2.0" } "05" { "var_type" "FIELD_INTEGER" "eidolon_dmg_tooltip" "20 28 38 47" } "06" { "var_type" "FIELD_FLOAT" "duration_tooltip" "35.0" } "07" { "var_type" "FIELD_INTEGER" "xp_radius" "1300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Enigma.Demonic_Conversion" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_enigma/demonic_conversion.lua" "Function" "CreateEidelons" } } "Modifiers" { "modifier_check_attacks" { "IsHidden" "1" "OnAttack" { "RunScript" { "ScriptFile" "heroes/hero_enigma/demonic_conversion.lua" "Function" "CheckAttacks" } } } } } // Rewrite of the Enigma Malefice ability // Author: YOLOSPAGHETTI // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven "malefice_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "enigma_malefice" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/generic_gameplay/generic_stunned.vpcf" "particle" "particles/units/heroes/hero_enigma/enigma_malefice.vpcf" "soundfile" "sounds/weapons/hero/enigma/malefice.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "15.0 15.0 15.0 15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "110 130 150 160" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.33" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "tick_rate" "2.0 2.0 2.0 2.0" } "02" { "var_type" "FIELD_FLOAT" "stun_duration" "0.25 0.5 0.75 1.0" } "03" { "var_type" "FIELD_INTEGER" "damage" "30 50 70 90" } "04" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.0 4.0 4.0" } "05" { "var_type" "FIELD_FLOAT" "tooltip_stuns" "3 3 3 3" } } "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_malefice_datadriven" "Target" "TARGET" } } "Modifiers" { "modifier_malefice_datadriven" { "Duration" "%duration" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_enigma/enigma_malefice.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_malefice_stun" "Target" "TARGET" } } "ThinkInterval" "%tick_rate" "OnIntervalThink" { "ApplyModifier" { "ModifierName" "modifier_malefice_stun" "Target" "TARGET" } } } "modifier_malefice_stun" { "Duration" "%stun_duration" "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "OnCreated" { "FireSound" { "EffectName" "Hero_Enigma.Malefice" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Enigma Midnight Pulse ability // Author: YOLOSPAGHETTI // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_engima/midnight_pulse.lua "midnight_pulse_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AoERadius" "550" "FightRecapLevel" "1" "AbilityTextureName" "enigma_midnight_pulse" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_enigma/enigma_midnight_pulse.vpcf" "soundfile" "sounds/weapons/hero/enigma/midnight_pulse.vsnd" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 110 125 140" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "550" } "02" { "var_type" "FIELD_FLOAT" "damage_percent" "3 3.75 4.5 5.25" } "03" { "var_type" "FIELD_FLOAT" "duration" "11" } "04" { "var_type" "FIELD_FLOAT" "tick_rate" "1.0 1.0 1.0 1.0" } } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_midnight_pulse_datadriven" "Target" "POINT" } } "Modifiers" { "modifier_midnight_pulse_datadriven" { "Aura" "modifier_midnight_pulse_debuff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Duration" "%duration" "OnCreated" { "FireSound" { "EffectName" "Hero_Enigma.Midnight_Pulse" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_enigma/enigma_midnight_pulse.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" } } "DestroyTrees" { "Target" "TARGET" "Radius" "%radius" } } } "modifier_midnight_pulse_debuff" { "IsDebuff" "1" "ThinkInterval" "%tick_rate" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_engima/midnight_pulse.lua" "Function" "ApplyDPS" } } } } } // Rewrite of the Faceless Void Backtrack ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_faceless_void/backtrack.lua "backtrack_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "faceless_void_backtrack" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_faceless_void/faceless_void_backtrack.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "dodge_chance_pct" "10 15 20 25" } } "Modifiers" { "modifier_backtrack_datadriven" { "Passive" "1" "IsHidden" "1" "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_faceless_void/backtrack.lua" "Function" "BacktrackHealth" } } "OnTakeDamage" { "Random" { "Chance" "%dodge_chance_pct" "OnSuccess" { "FireEffect" { "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_backtrack.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_faceless_void/backtrack.lua" "Function" "BacktrackHeal" } } } } } } } // Rewrite of the Faceless Void Chronosphere ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven/Lua // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_faceless_void/chronosphere.lua // scripts/vscripts/heroes/hero_faceless_void/modifiers/modifier_chronosphere_speed_lua.lua // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "chronosphere_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "faceless_void_chronosphere" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_chronosphere.vpcf" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_chrono_speed.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.35 0.35 0.35" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "130.0 115.0 100.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 225 300" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "425" } "02" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.5 5.0" } "03" { "var_type" "FIELD_FLOAT" "duration_scepter" "4.0 5.0 6.0" } "04" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "60.0 60.0 60.0" } "05" { "var_type" "FIELD_INTEGER" "vision_radius" "475" } // Extra "06" { "var_type" "FIELD_FLOAT" "aura_interval" "0.1" } // If you want the Chronosphere to ignore Faceless Void then keep it at 1 otherwise set it to 0 "07" { "var_type" "FIELD_INTEGER" "ignore_void" "1" } "08" { "var_type" "FIELD_INTEGER" "speed" "1000" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_FacelessVoid.Chronosphere" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_faceless_void/chronosphere.lua" "Function" "Chronosphere" "Target" "POINT" "dummy_aura" "modifier_chronosphere_aura_datadriven" } } "Modifiers" { // Cosmetic "modifier_chronosphere_tooltip_datadriven" { "IsDebuff" "1" "IsPurgable" "0" } "modifier_chronosphere_aura_datadriven" { "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_chronosphere.vpcf" "EffectAttachType" "attach_origin" "Target" "TARGET" "ControlPoints" { "01" "%radius %radius 0" } } } "ThinkInterval" "%aura_interval" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_ALL" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY | DOTA_UNIT_TARGET_TEAM_ENEMY" "Flags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "Radius" "%radius" } "Action" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_faceless_void/chronosphere.lua" "Function" "ChronosphereAura" "Target" "TARGET" "aura_modifier" "modifier_chronosphere_datadriven" } } } } "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_chronosphere_datadriven" { "IsHidden" "1" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_chronosphere_tooltip_datadriven" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_chronosphere_tooltip_datadriven" "Target" "TARGET" } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Faceless Void Time Dilation ability // Author: YOLOSPAGHETTI // Date: February 7, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_faceless_void/time_dilation.lua "time_dilation_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "faceless_void_time_dilation" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "sounds/weapons/hero/faceless_void/time_dilation_cast.vsnd" "soundfile" "sounds/weapons/hero/faceless_void/time_dilation_target.vsnd" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_timedialate.vpcf" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_dialatedebuf.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.1 0.1 0.1 0.1" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "36.0 30.0 24.0 18.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "duration" "6 8 10 12" } "02" { "var_type" "FIELD_INTEGER" "radius" "725" } "03" { "var_type" "FIELD_FLOAT" "move_speed_slow" "-7.0 -8.0 -9.0 -10.0" } "04" { "var_type" "FIELD_INTEGER" "attack_speed_slow" "-7 -8 -9 -10" } } "OnSpellStart" { // Name? //"FireSound" //{ //"EffectName" "Hero_FacelessVoid.TimeDilation" //"Target" "CASTER" //} "FireEffect" { "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_timedialate.vpcf" "EffectAttachType" "follow_origin" "EffectRadius" "%radius" "Target" "CASTER" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" } } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_time_dilation_cooldown_freeze" } "RunScript" { "ScriptFile" "heroes/hero_faceless_void/time_dilation.lua" "Function" "CooldownFreeze" } } } } "Modifiers" { "modifier_time_dilation_cooldown_freeze" { "IsDebuff" "1" "Duration" "%duration" "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_dialatedebuf.vpcf" "EffectAttachType" "follow_origin" // Name? //"FireSound" //{ //"EffectName" "Hero_FacelessVoid.TimeDilation_Target" //"Target" "CASTER" //} "OnAbilityExecuted" { "DelayedAction" { "Delay" "0.01" "Action" { "RunScript" { "ScriptFile" "heroes/hero_faceless_void/time_dilation.lua" "Function" "SlowCooldown" } } } } } "modifier_time_dilation_slow" { "IsHidden" "1" "IsDebuff" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_slow" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_slow" } } } } // Rewrite of the Faceless Void Time Lock ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven "time_lock_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "faceless_void_time_lock" // Precache //------------------------------------------------------------------------------------------------------------- "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" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "1.0" } "02" { "var_type" "FIELD_FLOAT" "duration_creep" "2.0" } "03" { "var_type" "FIELD_INTEGER" "chance_pct" "10 15 20 25" } "04" { "var_type" "FIELD_INTEGER" "bonus_damage" "40 50 60 70" } } "Modifiers" { "modifier_time_lock_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "Random" { "Chance" "%chance_pct" "PseudoRandom" "DOTA_PSEUDO_RANDOM_FACELESS_BASH" "OnSuccess" { "FireSound" { "EffectName" "Hero_FacelessVoid.TimeLockImpact" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_time_lock_stun_datadriven" "Duration" "%duration" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_HERO" } } "ApplyModifier" { "ModifierName" "modifier_time_lock_stun_datadriven" "Duration" "%duration_creep" "Target" { "Center" "TARGET" "Types" "DOTA_UNIT_TARGET_BASIC" } } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%bonus_damage" } } } } } "modifier_time_lock_stun_datadriven" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "StatusEffectName" "particles/status_fx/status_effect_faceless_chronosphere.vpcf" "StatusEffectPriority" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Faceless Void Time Walk ability // Author: Pizzalol, YOLOSPAGHETTI // Date: February 7, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_faceless_void/time_walk.lua "time_walk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "faceless_void_time_walk" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_faceless_void.vsndevts" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_time_walk_preimage.vpcf" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_time_walk_slow.vpcf" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_chrono_speed.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "625" "AbilityCastPoint" "0.2 0.2 0.2 0.2" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "24.0 18.0 12.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.25" // mostly about the blink // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "speed" "3000" } "02" { "var_type" "FIELD_FLOAT" "backtrack_time" "2.0" } "03" { "var_type" "FIELD_INTEGER" "tooltip_range" "625" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_FacelessVoid.TimeWalk" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_time_walk_preimage.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_origin" } "ControlPoints" { "01" "POINT" } } "RunScript" { "ScriptFile" "heroes/hero_faceless_void/time_walk.lua" "Function" "TimeWalk" "Target" "POINT" "modifier" "modifier_time_walk_datadriven" } "ApplyMotionController" // For this: gfycat.com/BraveHideousGiantschnauzer -> check: bit.ly/1KWulqA { "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "ScriptFile" "heroes/hero_faceless_void/time_walk.lua" "HorizontalControlFunction" "TimeWalkMotion" } "RunScript" { "ScriptFile" "heroes/hero_faceless_void/time_walk.lua" "Function" "RemoveDamage" "BacktrackTime" "%backtrack_time" } } "Modifiers" { "modifier_damage_checker_datadriven" { "Passive" "1" "IsHidden" "1" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_faceless_void/time_walk.lua" "Function" "CalculateDamage" "DamageTaken" "%attack_damage" "BacktrackTime" "%backtrack_time" } } } "modifier_time_walk_datadriven" { "IsHidden" "1" // Use this if you want to achieve a "time walk" effect for heroes other than faceless "EffectName" "particles/units/heroes/hero_faceless_void/faceless_void_chrono_speed.vpcf" "EffectAttachType" "follow_origin" "States" { "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Huskar Berserkers Blood ability // Author: Bude // Date: February 14, 2016 // Version: 6.85 // Type: Datadriven/Lua // NOTES: Particles and Effects do not work at all // Model size increase is probably inaccurate and also not very smooth // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_huskar/berserkers_blood.lua // scripts/vscripts/heroes/hero_huskar/modifiers/modifier_berserkers_blood_lua.lua "berserkers_blood_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "huskar_berserkers_blood" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attack_speed_bonus_per_stack" "14 16 18 20" } "02" { "var_type" "FIELD_INTEGER" "resistance_per_stack" "3 4 5 6" } "03" { "var_type" "FIELD_FLOAT" "model_size_per_stack" "0.02" } "04" { "var_type" "FIELD_FLOAT" "hurt_health_ceiling" "0.87" } "05" { "var_type" "FIELD_FLOAT" "hurt_health_floor" "0.03" } "06" { "var_type" "FIELD_FLOAT" "hurt_health_step" "0.07" } } // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_huskar/huskar_berserker_blood_hero_effect.vpcf" "particle" "particles/units/heroes/hero_huskar/huskar_berserkers_blood_glow.vpcf" } //Datadriven //------------------------------------------------------------------------------------------------------------- "OnUpgrade" { //ApplyLuaModifier "RunScript" { "ModifierName" "modifier_huskar_berserkers_blood_lua" "ScriptFile" "heroes/hero_huskar/berserkers_blood.lua" "Function" "ApplyLuaModifier" } } } // Rewrite of the Huskar Burning Spear ability // Author: Bude // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_huskar/burning_spear.lua "burning_spear_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "huskar_burning_spear" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "450" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0.0 0.0 0.0 0.0" "AbilityDuration" "8" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "5 10 15 20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0 0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_cost" "15" } } // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_huskar.vsndevts" "particle" "particles/units/heroes/hero_huskar/huskar_burning_spear.vpcf" "particle" "particles/units/heroes/hero_huskar/huskar_burning_spear_debuff.vpcf" } // Datadriven //------------------------------------------------------------------------------------------------------------- "Modifiers" { // Modifier to handle OrbEffect-Behaviour "modifier_burning_spear_datadriven" { // Will always stay on the caster once the ability is upgraded // Hidden "Passive" "1" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" // OrbEffect-Behaviour "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_huskar/huskar_burning_spear.vpcf" "CastAttack" "1" } // HealthCost is handled here "OnOrbFire" { "FireSound" { "EffectName" "Hero_Huskar.Burning_Spear.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_huskar/burning_spear.lua" "Function" "DoHealthCost" } } // Apply the hidden dot modifier to the target here // Call IncreaseStackCount to keep stack count on modifier_burning_spear_datadriven_debuff_counter updated "OnOrbImpact" { "FireSound" { "EffectName" "Hero_Huskar.Burning_Spear" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_burning_spear_datadriven_debuff" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_huskar/burning_spear.lua" "Function" "IncreaseStackCount" "modifier_counter_name" "modifier_burning_spear_datadriven_debuff_counter" } } } // Modifier to show stack count // Only visual "modifier_burning_spear_datadriven_debuff_counter" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "0" } // Modifier to handle the dot "modifier_burning_spear_datadriven_debuff" { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "0" "Duration" "%AbilityDuration" // Allow multiple instances of this modifier on the target // Modifiers stack additivly (dmg) with independent durations "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "EffectName" "particles/units/heroes/hero_huskar/huskar_burning_spear_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "1.0" "OnIntervalThink" { // Damage of %AbilityDamage every %ThinkInterval seconds "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } } // Updating visual modifier's stack count "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_huskar/burning_spear.lua" "Function" "DecreaseStackCount" "modifier_counter_name" "modifier_burning_spear_datadriven_debuff_counter" } } } } } // Rewrite of the Huskar Inner Vitality ability // Author: Bude // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven/Lua // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_huskar/inner_vitality.lua // scripts/vscripts/heroes/hero_huskar/modifiers/modifier_inner_vitality_lua.lua "inner_vitality_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityTextureName" "huskar_inner_vitality" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22 18 14 10" "AbilityDuration" "16 16 16 16" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "170 170 170 170" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // already gets credit for the healing // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "heal" "10" } "02" { "var_type" "FIELD_FLOAT" "attrib_bonus" "0.05 0.10 0.15 0.20" } "03" { "var_type" "FIELD_FLOAT" "hurt_attrib_bonus" "0.20 0.40 0.60 0.80" } "04" { "var_type" "FIELD_FLOAT" "hurt_percent" "0.40" } "05" { "var_type" "FIELD_INTEGER" "tooltip_attrib_bonus" "5 10 15 20" } "06" { "var_type" "FIELD_INTEGER" "tooltip_hurt_attrib_bonus" "20 45 60 80" } } // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_huskar.vsndevts" "particle" "particles/units/heroes/hero_huskar/huskar_inner_vitality.vpcf" "particle" "particles/units/heroes/hero_huskar/huskar_inner_vitality_cast.vpcf" } // Datadriven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "FireSound" { "EffectName" "Hero_Huskar.Inner_Vitality" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_huskar/huskar_inner_vitality_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" } } //ApplyLuaModifier "RunScript" { "ModifierName" "modifier_huskar_inner_vitality_lua" "ScriptFile" "heroes/hero_huskar/inner_vitality.lua" "Function" "ApplyLuaModifier" "Target" "TARGET" } } } // Rewrite of the Huskar Life Break ability // Author: Bude // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Modifier that keeps huskar from attacking does not get removed if Life Break is cancelled prematurely // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_huskar/life_break.lua "life_break_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "huskar_life_break" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0 0 0" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityDuration" "4 5 6" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "health_cost_percent" "0.35" } "02" { "var_type" "FIELD_FLOAT" "health_damage" "0.35" } "03" { "var_type" "FIELD_FLOAT" "health_damage_scepter" "0.65" } "04" { "var_type" "FIELD_INTEGER" "charge_speed" "1000" } "05" { "var_type" "FIELD_INTEGER" "tooltip_health_damage" "35" } "06" { "var_type" "FIELD_INTEGER" "tooltip_health_cost_percent" "35" } "07" { "var_type" "FIELD_INTEGER" "movespeed_slow" "-40 -50 -60" } "08" { "var_type" "FIELD_FLOAT" "slow_duration_tooltip" "4 5 6" } "09" { "var_type" "FIELD_INTEGER" "tooltip_health_damage_scepter" "65" } "10" { "var_type" "FIELD_FLOAT" "Costoldown_scepter" "4" } "11" { "var_type" "FIELD_FLOAT" "max_distance" "1400" } } // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_huskar.vsndevts" "particle" "particles/units/heroes/hero_huskar/huskar_life_break.vpcf" "particle" "particles/units/heroes/hero_huskar/huskar_life_break_cast.vpcf" "particles" "particles/status_fx/status_effect_huskar_lifebreak.vpcf" } // Datadriven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "ApplyModifier" { "ModifierName" "modifier_huskar_life_break_datadriven" "Target" "CASTER" "Duration" "1" } "RunScript" { "ScriptFile" "heroes/hero_huskar/life_break.lua" "Function" "LifeBreak" "ModifierName" "modifier_huskar_life_break_datadriven" "ModifierName_Debuff" "modifier_huskar_life_break_datadriven_debuff" } "FireSound" { "EffectName" "Hero_Huskar.Life_Break" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_huskar/huskar_life_break_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyMotionController" // For this: gfycat.com/BraveHideousGiantschnauzer -> check: bit.ly/1KWulqA { "Target" "CASTER" "ScriptFile" "heroes/hero_huskar/life_break.lua" "HorizontalControlFunction" "JumpHorizonal" "VerticalControlFunction" "JumpVertical" } } "Modifiers" { "modifier_huskar_life_break_datadriven" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "Duration" "1" "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_huskar_life_break_datadriven_debuff" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "Duration" "%AbilityDuration" "StatusEffectName" "particles/status_fx/status_effect_huskar_lifebreak.vpcf" "StatusEffectPriority" "15" //What this "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_slow" } } } } // Rewrite of the Invoker Alacrity ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/alacrity.lua // // KV files: // scripts/npc/abilities/invoker/wex_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt "alacrity_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "1" "HotKeyOverride" "Z" "AbilityTextureName" "invoker_alacrity" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_alacrity.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_alacrity_buff.vpcf" "particle" "particles/status_fx/status_effect_alacrity.vpcf" } // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "650" "AbilityCastPoint" "0" "AbilityCooldown" "15" "AbilityManaCost" "45" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_attack_speed" "10 25 40 55 70 85 100 115" "levelkey" "wexlevel" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "10 25 40 55 70 85 100 115" "levelkey" "exortlevel" } "03" { "var_type" "FIELD_FLOAT" "duration" "9" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.Alacrity" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_alacrity_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_alacrity_datadriven" { "IsBuff" "1" "StatusEffectName" "particles/status_fx/status_effect_alacrity.vpcf" "StatusEffectPriority" "10" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_alacrity.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_alacrity_buff.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_invoker/alacrity.lua" "Function" "Alacrity" "speed_modifier" "modifier_alacrity_attack_speed_datadriven" "damage_modifier" "modifier_alacrity_damage_datadriven" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_alacrity_damage_datadriven" "Target" "TARGET" } "RemoveModifier" { "ModifierName" "modifier_alacrity_attack_speed_datadriven" "Target" "TARGET" } } } "modifier_alacrity_attack_speed_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "1" } } "modifier_alacrity_damage_datadriven" { "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "1" } } } } // Rewrite of Chaos Meteor // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/chaos_meteor.lua // // KV files: // scripts/npc/abilities/invoker/wex_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "chaos_meteor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "1" "HotKeyOverride" "D" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "invoker_chaos_meteor" "AbilityCastAnimation" "ACT_DOTA_CAST_CHAOS_METEOR" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "700" "AbilityCastPoint" "0" "AbilityCooldown" "55" "AbilityManaCost" "200" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Mainly about damage "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_chaos_meteor.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_chaos_meteor_fly.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_chaos_meteor_burn_debuff.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "land_time" "1.3" //The meteor lands on the ground this many seconds after it was cast. } "02" { "var_type" "FIELD_INTEGER" "area_of_effect" "275" } "03" { "var_type" "FIELD_INTEGER" "travel_distance" "465 615 780 930 1095 1245 1410" "levelkey" "wexlevel" } "04" { "var_type" "FIELD_INTEGER" "travel_speed" "300" } "05" { "var_type" "FIELD_FLOAT" "damage_interval" "0.5" //The main damage and a burn damage modifier is applied by the meteor this often. } "06" { "var_type" "FIELD_INTEGER" "vision_distance" "500" } "07" { "var_type" "FIELD_FLOAT" "end_vision_duration" "3.0" } "08" { "var_type" "FIELD_FLOAT" "main_damage" "57.5 75 92.5 110 127.5 145 162.5" "levelkey" "exortlevel" } "09" { "var_type" "FIELD_FLOAT" "burn_duration" "3.0" } "10" { "var_type" "FIELD_FLOAT" "burn_dps" "11.5 15 18.5 22 25.5 29 32.5" "levelkey" "exortlevel" } "11" { "var_type" "FIELD_FLOAT" "burn_dps_inverval" "1" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/chaos_meteor.lua" "Function" "invoker_chaos_meteor_datadriven_on_spell_start" "Target" "POINT" "LandTime" "%land_time" "TravelSpeed" "%travel_speed" "VisionDistance" "%vision_distance" "EndVisionDuration" "%end_vision_duration" } } "Modifiers" { "modifier_invoker_chaos_meteor_datadriven_unit_ability" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "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_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" } } "modifier_invoker_chaos_meteor_datadriven_main_damage" { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "ThinkInterval" "%damage_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_invoker/chaos_meteor.lua" "Function" "modifier_invoker_chaos_meteor_datadriven_main_damage_on_interval_think" "AreaOfEffect" "%area_of_effect" "BurnDuration" "%burn_duration" } } "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_invoker/chaos_meteor.lua" "Function" "modifier_invoker_chaos_meteor_datadriven_main_damage_on_interval_think" "AreaOfEffect" "%area_of_effect" } } } "modifier_invoker_chaos_meteor_datadriven_burn_damage" { "Duration" "%burn_duration" "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "ThinkInterval" "%burn_dps_inverval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_invoker/chaos_meteor.lua" "Function" "modifier_invoker_chaos_meteor_datadriven_burn_damage_on_interval_think" "BurnDPSInterval" "%burn_dps_inverval" } } } } } // Rewrite of the Invoker Cold Snap ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/cold_snap.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt "cold_snap_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "Y" "FightRecapLevel" "1" "AbilityTextureName" "invoker_cold_snap" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_cold_snap.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_cold_snap_status.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" } // Unit Targeting //------------------------------------------------------------------------------------------------------------- "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0" "AbilityCooldown" "20" "AbilityManaCost" "100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.15" // Applies multiple modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 3.5 4.0 4.5 5.0 5.5 6.0" "levelkey" "quaslevel" } "02" { "var_type" "FIELD_FLOAT" "freeze_duration" "0.4" } "03" { "var_type" "FIELD_FLOAT" "freeze_cooldown" "0.77 0.74 0.71 0.69 0.66 0.63 0.60" "levelkey" "quaslevel" } "04" { "var_type" "FIELD_FLOAT" "freeze_damage" "7 14 21 28 35 42 49" "levelkey" "quaslevel" } "05" { "var_type" "FIELD_FLOAT" "damage_trigger" "10.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.ColdSnap.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_Invoker.ColdSnap" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_invoker/cold_snap.lua" "Function" "ColdSnapStart" "cooldown_modifier" "modifier_cold_snap_cooldown_datadriven" "stun_modifier" "modifier_cold_snap_stun_datadriven" "cold_snap_modifier" "modifier_cold_snap_datadriven" } } "Modifiers" { "modifier_cold_snap_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_invoker/invoker_cold_snap_status.vpcf" "EffectAttachType" "follow_origin" "OnTakeDamage" // "%attack_damage" is set to the damage value after mitigation { "RunScript" { "ScriptFile" "heroes/hero_invoker/cold_snap.lua" "Function" "ColdSnapDamage" "DamageTaken" "%attack_damage" "cooldown_modifier" "modifier_cold_snap_cooldown_datadriven" "stun_modifier" "modifier_cold_snap_stun_datadriven" } } } "modifier_cold_snap_cooldown_datadriven" { "IsHidden" "1" "IsPurgable" "0" } "modifier_cold_snap_stun_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "OnCreated" { "FireSound" { "EffectName" "Hero_Invoker.ColdSnap.Freeze" "Target" "TARGET" } "AttachEffect" { "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_cold_snap.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FROZEN" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of the Invoker Deafening Blast ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.84 // Type: Datadriven // NOTES: Knockback calculation is static // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/deafening_blast.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/wex_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "deafening_blast_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "B" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "invoker_deafening_blast" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_deafening_blast.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_deafening_blast_knockback_debuff.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_deafening_blast_disarm_debuff.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0" "AbilityCooldown" "40" "AbilityManaCost" "200" "AbilityModifierSupportValue" "0.5" // Applies 2 modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "travel_distance" "1000" } "02" { "var_type" "FIELD_INTEGER" "travel_speed" "1100" } "03" { "var_type" "FIELD_INTEGER" "radius_start" "175" } "04" { "var_type" "FIELD_INTEGER" "radius_end" "225" } "05" { "var_type" "FIELD_FLOAT" "end_vision_duration" "1.75" } "06" { "var_type" "FIELD_FLOAT" "damage" "40 80 120 160 200 240 280" "levelkey" "exortlevel" } "07" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.25 0.5 0.75 1.0 1.25 1.5 1.75" "levelkey" "quaslevel" } "08" { "var_type" "FIELD_FLOAT" "disarm_duration" "1.0 1.5 2.0 2.5 3.0 3.5 4.0" "levelkey" "wexlevel" } // Extra "09" { "var_type" "FIELD_FLOAT" "tree_radius" "100" // not used currently } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.DeafeningBlast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_invoker/deafening_blast.lua" "Function" "deafening_blast_start" "Target" "POINT" "dummy_ability_name" "invoker_deafening_blast_dummy_datadriven" "projectile_name" "particles/units/heroes/hero_invoker/invoker_deafening_blast.vpcf" } } } // DUMMY SPELL "invoker_deafening_blast_dummy_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "invoker_deafening_blast" "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_invoker/deafening_blast.lua" "Function" "deafening_blast_hit" "knockback_modifier" "modifier_deafening_blast_knockback_datadriven" } } "Modifiers" { "modifier_deafening_blast_knockback_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "OverrideAnimation" "ACT_DOTA_DISABLED" "TextureName" "invoker_deafening_blast" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/units/heroes/hero_invoker/invoker_deafening_blast_knockback_debuff.vpcf" "EffectAttachType" "follow_origin" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_invoker/deafening_blast.lua" "Function" "deafening_blast_knockback_start" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_invoker/deafening_blast.lua" "Function" "deafening_blast_disarm" "disarm_modifier" "modifier_deafening_blast_disarm_datadriven" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_invoker/deafening_blast.lua" "Function" "deafening_blast_knockback" } "DestroyTrees" { "Target" "TARGET" "Radius" "100" // Change this to %tree_radius whenever the game feels like working properly } } "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_deafening_blast_disarm_datadriven" { "IsDebuff" "1" "IsPurgable" "0" "TextureName" "invoker_deafening_blast" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "EffectName" "particles/units/heroes/hero_invoker/invoker_deafening_blast_disarm_debuff.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_deafening_blast_dummy" { "Passive" "1" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "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" } } } } // Rewrite of EMP // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/emp.lua // // KV files: // scripts/npc/abilities/invoker/wex_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "emp_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_AOE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "C" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "AbilityTextureName" "invoker_emp" "AbilityCastAnimation" "ACT_DOTA_CAST_EMP" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "950" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "125" "AoERadius" "675" //Update %area_of_effect if this is. "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_emp.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_emp_explode.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "delay" "2.9" "levelkey" "wexlevel" } "02" { "var_type" "FIELD_INTEGER" "area_of_effect" "675" } "03" { "var_type" "FIELD_INTEGER" "mana_burned" "100 175 250 325 400 475 550" "levelkey" "wexlevel" } "04" { "var_type" "FIELD_INTEGER" "damage_per_mana_pct" "50" } "05" { "var_type" "FIELD_INTEGER" "mana_gain_per_mana_pct" "50" //The percentage of mana restored to Invoker when mana is drained from enemy heroes. } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/emp.lua" "Function" "invoker_emp_datadriven_on_spell_start" "Target" "POINT" "Delay" "%delay" "AreaOfEffect" "%area_of_effect" "DamagePerManaPct" "%damage_per_mana_pct" "ManaGainPerManaPct" "%mana_gain_per_mana_pct" } } "Modifiers" { "modifier_invoker_emp_datadriven_unit_ability" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "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_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" } } } } // Rewrite of Exort // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/exort.lua "exort_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "invoker_exort" "MaxLevel" "7" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_exort_orb.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage_per_instance" "3 6 9 12 15 18 21" } "02" { "var_type" "FIELD_INTEGER" "bonus_intelligence" "2 4 6 8 10 12 14" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/exort.lua" "Function" "invoker_exort_datadriven_on_spell_start" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_invoker/exort.lua" "Function" "invoker_replace_orb_modifiers" } } "OnOwnerSpawned" { "RunScript" { "ScriptFile" "heroes/hero_invoker/exort.lua" "Function" "invoker_replace_orb_modifiers" } } "Modifiers" { "modifier_invoker_exort_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%bonus_intelligence" } } "modifier_invoker_exort_datadriven_instance" { "Passive" "0" "IsHidden" "0" "IsBuff" "1" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE | MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "Properties" { "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%bonus_damage_per_instance" } } } } // Rewrite of the Invoker Forged Spirit Melting Strike ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/melting_strike.lua "forged_spirit_melting_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "AbilityTextureName" "forged_spirit_melting_strike" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "40" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_removed" "-1" } "02" { "var_type" "FIELD_INTEGER" "max_armor_removed" "10" } "03" { "var_type" "FIELD_FLOAT" "duration" "5" } // Extra "04" { "var_type" "FIELD_INTEGER" "mana_cost" "40" } } "Modifiers" { "modifier_melting_strike_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" // "%attack_damage" is set to the damage value before mitigation { "RunScript" { "ScriptFile" "heroes/hero_invoker/melting_strike.lua" "Function" "MeltingStrike" "modifier_armor" "modifier_melting_strike_armor_datadriven" } } } "modifier_melting_strike_armor_datadriven" { "IsHidden" "0" "IsPurgable" "0" "IsDebuff" "1" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_removed" } } } } // Rewrite of the Invoker Forge Spirit ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Setting the maximum mana doesnt work currently // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/forge_spirit.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt "forge_spirit_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "F" "AbilityTextureName" "invoker_forge_spirit" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_forge_spirit_ambient.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_forge_spirit_death.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_forged_spirit_projectile.vpcf" "model" "models/heroes/invoker/forge_spirit.vmdl" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "30" "AbilityManaCost" "75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "spirit_damage" "29 38 47 56 65 74 83" "levelkey" "exortlevel" } "02" { "var_type" "FIELD_INTEGER" "spirit_hp" "300 400 500 600 700 800 900" "levelkey" "exortlevel" } "03" { "var_type" "FIELD_INTEGER" "spirit_armor" "0 1 2 3 4 5 6" "levelkey" "exortlevel" } "04" { "var_type" "FIELD_FLOAT" "spirit_attack_range" "300 365 430 495 560 625 690" "levelkey" "quaslevel" } "05" { "var_type" "FIELD_INTEGER" "spirit_mana" "100 150 200 250 300 350 400" "levelkey" "quaslevel" } "06" { "var_type" "FIELD_FLOAT" "spirit_duration" "20 30 40 50 60 70 80" "levelkey" "quaslevel" } // Extra "07" { "var_type" "FIELD_INTEGER" "spirit_count" "1 1 1 2 2 2 2" // Depends on Quas and Exort levels } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.ForgeSpirit" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_invoker/forge_spirit.lua" "Function" "ForgeSpirit" "positive_armor" "modifier_forge_spirit_positive_armor_datadriven" "negative_armor" "modifier_forge_spirit_negative_armor_datadriven" "attack_range" "modifier_forge_spirit_attack_range_datadriven" } } "Modifiers" { "modifier_forge_spirit_positive_armor_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "1" } } "modifier_forge_spirit_negative_armor_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "-1" } } "modifier_forge_spirit_attack_range_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "1" } } } } // Rewrite of the Invoker Ghost Walk ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/ghost_walk.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/wex_datadriven.txt "ghost_walk_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "V" "AbilityTextureName" "invoker_ghost_walk" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_ghost_walk.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_ghost_walk_debuff.vpcf" "particle" "particles/status_fx/status_effect_frost.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "35" "AbilityManaCost" "200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "100.0" } "02" { "var_type" "FIELD_INTEGER" "area_of_effect" "400" } "03" { "var_type" "FIELD_INTEGER" "enemy_slow" "-20 -25 -30 -35 -40 -45 -50" "levelkey" "quaslevel" } "04" { "var_type" "FIELD_FLOAT" "self_slow" "-30 -20 -10 0 10 20 30" "levelkey" "wexlevel" } "05" { "var_type" "FIELD_FLOAT" "aura_fade_time" "2.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.GhostWalk" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_ghost_walk.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_ghost_walk_datadriven" "Target" "CASTER" "Duration" "%duration" } } "Modifiers" { "modifier_ghost_walk_datadriven" { "IsBuff" "1" "IsPurgable" "0" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_invoker/ghost_walk.lua" "Function" "GhostWalkSelfSlow" "slow_modifier" "modifier_ghost_walk_slow_datadriven" "boost_modifier" "modifier_ghost_walk_boost_datadriven" } "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "TARGET" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_invisible" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "RemoveModifier" { "ModifierName" "modifier_ghost_walk_slow_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "RemoveModifier" { "ModifierName" "modifier_ghost_walk_boost_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } } "OnAttack" { "RemoveModifier" { "ModifierName" "modifier_ghost_walk_datadriven" "Target" "ATTACKER" } } "OnAbilityExecuted" // Any ability (including items) was used by the unit with this modifier. { "RemoveModifier" { "ModifierName" "modifier_ghost_walk_datadriven" "Target" "UNIT" } } "ThinkInterval" "0.1" "OnIntervalThink" { "ActOnTargets" { "Target" { "Center" "TARGET" "Radius" "%area_of_effect" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "ApplyModifier" { "ModifierName" "modifier_ghost_walk_aura_datadriven" "Target" "TARGET" "Duration" "%aura_fade_time" } } } } "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_ghost_walk_aura_datadriven" { "IsHidden" "1" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_invoker/invoker_ghost_walk_debuff.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_invoker/ghost_walk.lua" "Function" "GhostWalkEnemySlow" "slow_modifier" "modifier_ghost_walk_slow_datadriven" } } "OnDestroy" { "RemoveModifier" { "ModifierName" "modifier_ghost_walk_slow_datadriven" "Target" "TARGET" } } } "modifier_ghost_walk_slow_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-1" } } "modifier_ghost_walk_boost_datadriven" { "IsHidden" "1" "IsPurgable" "0" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "1" } } } } // Rewrite of Ice Wall // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/ice_wall.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "ice_wall_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "G" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "1" "AbilityTextureName" "invoker_ice_wall" "AbilityCastAnimation" "ACT_DOTA_CAST_ICE_WALL" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "25" "AbilityManaCost" "175" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_ice_wall.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_ice_wall_b.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_ice_wall_debuff.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "3.0 4.5 6.0 7.5 9.0 10.5 12.0" "levelkey" "quaslevel" } "02" { "var_type" "FIELD_INTEGER" "slow" "-20 -40 -60 -80 -100 -120 -140" "levelkey" "quaslevel" } "03" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0" } "04" { "var_type" "FIELD_FLOAT" "damage_per_second" "6 12 18 24 30 36 42" "levelkey" "exortlevel" } "05" { "var_type" "FIELD_FLOAT" "damage_interval" "1" } "06" { "var_type" "FIELD_INTEGER" "wall_place_distance" "200" //This is the distance from Invoker to the middle point of the perpendicular ice wall. } "07" { "var_type" "FIELD_INTEGER" "num_wall_elements" "15" //(num_wall_elements * wall_element_spacing) + (2 * wall_element_radius) is the total length of the ice wall. } "08" { "var_type" "FIELD_INTEGER" "wall_element_spacing" "80" //The distance between the entity nodes comprising the ice wall. } "09" { "var_type" "FIELD_INTEGER" "wall_element_radius" "105" //Effectively the width of the wall's slowing/damaging aura. } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/ice_wall.lua" "Function" "invoker_ice_wall_datadriven_on_spell_start" "NumWallElements" "%num_wall_elements" "WallElementSpacing" "%wall_element_spacing" "WallPlaceDistance" "%wall_place_distance" "SlowDuration" "%slow_duration" } } //The slow lingers for %slow_duration seconds, but the damage over time ends as soon as the unit leaves the Ice Wall's radius, //so two auras are used. "Modifiers" { "modifier_invoker_ice_wall_datadriven_unit_ability" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "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_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" } } "modifier_invoker_ice_wall_datadriven_unit_ability_aura_emitter_slow" { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "Aura" "modifier_invoker_ice_wall_datadriven_unit_ability_aura_slow" "Aura_Radius" "%wall_element_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_ApplyToCaster" "0" } "modifier_invoker_ice_wall_datadriven_unit_ability_aura_slow" //This modifier is visible to affected units. { "Duration" "%slow_duration" "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "1" "TextureName" "invoker_ice_wall" "EffectName" "particles/units/heroes/hero_invoker/invoker_ice_wall_debuff.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_frost.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%slow" } "OnCreated" { "FireSound" { "EffectName" "Hero_Invoker.IceWall.Slow" "Target" "TARGET" } } } "modifier_invoker_ice_wall_datadriven_unit_ability_aura_emitter_damage" { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "Aura" "modifier_invoker_ice_wall_datadriven_unit_ability_aura_damage" "Aura_Radius" "%wall_element_radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Aura_ApplyToCaster" "0" } "modifier_invoker_ice_wall_datadriven_unit_ability_aura_damage" //This modifier is hidden to affected units. { "Passive" "0" "IsHidden" "1" "IsBuff" "0" "IsDebuff" "1" "IsPurgable" "0" "ThinkInterval" "%damage_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_invoker/ice_wall.lua" "Function" "modifier_invoker_ice_wall_datadriven_unit_ability_aura_damage_on_interval_think" "DamageInterval" "%damage_interval" } } } } } // Rewrite of one of Invoker's empty slots // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // NOTES: This is a placeholder ability for the Invoke ability // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/invoke.lua // // KV files: // scripts/npc/abilities/invoker/invoke_datadriven.txt // scripts/npc/abilities/invoker/invoker_empty2_datadriven.txt "invoker_empty1_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "AbilityTextureName" "rubick_empty1" } // Rewrite of one of Invoker's empty slots // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // NOTES: This is a placeholder ability for the Invoke ability // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/invoke.lua // // KV files: // scripts/npc/abilities/invoker/invoke_datadriven.txt // scripts/npc/abilities/invoker/invoker_empty1_datadriven.txt "invoker_empty2_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "MaxLevel" "0" "AbilityTextureName" "rubick_empty1" } // Rewrite of Invoke // Author: Rook, Pizzalol // Date: February 14, 2016 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/invoke.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/wex_datadriven.txt // scripts/npc/abilities/invoker/exort_datadriven.txt // scripts/npc/abilities/invoker/cold_snap_datadriven.txt // scripts/npc/abilities/invoker/emp_datadriven.txt // scripts/npc/abilities/invoker/sun_strike_datadriven.txt // scripts/npc/abilities/invoker/ice_wall_datadriven.txt // scripts/npc/abilities/invoker/chaos_meteor_datadriven.txt // scripts/npc/abilities/invoker/alacrity_datadriven.txt // scripts/npc/abilities/invoker/ghost_walk_datadriven.txt // scripts/npc/abilities/invoker/forge_spirit_datadriven.txt // scripts/npc/abilities/invoker/tornado_datadriven.txt // scripts/npc/abilities/invoker/deafening_blast_datadriven.txt // scripts/npc/abilities/invoker/invoker_empty1_datadriven.txt // scripts/npc/abilities/invoker/invoker_empty2_datadriven.txt "invoke_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "invoker_invoke" "MaxLevel" "4" "LevelsBetweenUpgrades" "5" "RequiredLevel" "2" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22 17 12 5" "AbilityManaCost" "20 40 60 80" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_invoke.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "max_invoked_spells" "2 2 2 2" //The only supported values are 0, 1, and 2. } "02" { "var_type" "FIELD_FLOAT" "cooldown_scepter" "16 8 4 2" } "03" { "var_type" "FIELD_INTEGER" "mana_cost_scepter" "0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Invoker.Invoke" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_invoker/invoke.lua" "Function" "Invoke" } } } // Rewrite of Quas // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/quas.lua "quas_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "invoker_quas" "MaxLevel" "7" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_quas_orb.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "health_regen_per_instance" "1.0 2.0 3.0 4.0 5.0 6.0 7.0" } "02" { "var_type" "FIELD_INTEGER" "bonus_strength" "2 4 6 8 10 12 14" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/quas.lua" "Function" "invoker_quas_datadriven_on_spell_start" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_invoker/quas.lua" "Function" "invoker_replace_orb_modifiers" } } "OnOwnerSpawned" { "RunScript" { "ScriptFile" "heroes/hero_invoker/quas.lua" "Function" "invoker_replace_orb_modifiers" } } "Modifiers" { "modifier_invoker_quas_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS" "%bonus_strength" } } "modifier_invoker_quas_datadriven_instance" { "Passive" "0" "IsHidden" "0" "IsBuff" "1" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE | MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "Properties" { "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%health_regen_per_instance" } } } } // Rewrite of the Invoker Sun Strike ability // Author: Pizzalol // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/sun_strike.lua // // KV files: // scripts/npc/abilities/invoker/exort_datadriven.txt "sun_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "MaxLevel" "1" "HotKeyOverride" "T" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS | DOTA_UNIT_TARGET_FLAG_NOT_ILLUSION" "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "1" "AbilityTextureName" "invoker_sun_strike" "AOERadius" "%area_of_effect" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts" "particle" "particles/units/heroes/hero_invoker/invoker_sun_strike.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_sun_strike_team.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "175" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "delay" "1.7" } "02" { "var_type" "FIELD_INTEGER" "area_of_effect" "175" } "03" { "var_type" "FIELD_FLOAT" "damage" "100 162.5 225 287.5 350 412.5 475" "levelkey" "exortlevel" } "04" { "var_type" "FIELD_INTEGER" "vision_distance" "400" } "05" { "var_type" "FIELD_FLOAT" "vision_duration" "4.0" } } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_sun_strike_datadriven" "Target" "POINT" } } "Modifiers" { "modifier_sun_strike_datadriven" { "Duration" "%delay" "OnCreated" { "ApplyModifier" { "ModifierName" "modifier_invisible" "Target" "TARGET" "Duration" "%delay - 0.1" // This is so that the charge sound isnt heard } "FireSound" { "EffectName" "Hero_Invoker.SunStrike.Charge" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_invoker/sun_strike.lua" "Function" "sun_strike_charge" "charge_particle" "particles/units/heroes/hero_invoker/invoker_sun_strike_team.vpcf" } "DelayedAction" { "Delay" "%delay" "Action" { "FireSound" { "EffectName" "Hero_Invoker.SunStrike.Ignite" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_sun_strike.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "01" "%area_of_effect 0 0" } } "RunScript" { "ScriptFile" "heroes/hero_invoker/sun_strike.lua" "Function" "sun_strike_damage" } } } } } } } // Rewrite of Tornado // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/tornado.lua // // KV files: // scripts/npc/abilities/invoker/quas_datadriven.txt // scripts/npc/abilities/invoker/wex_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "tornado_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "1" "HotKeyOverride" "X" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityTextureName" "invoker_tornado" "AbilityCastAnimation" "ACT_DOTA_CAST_TORNADO" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "2000" "AbilityCastPoint" "0" "AbilityCooldown" "30" "AbilityManaCost" "150" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_tornado.vpcf" "particle" "particles/units/heroes/hero_invoker/invoker_tornado_child.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "travel_distance" "800 1200 1600 2000 2400 2800 3200" "levelkey" "wexlevel" } "02" { "var_type" "FIELD_INTEGER" "travel_speed" "1000" } "03" { "var_type" "FIELD_INTEGER" "area_of_effect" "200" } "04" { "var_type" "FIELD_INTEGER" "vision_distance" "600" } "05" { "var_type" "FIELD_FLOAT" "end_vision_duration" "1.75" } "06" { "var_type" "FIELD_FLOAT" "lift_duration" "0.8 1.1 1.4 1.7 2.0 2.3 2.5" "levelkey" "quaslevel" } "07" { "var_type" "FIELD_FLOAT" "base_damage" "70" } "08" { "var_type" "FIELD_FLOAT" "wex_damage" "45 90 135 180 225 270 315" "levelkey" "wexlevel" } "09" { "var_type" "FIELD_INTEGER" "cyclone_min_height" "300" } "10" { "var_type" "FIELD_INTEGER" "cyclone_initial_height" "350" } "11" { "var_type" "FIELD_INTEGER" "cyclone_max_height" "400" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/tornado.lua" "Function" "invoker_tornado_datadriven_on_spell_start" "Target" "POINT" "TravelSpeed" "%travel_speed" "AreaOfEffect" "%area_of_effect" "VisionDistance" "%vision_distance" "EndVisionDuration" "%end_vision_duration" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_invoker/tornado.lua" "Function" "invoker_tornado_datadriven_on_projectile_hit_unit" } } "Modifiers" { "modifier_invoker_tornado_datadriven_unit_ability" { "Passive" "0" "IsHidden" "0" "IsBuff" "0" "IsDebuff" "0" "IsPurgable" "0" "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_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" } } "modifier_invoker_tornado_datadriven_cyclone" { "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" } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_invoker/invoker_tornado_child.vpcf" "EffectAttachType" "attach_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_invoker/tornado.lua" "Function" "modifier_invoker_tornado_datadriven_cyclone_on_created" "CycloneInitialHeight" "%cyclone_initial_height" "CycloneMinHeight" "%cyclone_min_height" "CycloneMaxHeight" "%cyclone_max_height" } } "ThinkInterval" "0.03" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_invoker/tornado.lua" "Function" "modifier_invoker_tornado_datadriven_cyclone_on_interval_think" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_invoker/tornado.lua" "Function" "modifier_invoker_tornado_datadriven_cyclone_on_destroy" "BaseDamage" "%base_damage" } } "OverrideAnimation" "ACT_DOTA_FLAIL" } } } // Rewrite of Wex // Author: Rook // Date: February 14, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_invoker/wex.lua "wex_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE" "AbilityTextureName" "invoker_wex" "MaxLevel" "7" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" "AbilityManaCost" "0" "precache" { "particle" "particles/units/heroes/hero_invoker/invoker_wex_orb.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "attack_speed_per_instance" "2 4 6 8 10 12 14" } "02" { "var_type" "FIELD_INTEGER" "move_speed_per_instance" "1 2 3 4 5 6 7" } "03" { "var_type" "FIELD_INTEGER" "bonus_agility" "2 4 6 8 10 12 14" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_invoker/wex.lua" "Function" "invoker_wex_datadriven_on_spell_start" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_invoker/wex.lua" "Function" "invoker_replace_orb_modifiers" } } "OnOwnerSpawned" { "RunScript" { "ScriptFile" "heroes/hero_invoker/wex.lua" "Function" "invoker_replace_orb_modifiers" } } "Modifiers" { "modifier_invoker_wex_datadriven" { "Passive" "1" "IsHidden" "1" "Properties" { "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%bonus_agility" } } "modifier_invoker_wex_datadriven_instance" { "Passive" "0" "IsHidden" "0" "IsBuff" "1" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE | MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_speed_per_instance" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attack_speed_per_instance" } } } } // Rewrite of the Jakiro Dual Breath ability // Author: Ractidous // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_jakiro/dual_breath.lua // // KV files: // scripts/npc/abilities/jakiro/dual_breath_fiery_datadriven.txt "dual_breath_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "jakiro_dual_breath" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550" "AbilityCastPoint" "0.65 0.65 0.65 0.65" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" "AbilityDuration" "5.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "135 140 155 170" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.25" // Applies two modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "start_radius" "200 200 200 200" } "02" { "var_type" "FIELD_INTEGER" "end_radius" "250 250 250 250" } "03" { "var_type" "FIELD_INTEGER" "range" "750 750 750 750" } "04" { "var_type" "FIELD_INTEGER" "speed" "1050 1050 1050 1050" } "05" { "var_type" "FIELD_FLOAT" "fire_delay" "0.3 0.3 0.3 0.3" } "06" { "var_type" "FIELD_INTEGER" "burn_damage" "20 40 60 80" } "07" { "var_type" "FIELD_INTEGER" "slow_movement_speed_pct" "-28 -32 -36 -40" } "08" { "var_type" "FIELD_INTEGER" "slow_attack_speed_pct" "-28 -32 -36 -40" } "09" { "var_type" "FIELD_INTEGER" "tooltip_duration" "5" } "10" { "var_type" "FIELD_INTEGER" "speed_fire" "1050" } // Extra "11" { "var_type" "FIELD_FLOAT" "burn_interval" "0.5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts" "particle" "particles/units/heroes/hero_jakiro/jakiro_dual_breath_ice.vpcf" "particle" "particles/units/heroes/hero_jakiro/jakiro_dual_breath_fire.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Jakiro.DualBreath" "Target" "CASTER" } "RunScript" { "Target" "POINT" "ScriptFile" "heroes/hero_jakiro/dual_breath.lua" "Function" "Launch_IcyBreath" "distance" "%range" "start_radius" "%start_radius" "end_radius" "%end_radius" "speed" "%speed_fire" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_dual_breath_pre_launch_fiery_breath_datadriven" "Duration" "%fire_delay" } "DelayedAction" { "Delay" "%fire_delay" "Action" { "RunScript" { "Target" "POINT" "ScriptFile" "heroes/hero_jakiro/dual_breath.lua" "Function" "Launch_FieryBreath" "fiery_ability_name" "dual_breath_fiery_datadriven" "distance" "%range" "start_radius" "%start_radius" "end_radius" "%end_radius" "speed" "%speed_fire" } } } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_dual_breath_slow_datadriven" "Duration" "%AbilityDuration" } } "Modifiers" { "modifier_dual_breath_pre_launch_fiery_breath_datadriven" { "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "States" { "MODIFIER_STATE_ROOTED" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_dual_breath_slow_datadriven" { "IsHidden" "0" "IsDebuff" "1" "IsPurgable" "1" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed_pct" "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed_pct" } } "modifier_dual_breath_burn_datadriven" { "IsHidden" "0" "IsDebuff" "1" "IsPurgable" "1" "Duration" "%AbilityDuration" "ThinkInterval" "%burn_interval" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%burn_damage * %burn_interval" } } } } } // Rewrite of the Jakiro Dual Breath ability // Author: Ractidous // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_jakiro/dual_breath.lua // // KV files: // scripts/npc/abilities/jakiro/dual_breath_datadriven.txt "dual_breath_fiery_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_HIDDEN" "MaxLevel" "1" "AbilityTextureName" "jakiro_dual_breath" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_Jakiro.DualBreath.Burn" "Target" "TARGET" } "RunScript" { "Target" "TARGET" "ScriptFile" "heroes/hero_jakiro/dual_breath.lua" "Function" "OnProjectileHit_Fiery" "main_ability_name" "dual_breath_datadriven" "modifier_name" "modifier_dual_breath_burn_datadriven" } } } // Rewrite of the Jakiro Ice Path ability // Author: Ractidous // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_jakiro/ice_path.lua "ice_path_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "jakiro_ice_path" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1200" "AbilityCastPoint" "0.65 0.65 0.65 0.65" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "12.0 11.0 10.0 9.0" "AbilityDuration" "1.0 1.33 1.66 2.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "path_delay" "0.5" } "02" { "var_type" "FIELD_FLOAT" "duration" "1.0 1.4 1.8 2.2" } "03" { "var_type" "FIELD_INTEGER" "path_radius" "150" } "04" { "var_type" "FIELD_INTEGER" "damage" "50" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts" "particle" "particles/units/heroes/hero_jakiro/jakiro_ice_path.vpcf" "particle" "particles/units/heroes/hero_jakiro/jakiro_ice_path_b.vpcf" // "particle" "particles/units/heroes/hero_jakiro/jakiro_icepath_debuff.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Jakiro.IcePath" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_jakiro/ice_path.lua" "Function" "FireEffect_IcePath" "path_delay" "%path_delay" "duration" "%duration" "path_radius" "%path_radius" } "DelayedAction" { "Delay" "0.1" "Action" { "FireSound" { "EffectName" "Hero_Jakiro.IcePath.Cast" "Target" "CASTER" } } } "DelayedAction" { "Delay" "%path_delay" "Action" { "RunScript" { "ScriptFile" "heroes/hero_jakiro/ice_path.lua" "Function" "FireEffect_Destroy_IcePath_A" } } } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_jakiro/ice_path.lua" "Function" "ApplyDummyModifier" "Target" "TARGET" "modifier_name" "modifier_ice_path_check_range_datadriven" } } "Modifiers" { "modifier_ice_path_check_range_datadriven" { "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "0.1" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_jakiro/ice_path.lua" "Function" "CheckIcePath" "Target" "TARGET" "path_radius" "%path_radius" } } } "modifier_ice_path_stun_datadriven" { "IsDebuff" "1" "OverrideAnimation" "ACT_DOTA_DISABLED" "EffectName" "particles/generic_gameplay/generic_stunned.vpcf" "EffectAttachType" "follow_overhead" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } } } // Rewrite of the Jakiro Liquid fire ability // Author: Ractidous // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_jakiro/liquid_fire.lua "liquid_fire_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL | DOTA_UNIT_TARGET_BUILDING" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "jakiro_liquid_fire" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20 15 10 4" "AbilityDuration" "5.0 5.0 5.0 5.0" "AbilityCastRange" "600" "AbilityCastPoint" "0.0 0.0 0.0 0.0" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportBonus" "35" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "slow_attack_speed_pct" "-20 -30 -40 -50" } "02" { "var_type" "FIELD_INTEGER" "radius" "300 300 300 300" } "03" { "var_type" "FIELD_INTEGER" "damage" "12 16 20 24" } "04" { "var_type" "FIELD_INTEGER" "tooltip_duration" "5 5 5 5" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts" "particle" "particles/units/heroes/hero_jakiro/jakiro_base_attack_fire.vpcf" "particle" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_ready.vpcf" "particle" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_explosion.vpcf" "particle" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_debuff.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_jakiro/liquid_fire.lua" "Function" "CheckOrbModifier" } } "Modifiers" { "modifier_liquid_fire_orb_datadriven" { "Passive" "1" "IsHidden" "1" "EffectName" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_ready.vpcf" "EffectAttachType" "attach_attack1" // "EffectAttachType" "attach_attack2" "Orb" { "Priority" "DOTA_ORB_PRIORITY_ABILITY" "ProjectileName" "particles/units/heroes/hero_jakiro/jakiro_base_attack_fire.vpcf" "CastAttack" "1" } "OnOrbFire" { "FireSound" { "EffectName" "Hero_Jakiro.Attack" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_jakiro/liquid_fire.lua" "Function" "StartCooldown" } } "OnOrbImpact" { "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_liquid_fire_debuff_datadriven" "Target" "TARGET" } } } "FireSound" { "EffectName" "Hero_Jakiro.LiquidFire" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_explosion.vpcf" "EffectAttachType" "attach_hitloc" "Target" "TARGET" } } } "modifier_liquid_fire_debuff_datadriven" { "IsDebuff" "1" "Duration" "%AbilityDuration" "EffectName" "particles/units/heroes/hero_jakiro/jakiro_liquid_fire_debuff.vpcf" "EffectAttachType" "follow_origin" "ThinkInterval" "0.5" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage / 2" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_attack_speed_pct" } } } } // Rewrite of the Jakiro Macropyre ability // Author: Ractidous // Date: February 17, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_jakiro/macropyre.lua "macropyre_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "jakiro_macropyre" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900" "AbilityCastPoint" "0.65 0.65 0.65 0.65" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60 60 60" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "220 330 440" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "tooltip_duration" "7 7 7" } "02" { "var_type" "FIELD_INTEGER" "damage" "100 140 180" } "03" { "var_type" "FIELD_INTEGER" "cast_range" "900" } "04" { "var_type" "FIELD_INTEGER" "duration" "7" } "05" { "var_type" "FIELD_INTEGER" "path_radius" "240" } "06" { "var_type" "FIELD_FLOAT" "burn_interval" "0.5 0.5 0.5" } "07" { "var_type" "FIELD_INTEGER" "duration_scepter" "14" } "08" { "var_type" "FIELD_INTEGER" "damage_scepter" "125 175 225" } "09" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "1800" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts" "particle" "particles/units/heroes/hero_jakiro/jakiro_macropyre.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Jakiro.Macropyre.Cast" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_jakiro/macropyre.lua" "Function" "FireMacropyre" "cast_range" "%cast_range" "path_radius" "%path_radius" "duration" "%duration" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "RunScript" { "ScriptFile" "heroes/hero_jakiro/macropyre.lua" "Function" "ApplyDummyModifier" "Target" "TARGET" "modifier_name" "modifier_macropyre_check_range_datadriven" } } "Modifiers" { "modifier_macropyre_check_range_datadriven" { "IsHidden" "1" "IsPurgable" "0" "ThinkInterval" "%burn_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_jakiro/macropyre.lua" "Function" "CheckMacropyre" "Target" "TARGET" "path_radius" "%path_radius" "damage" "%damage * %burn_interval" } } } "modifier_macropyre_destroy_tree_datadriven" { "OnCreated" { "DestroyTrees" { "Target" "TARGET" "Radius" "%path_radius" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_kill" "Duration" "0.1" } } } } } // Rewrite of the Keeper of the Light Blinding Light ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // NOTES: If you wish to use it as a standalone ability then just remove the NOT LEARNABLE behavior // // ----- FILE REQUIREMENTS ----- // KV files: // scripts/npc/abilities/keeper_of_the_light/spirit_form_datadriven.txt "blinding_light_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "MaxLevel" "3" "AbilityTextureName" "keeper_of_the_light_blinding_light" "AOERadius" "%radius" // Precache //------------------------------------------------------------------------------------------------------------- "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_blinding_light_aoe.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_blinding_light_debuff.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900 900 900" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "20.0 16.0 12.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "1.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "675 675 675" } "02" { "var_type" "FIELD_FLOAT" "miss_duration" "4.0 5.0 6.0" } "03" { "var_type" "FIELD_INTEGER" "miss_rate" "80 80 80" } "04" { "var_type" "FIELD_INTEGER" "knockback_distance" "400" } "05" { "var_type" "FIELD_INTEGER" "knockback_height" "50 50 50" } "06" { "var_type" "FIELD_FLOAT" "knockback_duration" "0.4 0.4 0.4" } // Extra "07" { "var_type" "FIELD_FLOAT" "tree_radius" "150" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.BlindingLight" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_blinding_light_aoe.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "POINT" "02" "%radius 0 0" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "Knockback" { "Target" "TARGET" "Center" "POINT" "Distance" "%knockback_distance" "Duration" "%knockback_duration" "Height" "%knockback_height" "IsFixedDistance" "1" "ShouldStun" "0" } "DelayedAction" { "Delay" "%knockback_duration" "Action" { "DestroyTrees" { "Target" "TARGET" "Radius" "%tree_radius" } } } "ApplyModifier" { "ModifierName" "modifier_blinding_light_datadriven" "Target" "TARGET" "Duration" "%miss_duration" } } } } "Modifiers" { "modifier_blinding_light_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_blinding_light_debuff.vpcf" "EffectAttachType" "follow_origin" "Properties" { "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_rate" } } } } // Rewrite of the Keeper of the Light Chakra Magic ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.83 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/chakra_magic.lua "chakra_magic_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityTextureName" "keeper_of_the_light_chakra_magic" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_chakra_magic.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "900 900 900 900" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "19.0 18.0 17.0 16.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 35 45 55" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "3.0" // Value much higher than cost. // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "mana_restore" "75 150 225 300" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.ChakraMagic.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_chakra_magic.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "follow_origin" "TARGET" "follow_origin" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_keeper_of_the_light/chakra_magic.lua" "Function" "ChakraMagic" } } } // Rewrite of the Keeper of the Light Illuminate ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Projectile visual is missing horses // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/illuminate.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/illuminate_end_datadriven.txt "illuminate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "keeper_of_the_light_illuminate" // Precache //------------------------------------------------------------------------------------------------------------- "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_illuminate.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_charge.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_impact.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" "AbilityChannelTime" "2.0 3.0 4.0 5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 160 170 180" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_second" "100.0 100.0 100.0 100.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "350 350 350 350" } "03" { "var_type" "FIELD_INTEGER" "range" "1550" } "04" { "var_type" "FIELD_FLOAT" "speed" "1050.0" } "05" { "var_type" "FIELD_FLOAT" "max_channel_time" "2.0 3.0 4.0 5.0" } "06" { "var_type" "FIELD_INTEGER" "vision_radius" "800 800 800 800" } "07" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34 3.34 3.34 3.34" } "08" { "var_type" "FIELD_INTEGER" "channel_vision_radius" "350" } "09" { "var_type" "FIELD_FLOAT" "channel_vision_interval" "0.5" } "10" { "var_type" "FIELD_FLOAT" "channel_vision_duration" "10.34" } "11" { "var_type" "FIELD_INTEGER" "channel_vision_step" "150" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Charge" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateStart" "sub_ability_name" "illuminate_end_datadriven" } "ApplyModifier" { "ModifierName" "modifier_illuminate_vision_field_timer_datadriven" "Target" "CASTER" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "LevelUpAbility" "ability_name" "illuminate_end_datadriven" } } "OnChannelFinish" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Discharge" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateEnd" "projectile_name" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate.vpcf" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateSwapEnd" "sub_ability_name" "illuminate_end_datadriven" } "RemoveModifier" { "ModifierName" "modifier_illuminate_vision_field_timer_datadriven" "Target" "CASTER" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_impact.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateProjectileHit" } } "Modifiers" { "modifier_illuminate_vision_field_timer_datadriven" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "IsPurgable" "0" "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_charge.vpcf" "EffectAttachType" "attach_attack1" "ThinkInterval" "%channel_vision_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateVisionFields" } } } } } // Rewrite of the Keeper of the Illuminate end ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/illuminate.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/illuminate_datadriven.txt "illuminate_end_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityTextureName" "keeper_of_the_light_illuminate_end" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/illuminate.lua" "Function" "IlluminateStop" } } } // Rewrite of the Keeper of the Light Mana Leak ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Sound is inconsistent // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/mana_leak.lua "mana_leak_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "keeper_of_the_light_mana_leak" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_mana_leak.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_mana_leak_cast.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16.0 14.0 12.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75 75" // Cast Range //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "550 700 850 1000" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "5.0 6.0 7.0 8.0" } "02" { "var_type" "FIELD_FLOAT" "mana_leak_pct" "5.0" } "03" { "var_type" "FIELD_FLOAT" "stun_duration" "1.5 2.0 2.5 3.0" } "04" { "var_type" "FIELD_INTEGER" "cast_range_tooltip" "550 700 850 1000" } // Extra "05" { "var_type" "FIELD_FLOAT" "leash_range_check" "300" } "06" { "var_type" "FIELD_FLOAT" "check_interval" "0.1" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.ManaLeak.Cast" "Target" "CASTER" } "FireSound" { "EffectName" "Hero_KeeperOfTheLight.ManaLeak.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_mana_leak_cast.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_origin" "TARGET" "follow_origin" } } "ApplyModifier" { "ModifierName" "modifier_mana_leak_datadriven" "Target" "TARGET" "Duration" "%duration" } } "Modifiers" { "modifier_mana_leak_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "OnCreated" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_keeper_of_the_light/mana_leak.lua" "Function" "ManaLeakInit" "sound" "Hero_KeeperOfTheLight.ManaLeak.Stun" "modifier" "modifier_mana_leak_datadriven" } } "OnUnitMoved" { "Random" { "Chance" "10" "PseudoRandom" "DOTA_PSEUDO_RANDOM_JUGG_CRIT" "OnSuccess" { "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_mana_leak.vpcf" "EffectAttachType" "attach_origin" "Target" "UNIT" } "FireSound" { "EffectName" "Hero_KeeperOfTheLight.ManaLeak.Target" "Target" "UNIT" } } } } "ThinkInterval" "%check_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_keeper_of_the_light/mana_leak.lua" "Function" "ManaLeak" "sound" "Hero_KeeperOfTheLight.ManaLeak.Stun" "modifier" "modifier_mana_leak_datadriven" } } } } } // Rewrite of the Keeper of the Light Recall ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // NOTES: If you wish to use it as a standalone ability then just remove the NOT LEARNABLE behavior // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/recall.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/spirit_form_datadriven.txt "recall_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "MaxLevel" "3" "AbilityTextureName" "keeper_of_the_light_recall" // Precache //------------------------------------------------------------------------------------------------------------- "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" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "0" "AbilityCooldown" "15.0 15.0 15.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "teleport_delay" "5.0 4.0 3.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.Cast" "Target" "CASTER" } "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" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_keeper_of_the_light/recall.lua" "Function" "Recall" "modifier" "modifier_recall_datadriven" "sound_caster" "Hero_KeeperOfTheLight.Recall.Cast" "sound_target" "Hero_KeeperOfTheLight.Recall.Target" "Target" "POINT" } } "Modifiers" { "modifier_recall_datadriven" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_recall.vpcf" "EffectAttachType" "follow_origin" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "ThinkInterval" "%teleport_delay" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.End" "Target" "TARGET" } "MoveUnit" { "Target" "TARGET" "MoveToTarget" "CASTER" } } "OnTakeDamage" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Recall.Fail" "Target" "UNIT" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_keeper_of_the_light/recall.lua" "Function" "RecallFail" "sound_caster" "Hero_KeeperOfTheLight.Recall.Cast" "sound_target" "Hero_KeeperOfTheLight.Recall.Target" } "RemoveModifier" { "ModifierName" "modifier_recall_datadriven" "Target" "UNIT" } } } } } // Rewrite of the Keeper of the Light Spirit Form ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/spirit_form.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/illuminate_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/illuminate_end_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/recall_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/blinding_light_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/spirit_form_illuminate_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/spirit_form_illuminate_end_datadriven.txt "spirit_form_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "keeper_of_the_light_spirit_form" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts" "particle" "particles/status_fx/status_effect_keeper_spirit_form.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_spirit_form_cast.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_spirit_form_ambient.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "80.0 70.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 100 100" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.35" // Attacks are primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "40.0 40.0 40.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.SpiritForm" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_spirit_form_cast.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_spirit_form_datadriven" "Target" "CASTER" "Duration" "%duration" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "LevelUpAbility" "ability_name" "recall_datadriven" "modifier" "modifier_spirit_form_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "LevelUpAbility" "ability_name" "blinding_light_datadriven" "modifier" "modifier_spirit_form_datadriven" } } "Modifiers" { "modifier_spirit_form_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_spirit_form_ambient.vpcf" "EffectAttachType" "follow_origin" "StatusEffectName" "particles/status_fx/status_effect_keeper_spirit_form.vpcf" "StatusEffectPriority" "10" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "SwapAbilities" "main_ability_name" "illuminate_datadriven" "sub_ability_name" "spirit_form_illuminate_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "SpiritFormStart" "illuminate" "illuminate_datadriven" "spirit_form_illuminate" "spirit_form_illuminate_datadriven" "recall" "recall_datadriven" "blinding_light" "blinding_light_datadriven" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "SpiritFormEnd" "illuminate" "illuminate_datadriven" "spirit_form_illuminate" "spirit_form_illuminate_datadriven" "recall" "recall_datadriven" "blinding_light" "blinding_light_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form.lua" "Function" "SwapAbilities" "main_ability_name" "spirit_form_illuminate_datadriven" "sub_ability_name" "illuminate_datadriven" } } } } } // Rewrite of the Keeper of the Light Spirit Form Illuminate ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // NOTES: #1 Projectile visual is missing horses // #2 Uses normal illuminate projectile // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/spirit_form_datadriven.txt // scripts/npc/abilities/keeper_of_the_light/spirit_form_illuminate_end_datadriven.txt // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "spirit_form_illuminate_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_HIDDEN" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_MECHANICAL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "keeper_of_the_light_spirit_form_illuminate" // Precache //------------------------------------------------------------------------------------------------------------- "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_illuminate.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_charge_spirit_form.vpcf" "particle" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_impact.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "150 160 170 180" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "damage_per_second" "100.0 100.0 100.0 100.0" } "02" { "var_type" "FIELD_INTEGER" "radius" "350 350 350 350" } "03" { "var_type" "FIELD_INTEGER" "range" "1550" } "04" { "var_type" "FIELD_FLOAT" "speed" "1050.0" } "05" { "var_type" "FIELD_FLOAT" "max_channel_time" "2.0 3.0 4.0 5.0" } "06" { "var_type" "FIELD_INTEGER" "vision_radius" "800 800 800 800" } "07" { "var_type" "FIELD_FLOAT" "vision_duration" "3.34 3.34 3.34 3.34" } "08" { "var_type" "FIELD_INTEGER" "channel_vision_radius" "350" } "09" { "var_type" "FIELD_FLOAT" "channel_vision_interval" "0.5" } "10" { "var_type" "FIELD_FLOAT" "channel_vision_duration" "10.34" } "11" { "var_type" "FIELD_INTEGER" "channel_vision_step" "150" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SpiritFormIlluminateInitialize" "dummy_modifier" "modifier_spirit_form_illuminate_dummy_datadriven" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SwapAbilities" "main_ability_name" "spirit_form_illuminate_datadriven" "sub_ability_name" "spirit_form_illuminate_end_datadriven" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "LevelUpAbility" "ability_name" "spirit_form_illuminate_end_datadriven" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Target" "Target" "TARGET" } "FireEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_impact.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SpiritFormIlluminateProjectileHit" } } "Modifiers" { "modifier_spirit_form_illuminate_dummy_datadriven" { "OnCreated" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Charge" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "ApplyModifier" { "ModifierName" "modifier_spirit_form_illuminate_vision_field_timer_datadriven" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } } "OnDestroy" { "FireSound" { "EffectName" "Hero_KeeperOfTheLight.Illuminate.Discharge" "Target" { "Center" "TARGET" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SpiritFormIlluminateEnd" "projectile_name" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate.vpcf" } "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SwapAbilities" "main_ability_name" "spirit_form_illuminate_end_datadriven" "sub_ability_name" "spirit_form_illuminate_datadriven" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NOT_ON_MINIMAP" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_spirit_form_illuminate_vision_field_timer_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "IsPurgable" "0" "Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_keeper_of_the_light/keeper_of_the_light_illuminate_charge_spirit_form.vpcf" "EffectAttachType" "start_at_customorigin" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" } "ControlPointEntities" { "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" "CASTER" "attach_origin" } } } "ThinkInterval" "%channel_vision_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SpiritFormIlluminateVisionFields" } } } } } // Rewrite of the Keeper of the Light Spirit Form Illuminate End ability // Author: Pizzalol // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua // // KV files: // scripts/npc/abilities/keeper_of_the_light/spirit_form_illuminate_datadriven.txt "spirit_form_illuminate_end_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityTextureName" "keeper_of_the_light_spirit_form_illuminate_end" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.0 0.0 0.0 0.0" "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_keeper_of_the_light/spirit_form_illuminate.lua" "Function" "SpiritFormIlluminateStop" "dummy_modifier" "modifier_spirit_form_illuminate_dummy_datadriven" "spirit_form_illuminate_ability" "spirit_form_illuminate_datadriven" } } } // Rewrite of the Kunkka Ghostship ability // Author: kritth // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_kunkka/ghostship.lua // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "ghostship_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "2" "AbilityTextureName" "kunkka_ghostship" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "60.0 50.0 40.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "400 500 600" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 175 225" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "tooltip_delay" "3.07" } "02" { "var_type" "FIELD_INTEGER" "ghostship_distance" "1000 1000 1000" } "03" { "var_type" "FIELD_INTEGER" "ghostship_width" "425 425 425" } "04" { "var_type" "FIELD_INTEGER" "movespeed_bonus" "10 10 10" } "05" { "var_type" "FIELD_FLOAT" "buff_duration" "10" } "06" { "var_type" "FIELD_FLOAT" "stun_duration" "1.4 1.4 1.4" } "07" { "var_type" "FIELD_INTEGER" "ghostship_speed" "650 650 650" } // Extra variable "08" { "var_type" "FIELD_INTEGER" "rum_reduce_pct" "50" } "09" { "var_type" "FIELD_FLOAT" "damage_duration" "10.0" } "10" { "var_type" "FIELD_FLOAT" "damage_interval" "1.0" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts" "particle" "particles/units/heroes/hero_kunkka/kunkka_ghostship_marker.vpcf" "particle" "particles/units/heroes/hero_kunkka/kunkka_ghost_ship.vpcf" "particle" "particles/status_fx/status_effect_rum.vpcf" } "OnSpellStart" { "FireSound" { "Target" "CASTER" "EffectName" "Ability.Ghostship.bell" } "FireSound" { "Target" "CASTER" "EffectName" "Ability.Ghostship" } "RunScript" { "ScriptFile" "heroes/hero_kunkka/ghostship.lua" "Function" "ghostship_start_traverse" "Target" "POINT" } } "OnProjectileHitUnit" { "DeleteOnHit" "0" "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_ghostship_rum_datadriven" } } "Modifiers" { "modifier_ghostship_rum_datadriven" { "IsBuff" "1" "Duration" "%buff_duration" "StatusEffectName" "particles/status_fx/status_effect_rum.vpcf" "StatusEffectPriority" "10" "OnTakeDamage" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/ghostship.lua" "Function" "ghostship_register_damage" "DamageTaken" "%attack_damage" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/ghostship.lua" "Function" "ghostship_spread_damage" "Target" "TARGET" } } "Properties" { "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE" "%rum_reduce_pct" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_bonus" } } } } // Rewrite of the Kunkka Retrun subability // Author: kritth // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_kunkka/x_marks_the_spot.lua // // KV files: // scripts/npc/abilities/kunkka/x_marks_the_spot_datadriven.txt "return_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "kunkka_return" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0 5.0 5.0 5.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "0" // Data driven //------------------------------------------------------------------------------------------------------------- "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/x_marks_the_spot.lua" "Function" "x_marks_the_spot_force_return" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/x_marks_the_spot.lua" "Function" "LevelUpAbility" "ability_name" "x_marks_the_spot_datadriven" } } } // Rewrite of the Kunkka Tidebringer ability // Author: kritth // Date: February 24, 2016 // Version: 6.85 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_kunkka/tidebringer.lua "tidebringer_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "AbilityTextureName" "kunkka_tidebringer" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "13.0 10.0 7.0 4.0" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500 500 500 600" } "02" { "var_type" "FIELD_INTEGER" "damage_bonus" "15 30 45 60" } } // Data driven //------------------------------------------------------------------------------------------------------------- "Modifiers" { "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts" "particle" "particles/units/heroes/hero_kunkka/kunkka_weapon_tidebringer.vpcf" "particle" "particles/units/heroes/hero_kunkka/kunkka_spell_tidebringer.vpcf" } "modifier_tidebringer_splash_datadriven" { "Passive" "1" "IsHidden" "1" "IsPurgable" "0" "OnCreated" { "FireEffect" { "Target" "CASTER" "EffectName" "Hero_Kunkaa.Tidebringer" } "AttachEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_kunkka/kunkka_weapon_tidebringer.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "CASTER" "attach_sword" "CASTER" "attach_sword" "CASTER" "attach_sword" } } } "OnAttackLanded" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Kunkka.Tidebringer.Attack" } "ActOnTargets" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "Action" { "FireSound" { "Target" "TARGET" "EffectName" "Hero_Kunkka.TidebringerDamage" } "CleaveAttack" { "CleavePercent" "100" "CleaveRadius" "%radius" "CleaveEffect" "particles/units/heroes/hero_kunkka/kunkka_spell_tidebringer.vpcf" } "RunScript" { "ScriptFile" "heroes/hero_kunkka/tidebringer.lua" "Function" "tidebringer_set_cooldown" } } } } "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%damage_bonus" } } } } // Rewrite of the Kunkka Torrent ability // Author: kritth // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_kunkka/torrent.lua // // Unit files: // scripts/npc/units/npc_dummy_unit.txt "torrent_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "kunkka_torrent" "AOERadius" "%radius" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1500" "AbilityCastPoint" "0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "10.0 10.0 10.0 10.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "120 180 240 300" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "120 120 120 120" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.5" // applies 2 modifiers // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "225" } "02" { "var_type" "FIELD_INTEGER" "movespeed_bonus" "-35" } "03" { "var_type" "FIELD_FLOAT" "slow_duration" "1.0 2.0 3.0 4.0" } "04" { "var_type" "FIELD_FLOAT" "stun_duration" "1.53 1.53 1.53 1.53" } "05" { "var_type" "FIELD_FLOAT" "delay" "1.6 1.6 1.6 1.6" } // Extra variables "06" { "var_type" "FIELD_INTEGER" "tick_count" "10" } "07" { "var_type" "FIELD_FLOAT" "vision_duration" "4.73" // delay time + 3.13 sec vision time } "08" { "var_type" "FIELD_INTEGER" "torrent_height" "400" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts" "particle" "particles/units/heroes/hero_kunkka/kunkka_spell_torrent_bubbles.vpcf" "particle" "particles/units/heroes/hero_kunkka/kunkka_spell_torrent_splash.vpcf" } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/torrent.lua" "Function" "torrent_bubble_allies" "Target" "POINT" } "RunScript" { "ScriptFile" "heroes/hero_kunkka/torrent.lua" "Function" "torrent_vision" "Target" "POINT" } "DelayedAction" { "Delay" "%delay" "Action" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/torrent.lua" "Function" "torrent_emit_sound" "Target" "POINT" } "FireEffect" { "Target" "CASTER" "EffectName" "particles/units/heroes/hero_kunkka/kunkka_spell_torrent_splash.vpcf" "EffectAttachType" "start_at_customorigin" "EffectRadius" "%radius" "ControlPoints" { "00" "POINT" } } "ActOnTargets" { "Target" { "Center" "POINT" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } "Action" { "RemoveModifier" { "Target" "TARGET" "ModifierName" "modifier_knockback" } "Knockback" { "Target" "TARGET" "Center" "CASTER" "Duration" "%stun_duration" "Distance" "0" "Height" "%torrent_height" "IsFixedDistance" "1" "ShouldStun" "1" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_torrent_damage_thinker_datadriven" } "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage / 2" "Type" "DAMAGE_TYPE_MAGICAL" } "ApplyModifier" { "Target" "TARGET" "ModifierName" "modifier_torrent_slow_debuff_datadriven" } } } } } } "Modifiers" { "modifier_torrent_damage_thinker_datadriven" { "IsPurgable" "0" "IsHidden" "1" "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "Duration" "%stun_duration" "ThinkInterval" "%stun_duration / %tick_count" "OnIntervalThink" { "Damage" { "Target" "TARGET" "Damage" "%AbilityDamage / ( 2 * %tick_count )" "Type" "DAMAGE_TYPE_MAGICAL" } } "States" { "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_torrent_slow_debuff_datadriven" { "IsDebuff" "1" "Duration" "%stun_duration + %slow_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "movespeed_bonus" } } } } // Rewrite of the Kunkka X marks the spot ability // Author: kritth // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_kunkka/x_marks_the_spot.lua // // KV files: // scripts/npc/abilities/kunkka/return_datadriven.txt "x_marks_the_spot_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "kunkka_x_marks_the_spot" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400 600 800 1000" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "26 20 14 8" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0" } "02" { "var_type" "FIELD_FLOAT" "allied_duration_tooltip" "8.0" } "03" { "var_type" "FIELD_INTEGER" "tooltip_range" "400 600 800 1000" } "04" { "var_type" "FIELD_INTEGER" "fow_range" "400" } "05" { "var_type" "FIELD_FLOAT" "fow_duration" "5.94" } } // Data driven //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts" "particle" "particles/units/heroes/hero_kunkka/kunkka_spell_x_spot.vpcf" } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_kunkka/x_marks_the_spot.lua" "Function" "LevelUpAbility" "ability_name" "return_datadriven" } } "OnSpellStart" { "ApplyModifier" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" } "ModifierName" "modifier_x_marks_the_spot_debuff_datadriven" "Duration" "%allied_duration_tooltip" } "ApplyModifier" { "Target" { "Center" "TARGET" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" } "ModifierName" "modifier_x_marks_the_spot_debuff_datadriven" "Duration" "%duration" } } "Modifiers" { "modifier_x_marks_the_spot_debuff_datadriven" { "IsDebuff" "1" "IsHidden" "0" "IsPurgable" "0" "OnCreated" { "FireSound" { "Target" "TARGET" "EffectName" "Ability.XMarksTheSpot.Target" } "AttachEffect" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_kunkka/kunkka_spell_x_spot.vpcf" "EffectAttachType" "start_at_customorigin" "ControlPointEntities" { "TARGET" "attach_origin" } } "RunScript" { "ScriptFile" "heroes/hero_kunkka/x_marks_the_spot.lua" "Function" "x_marks_the_spot_init" } } "OnDestroy" { "FireSound" { "Target" "TARGET" "EffectName" "Ability.XMarksTheSpot.Return" } "RunScript" { "ScriptFile" "heroes/hero_kunkka/x_marks_the_spot.lua" "Function" "x_marks_the_spot_return" } } } } } // Rewrite of Legion Commander's Duel // Author: Hewdraw // Date: February 24, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_legion_commander/duel.lua "duel_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES | DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" "FightRecapLevel" "2" "AbilityTextureName" "legion_commander_duel" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "particle" "particles/units/heroes/hero_legion_commander/legion_duel_ring.vpcf" "particle" "particles/units/heroes/hero_legion_commander/legion_commander_duel_victory.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_legion_commander.vsndevts" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "150" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "50.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75" // Damage //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "duration" "4.0 4.75 5.5" } "02" { "var_type" "FIELD_INTEGER" "reward_damage" "10 14 18" } } "OnSpellStart" { "RunScript" { "ScriptFile" "heroes/hero_legion_commander/duel.lua" "Function" "legion_commander_duel_datadriven_on_spell_start" "Duration" "%duration" } } "Modifiers" { "modifier_duel_datadriven" { "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" "IsDebuff" "1" "IsPurgable" "0" "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_legion_commander/duel.lua" "Function" "modifier_duel_datadriven_on_death" "Target" "UNIT" "RewardDamage" "%reward_damage" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_legion_commander/duel.lua" "Function" "modifier_duel_datadriven_on_destroy" } } "Properties" { "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL" "0" "MODIFIER_PROPERTY_DISABLE_AUTOATTACK" "0" } "States" { "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_DISABLED" "MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_DISABLED" "MODIFIER_STATE_COMMAND_RESTRICTED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_UNIT_COLLISION" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_duel_damage_datadriven" { "Attributes" "MODIFIER_ATTRIBUTE_PERMANENT" "Properties" { "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "1" } } } } // Rewrite of the Leshrac Diabolic Edict ability // Author: jacklarnes // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_leshrac/diabolic_edict.lua "diabolic_edict_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "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" "FightRecapLevel" "1" "AbilityTextureName" "leshrac_diabolic_edict" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_leshrac.vsndevts" "particle" "particles/units/heroes/hero_leshrac/leshrac_diabolic_edict.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.5" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "22 22 22 22" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "95 120 135 155" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "9 18 27 36" "AbilityDuration" "10 10 10 10" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "num_explosions" "40" } "02" { "var_type" "FIELD_INTEGER" "radius" "500" } "03" { "var_type" "FIELD_INTEGER" "tower_bonus" "40" } "04" { "var_type" "FIELD_FLOAT" "explosion_delay" ".25" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Leshrac.Diabolic_Edict_lp" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_leshrac/diabolic_edict.lua" "Function" "diabolic_edict_start" } } } // Rewrite of the Leshrac Lightning Storm ability // Author: jacklarnes // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_leshrac/lightning_storm.lua "lightning_storm_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "leshrac_lightning_storm" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_leshrac.vsndevts" "particle" "particles/units/heroes/hero_leshrac/leshrac_lightning_bolt.vpcf" "particle" "particles/units/heroes/hero_leshrac/leshrac_lightning_slow.vpcf" "particle" "particles/units/heroes/hero_leshrac/leshrac_lightning_impact.vpcf" "particle" "particles/units/heroes/hero_leshrac/leshrac_lightning_sparks.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800" "AbilityCastPoint" "0.6" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "90 100 110 120" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 100 150 200" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "jump_count" "4 5 6 7" } "02" { "var_type" "FIELD_INTEGER" "radius" "475 475 475 475" } "03" { "var_type" "FIELD_FLOAT" "jump_delay" "0.25 0.25 0.25 0.25" } "04" { "var_type" "FIELD_FLOAT" "slow_duration" "0.7 0.8 0.9 1.0" } "05" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-75" } } "OnSpellStart" { "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_leshrac/lightning_storm.lua" "Function" "lightning_storm_start" } } "Modifiers" { "lightning_storm_slow" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "Duration" "%slow_duration" "EffectName" "particles/units/heroes/hero_leshrac/leshrac_lightning_slow.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_movement_speed" } } } } // Rewrite of the Leshrac Pulse Nova ability // Author: jacklarnes // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_leshrac/pulse_nova.lua "pulse_nova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "leshrac_pulse_nova" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_leshrac.vsndevts" "particle" "particles/units/heroes/hero_leshrac/leshrac_pulse_nova.vpcf" "particle" "particles/units/heroes/hero_leshrac/leshrac_pulse_nova_ambient.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0 0 0 0" "AbilityCooldown" "1.0 1.0 1.0 1.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "70 90 110" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "mana_cost_per_second" "20 40 60" } "02" { "var_type" "FIELD_INTEGER" "radius" "450" } "03" { "var_type" "FIELD_INTEGER" "damage" "100 130 160" } "04" { "var_type" "FIELD_INTEGER" "damage_scepter" "160 190 220" } "05" { "var_type" "FIELD_FLOAT" "nova_tick" "1.0" } } "OnToggleOn" { "FireSound" { "EffectName" "Hero_Leshrac.Pulse_Nova" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "FireEffect" { "EffectName" "particles/units/heroes/hero_leshrac/leshrac_pulse_nova.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } } } "ApplyModifier" { "ModifierName" "modifier_pulse_nova_datadriven" "Target" "CASTER" } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_leshrac/pulse_nova.lua" "Function" "pulse_nova_start" } } "OnToggleOff" { "RemoveModifier" { "ModifierName" "modifier_pulse_nova_datadriven" "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } } "RunScript" { "ScriptFile" "scripts/vscripts/heroes/hero_leshrac/pulse_nova.lua" "Function" "pulse_nova_stop" } } "Modifiers" { "modifier_pulse_nova_datadriven" { "Passive" "0" "IsHidden" "0" "IsDebuff" "0" "ThinkInterval" "%nova_tick" "OnIntervalThink" { "FireSound" { "EffectName" "Hero_Leshrac.Pulse_Nova_Strike" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%radius" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO" } "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_leshrac/leshrac_pulse_nova.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } } } } "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_leshrac/leshrac_pulse_nova_ambient.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" "ControlPoints" { "00" "0 0 0" "01" "%radius 0 0" } } } } } } // Rewrite of the Leshrac Split Earth ability // Author: jacklarnes // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven "split_earth_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "leshrac_split_earth" "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_leshrac.vsndevts" "particle" "particles/units/heroes/hero_leshrac/leshrac_split_earth.vpcf" "particle" "particles/generic_gameplay/generic_stunned.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.7 0.7 0.7 0.7" "AOERadius" "%radius" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "9 9 9 9" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "100 125 140 160" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "120 180 240 300" "AbilityDuration" "2 2 2 2" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "delay" "0.35" } "02" { "var_type" "FIELD_INTEGER" "radius" "150 175 200 225" } "03" { "var_type" "FIELD_INTEGER" "duration" "2" } } "OnSpellStart" { "DelayedAction" { "Delay" "%delay" "Action" { "FireEffect" { "EffectName" "particles/units/heroes/hero_leshrac/leshrac_split_earth.vpcf" "EffectAttachType" "start_at_customorigin" "TargetPoint" "POINT" "ControlPoints" { "01" "%radius %radius %radius" } } "FireSound" { "EffectName" "Hero_Leshrac.Split_Earth" "Target" "CASTER" } "DestroyTrees" { "Target" "POINT" "Radius" "%radius" } "ActOnTargets" { "Target" { "Center" "POINT" "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" } "Stun" { "Target" "TARGET" "Duration" "%duration" } } } } } } } // Rewrite of Lich Chain Frost // Author: Noya // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Doesnt work with multiple casts at the same time // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_lich/chain_frost.lua "chain_frost_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "FightRecapLevel" "2" "AbilityTextureName" "lich_chain_frost" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "120.0 90.0 60.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "200 325 500" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.0" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "jumps" "10 10 10" } "02" { "var_type" "FIELD_FLOAT" "slow_duration" "4.0 4.0 4.0" } "03" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-30 -30 -30" } "04" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-30 -30 -30" } "05" { "var_type" "FIELD_INTEGER" "jump_range" "575 575 575" } "06" { "var_type" "FIELD_INTEGER" "projectile_speed" "850 850 850" } "07" { "var_type" "FIELD_INTEGER" "vision_radius" "1000 1000 1000" } "08" { "var_type" "FIELD_INTEGER" "damage" "280 370 460" } "09" { "var_type" "FIELD_INTEGER" "damage_scepter" "370 460 550" } "10" { "var_type" "FIELD_INTEGER" "cast_range_scepter" "850 850 850" } //Extra "11" { "var_type" "FIELD_FLOAT" "jump_interval" "0.2" } "02" { "var_type" "FIELD_FLOAT" "mini_stun" "0.1" } } "precache" { "particle" "particles/units/heroes/hero_lich/lich_chain_frost.vpcf" "particle" "particles/units/heroes/hero_lich/lich_slowed_cold.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Lich.ChainFrost" "Target" "TARGET" } "Stun" { "Target" "TARGET" "Duration" "%mini_stun" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_lich/lich_chain_frost.vpcf" "Dodgeable" "1" "ProvidesVision" "1" "VisionRadius" "%vision_radius" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "DeleteOnHit" "1" "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%damage" } "ApplyModifier" { "ModifierName" "modifier_chain_frost_slow" "Target" "TARGET" } "DelayedAction" { "Delay" "%jump_interval" "Action" { "RunScript" { "ScriptFile" "heroes/hero_lich/chain_frost.lua" "Function" "ChainFrost" "Target" { "Center" "TARGET" "Radius" "%jump_range" "Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" } } } } } "Modifiers" { "modifier_chain_frost_slow" { "Passive" "0" "IsHidden" "0" "IsDebuff" "1" "Duration" "%slow_duration" "StatusEffectName" "particles/status_fx/status_effect_frost_lich.vpcf" "StatusEffectPriority" "10" "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%slow_movement_speed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow_attack_speed" } } } } // Rewrite of Lich Dark Ritual // Author: Noya // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_lich/dark_ritual.lua "dark_ritual_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BASIC" "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_NOT_SUMMONED | DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS | DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "AbilityTextureName" "lich_dark_ritual" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "400" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "44 36 28 20" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "25 25 25 25" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "health_conversion" "25 40 55 70" } // Extra values, for the experience share "02" { "var_type" "FIELD_INTEGER" "xp_radius" "1300" } } "precache" { "particle" "particles/units/heroes/hero_lich/lich_dark_ritual.vpcf" "soundfile" "soundevents/game_sounds_heroes/game_sounds_lich.vsndevts" } "OnSpellStart" { "FireSound" { "EffectName" "Ability.DarkRitual" "Target" "CASTER" } "FireEffect" { "EffectName" "particles/units/heroes/hero_lich/lich_dark_ritual.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPointEntities" { "TARGET" "attach_hitloc" "CASTER" "attach_hitloc" } } "RunScript" { "ScriptFile" "heroes/hero_lich/dark_ritual.lua" "Function" "DarkRitual" "Target" { "Center" "TARGET" "Radius" "%xp_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } } } } // Rewrite of Lich Frost Nova // Author: Noya // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Includes autocast lua logic, to cast this spell on an allied hero who gets under attack within the autocast radius // Can only be autocast on heroes, but changing the aura type can modify this. // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_lich/frost_armor.lua "frost_armor_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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 | DOTA_UNIT_TARGET_MECHANICAL | DOTA_UNIT_TARGET_BUILDING" "SpellImmunityType" "SPELL_IMMUNITY_ALLIES_YES" "AbilityTextureName" "lich_frost_armor" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "1000" "AbilityCastPoint" "0.4 0.4 0.4 0.4" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "5.0 5.0 5.0 5.0" "AbilityDuration" "40.0 40.0 40.0 40.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Easy to spam // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "armor_bonus" "3 5 7 9" } "02" { "var_type" "FIELD_FLOAT" "slow_duration" "2.0 2.0 2.0 2.0" } "03" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-30 -30 -30 -30" } "04" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-20 -20 -20 -20" } // Extra values to control the Autocast AI "05" { "var_type" "FIELD_INTEGER" "autocast_radius" "1100" } } "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" { "Properties" { "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS" "%armor_bonus" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_lich/frost_armor.lua" "Function" "FrostArmorParticle" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_lich/frost_armor.lua" "Function" "EndFrostArmorParticle" } } "StatusEffectName" "particles/status_fx/status_effect_frost_armor.vpcf" "StatusEffectPriority" "10" "OnAttacked" { "ApplyModifier" { "ModifierName" "modifier_frost_armor_slow" "Target" "ATTACKER" "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" } "modifier_frost_armor_autocast_attacked" { "IsHidden" "1" "OnAttacked" { "RunScript" { "ScriptFile" "heroes/hero_lich/frost_armor.lua" "Function" "FrostArmorAutocast" } } } } } // Rewrite of Lich Frost Nova // Author: Noya // Date: February 25, 2016 // Version: 6.86 // Type: Datadriven "frost_nova_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "FightRecapLevel" "1" "AbilityTextureName" "lich_frost_nova" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.4 0.4 0.4 0.4" "AoERadius" "%radius" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "8.0" "AbilityDuration" "4.0 4.0 4.0 4.0" // Damage. //------------------------------------------------------------------------------------------------------------- "AbilityDamage" "50 100 150 200" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 150 170 190" // Stats //------------------------------------------------------------------------------------------------------------- "AbilityModifierSupportValue" "0.3" // Primarily about the damage // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "200 200 200 200" } "02" { "var_type" "FIELD_INTEGER" "slow_movement_speed" "-30 -30 -30 -30" } "03" { "var_type" "FIELD_INTEGER" "slow_attack_speed" "-20 -20 -20 -20" } "04" { "var_type" "FIELD_INTEGER" "aoe_damage" "75 100 125 150" } } "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" } "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" "TARGET" "Duration" "%AbilityDuration" } "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" } } } } // Rewrite of the Phantom Lancer Doppelganger ability // Author: YOLOSPAGHETTI // Date: February 16, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Illusions are blue illusions instead of yellow // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_phantom_lancer/doppelganger.lua "doppelganger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityTextureName" "phantom_lancer_doppelwalk" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_lancer.vsndevts" "particle" "particles/units/heroes/hero_phantom_lancer/phantom_lancer_doppleganger_illlmove.vpcf" } // Stats //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "600" "AbilityCastPoint" "0.1" "AoERadius" "325" "AbilityCooldown" "25 20 15 10" "AbilityManaCost" "50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "target_radius" "325" } "02" { "var_type" "FIELD_INTEGER" "illusion_gather_radius" "900" } "03" { "var_type" "FIELD_FLOAT" "delay" "1.0" } "04" { "var_type" "FIELD_FLOAT" "illusion_duration" "8.0" } "05" { "var_type" "FIELD_FLOAT" "first_illusion_outgoing_damage" "-100.0" } "06" { "var_type" "FIELD_FLOAT" "first_illusion_incoming_damage" "0.0" } "07" { "var_type" "FIELD_FLOAT" "second_illusion_outgoing_damage" "-80.0" } "08" { "var_type" "FIELD_FLOAT" "second_illusion_incoming_damage" "500.0" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_PhantomLancer.Doppelganger.Cast" "Target" "CASTER" } "ActOnTargets" { "Target" { "Center" "CASTER" "Radius" "%illusion_gather_radius" "Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" "Types" "DOTA_UNIT_TARGET_HERO" } "Action" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/doppelganger.lua" "Function" "CheckUnits" } } } } "Modifiers" { "modifier_doppelganger_datadriven" { "IsHidden" "0" "States" { "MODIFIER_STATE_STUNNED" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/doppelganger.lua" "Function" "DoppelgangerStart" } } "OnDestroy" { "FireSound" { "EffectName" "Hero_PhantomLancer.Doppelganger.Appear" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/doppelganger.lua" "Function" "DoppelgangerEnd" } } } } } // Rewrite of the Phantom Lancer Juxtapose ability // Author: YOLOSPAGHETTI // Date: February 16, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Illusions are blue illusions instead of yellow // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_phantom_lancer/juxtapose.lua "juxtapose_datadriven" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "phantom_lancer_juxtapose" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "hero_proc_chance" "40 45 50" } "02" { "var_type" "FIELD_INTEGER" "illusion_proc_chance" "8" } "03" { "var_type" "FIELD_INTEGER" "max_illusions" "5 7 9" } "04" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage" "500.0" } "04" { "var_type" "FIELD_FLOAT" "illusion_outgoing_damage" "-84.0" } "05" { "var_type" "FIELD_INTEGER" "illusion_duration" "4" } } "Modifiers" { "modifier_juxtapose_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/juxtapose.lua" "Function" "ConjureImage" } } } "modifier_illusion_count" { "IsHidden" "1" "OnDeath" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/juxtapose.lua" "Function" "DecrementCount" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/juxtapose.lua" "Function" "DecrementCount" } } } } } // Rewrite of the Phantom Lancer Phantom Rush ability // Author: YOLOSPAGHETTI // Date: February 16, 2016 // Version: 6.86 // Type: Datadriven/Lua // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_phantom_lancer/phantom_rush.lua // scripts/vscripts/libraries/modifiers/modifier_movespeed_cap.lua "phantom_rush_datadriven" { "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "phantom_lancer_phantom_edge" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16 12 8 4" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_lancer.vsndevts" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "min_proc_distance" "300" } "02" { "var_type" "FIELD_INTEGER" "max_proc_distance" "600 700 800 900" } "03" { "var_type" "FIELD_INTEGER" "rush_speed" "800" } "04" { "var_type" "FIELD_FLOAT" "buff_duration" "6.0" } } "Modifiers" { "modifier_phantom_rush_datadriven" { "Passive" "1" "IsHidden" "1" "OnOrder" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/phantom_rush.lua" "Function" "ApplyBuff" } } } "modifier_check_distance" { "IsHidden" "1" "OnUnitMoved" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/phantom_rush.lua" "Function" "DistanceCheck" } } } "modifier_speed_buff" { "Duration" "%buff_duration" "OnCreated" { "FireSound" { "EffectName" "Hero_PhantomLancer.PhantomEdge" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE" "%rush_speed" } "OnOrder" { "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/phantom_rush.lua" "Function" "RemoveBuff" } } } } } // Rewrite of the Phantom Lancer Spirit Lance ability // Author: YOLOSPAGHETTI // Date: February 16, 2016 // Version: 6.86 // Type: Datadriven // NOTES: Illusions are blue illusions instead of yellow // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_phantom_lancer/spirit_lance.lua "spirit_lance_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "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" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "phantom_lancer_spirit_lance" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "750" "AbilityCastPoint" "0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "7.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "125 130 135 140" //Damage "AbilityDamage" "100 150 200 250" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "damage_tooltip" "100 150 200 250" } "02" { "var_type" "FIELD_INTEGER" "slow" "-10 -20 -30 -40" } "03" { "var_type" "FIELD_INTEGER" "slow_duration" "3.25" } "04" { "var_type" "FIELD_FLOAT" "illusion_duration" "2 4 6 8" } "05" { "var_type" "FIELD_FLOAT" "illusion_outgoing_damage" "-80.0" } "06" { "var_type" "FIELD_FLOAT" "illusion_outgoing_tooltip" "20.0" } "07" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage" "300.0" } "08" { "var_type" "FIELD_FLOAT" "illusion_incoming_damage_total_tooltip" "400.0" } "08" { "var_type" "FIELD_FLOAT" "projectile_speed" "1000.0" } } "precache" { "soundfile" "soundevents/game_sounds_heroes/game_sounds_phantom_lancer.vsndevts" "particle" "particles/units/heroes/hero_phantom_lancer/phantomlancer_spiritlance_projectile.vpcf" } "OnSpellStart" { "FireSound" { "EffectName" "Hero_PhantomLancer.SpiritLance.Throw" "Target" "CASTER" } "TrackingProjectile" { "Target" "TARGET" "EffectName" "particles/units/heroes/hero_phantom_lancer/phantomlancer_spiritlance_projectile.vpcf" "Dodgeable" "1" "ProvidesVision" "0" "MoveSpeed" "%projectile_speed" "SourceAttachment" "DOTA_PROJECTILE_ATTACHMENT_ATTACK_1" } } "OnProjectileHitUnit" { "FireSound" { "EffectName" "Hero_PhantomLancer.SpiritLance.Impact" "Target" "TARGET" } "RunScript" { "ScriptFile" "heroes/hero_phantom_lancer/spirit_lance.lua" "Function" "ConjureImage" } "Damage" { "Target" "TARGET" "Type" "DAMAGE_TYPE_MAGICAL" "Damage" "%AbilityDamage" } "ApplyModifier" { "ModifierName" "modifier_spirit_lance_datadriven" "Target" "TARGET" "Duration" "%slow_duration" } } "Modifiers" { "modifier_spirit_lance_datadriven" { "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%slow" } } } } // Rewrite of Cloak and Dagger // Author: YOLOSPAGHETTI // Date: February 5, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_riki/blink_strike.lua "blink_strike_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY | DOTA_UNIT_TARGET_TEAM_ENEMY" "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" "AbilityTextureName" "riki_blink_strike" "CastFilterRejectCaster" "1" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "sounds/weapons/hero/riki/riki_blinkstrike.vsnd" "particle" "particles/units/heroes/hero_riki/riki_blink_strike.vpcf" } // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastRange" "800 800 800 800" "AbilityCastPoint" "0.3 0.3 0.3 0.3" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "16 12 8 4" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "50 50 50 50" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_damage" "20 40 60 80" } "02" { "var_type" "FIELD_INTEGER" "tooltip_range" "800 800 800 800" } } "OnSpellStart" { "FireSound" { "EffectName" "Hero_Riki.Blink_Strike" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_riki/riki_blink_strike.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_riki/blink_strike.lua" "Function" "BlinkStrike" } } } // Rewrite of Cloak and Dagger // Author: YOLOSPAGHETTI // Date: February 4, 2016 // Version: 6.86 // Type: Datadriven // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_riki/cloak_and_dagger.lua "cloak_and_dagger_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" "AbilityTextureName" "riki_permanent_invisibility" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "sounds/weapons/hero/riki/riki_backstab.vsnd" "soundfile" "sounds/weapons/hero/riki/riki_attack1.vsnd" "particle" "particles/units/heroes/hero_riki/riki_backstab.vpcf" "particle" "particles/generic_hero_status/status_invisibility_start.vpcf" } // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_FLOAT" "fade_time" "6.0 5.0 4.0 3.0" } "02" { "var_type" "FIELD_INTEGER" "agility_damage" "50 75 100 125" } "03" { "var_type" "FIELD_INTEGER" "backstab_angle" "105" } } "Modifiers" { "modifier_invisibility_fade_datadriven" { "Passive" "1" "IsHidden" "1" "Duration" "%fade_time" "EffectName" "particles/generic_hero_status/status_invisibility_start.vpcf" "EffectAttachType" "follow_origin" "OnDestroy" { "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_permanent_invisibility_datadriven" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } } } "modifier_backstab_datadriven" { "Passive" "1" "IsHidden" "1" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_riki/cloak_and_dagger.lua" "Function" "CheckBackstab" "particle" "particles/units/heroes/hero_riki/riki_backstab.vpcf" "sound" "Hero_Riki.Backstab" "sound2" "Hero_Riki.Attack" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_permanent_invisibility_datadriven" } "RemoveModifier" { "Target" "CASTER" "ModifierName" "modifier_invisible" } "ApplyModifier" { "Target" "CASTER" "ModifierName" "modifier_invisibility_fade_datadriven" } } } "modifier_permanent_invisibility_datadriven" { "IsHidden" "1" "States" { "MODIFIER_STATE_INVISIBLE" "MODIFIER_STATE_VALUE_ENABLED" } "OnDestroy" { "RemoveModifier" { "Target" { "Center" "CASTER" "Flags" "DOTA_UNIT_TARGET_FLAG_DEAD" } "ModifierName" "modifier_invisible" } } } } } // Rewrite of Smoke Screen // Author: YOLOSPAGHETTI // Date: February 4, 2016 // Version: 6.86 // Type: Datadriven "smoke_screen_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE" "AbilityTextureName" "riki_smoke_screen" "AOERadius" "%radius" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4" "AbilityCastRange" "550" // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "11.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 80 85 90" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "250 275 300 325" } "02" { "var_type" "FIELD_FLOAT" "duration" "6.0" } "02" { "var_type" "FIELD_FLOAT" "linger_duration" "0.5" } "03" { "var_type" "FIELD_INTEGER" "move_slow" "-25" } "04" { "var_type" "FIELD_INTEGER" "miss_chance" "40 50 60 70" } } "precache" { "soundfile" "sounds/weapons/hero/riki/riki_smokescreen.vsnd" "particle" "particles/units/heroes/hero_riki/riki_smokebomb.vpcf" "particle" "particles/units/heroes/hero_riki/riki_smokebomb_b.vpcf" } "OnSpellStart" { "CreateThinker" { "ModifierName" "modifier_smoke_screen" "Target" "POINT" } } "Modifiers" { "modifier_smoke_screen" { "Aura" "modifier_smoke_screen_debuff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL" "Duration" "%duration" "OnCreated" { "FireSound" { //fix sound! "EffectName" "Hero_Riki.Smoke_Screen" "Target" "CASTER" } "AttachEffect" { "EffectName" "particles/units/heroes/hero_riki/riki_smokebomb.vpcf" "EffectAttachType" "follow_origin" "Target" "TARGET" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" } } } } "modifier_smoke_screen_debuff" { "IsDebuff" "1" "EffectName" "particles/generic_gameplay/generic_silence.vpcf" "EffectAttachType" "follow_overhead" "Duration" "%linger_duration" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%move_slow" "MODIFIER_PROPERTY_MISS_PERCENTAGE" "%miss_chance" } "States" { "MODIFIER_STATE_SILENCED" "MODIFIER_STATE_VALUE_ENABLED" } } } } // Rewrite of Trick of the Trade // Author: YOLOSPAGHETTI // Date: February 13, 2016 // Version: 6.86 // Type: Datadriven // Notes: Caster needs cloak_and_dagger_datadriven as an ability or ProcBackstab will not work // // ----- FILE REQUIREMENTS ----- // Script files: // scripts/vscripts/heroes/hero_riki/tricks_of_the_trade.lua // // KV files: // scripts/npc/abilities/riki/cloak_and_dagger_datadriven.txt "tricks_of_the_trade_datadriven" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES" "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" "AbilityTextureName" "riki_tricks_of_the_trade" // Precache //------------------------------------------------------------------------------------------------------------- "precache" { "soundfile" "sounds/weapons/hero/riki/tricks_of_the_trade.vsnd" "soundfile" "sounds/weapons/hero/riki/tricks_of_the_trade_cast.vsnd" "soundfile" "sounds/weapons/hero/riki/riki_backstab.vsnd" "particle" "particles/units/heroes/hero_riki/riki_tricks.vpcf" "particle" "particles/units/heroes/hero_riki/riki_tricks_cast.vpcf" "particle" "particles/units/heroes/hero_riki/riki_tricks_end.vpcf" //"particle" "particles/units/heroes/hero_riki/riki_tricks_dagger_parent.vpcf" "particle" "particles/units/heroes/hero_riki/riki_backstab.vpcf" } // Time //------------------------------------------------------------------------------------------------------------- "AbilityCooldown" "40.0" // Casting //------------------------------------------------------------------------------------------------------------- "AbilityCastPoint" "0.4 0.4 0.4" "AbilityChannelTime" "4.0 5.0 6.0" // Cost //------------------------------------------------------------------------------------------------------------- "AbilityManaCost" "75 75 75" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "radius" "500" } "02" { "var_type" "FIELD_FLOAT" "duration" "4.0 5.0 6.0" } "03" { "var_type" "FIELD_FLOAT" "damage_interval" "1.0" } } "OnSpellStart" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_riki/riki_tricks_cast.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "RunScript" { "ScriptFile" "heroes/hero_riki/tricks_of_the_trade.lua" "Function" "RemoveModel" } "FireSound" { "EffectName" "Hero_Riki.TricksOfTheTrade" "Target" "TARGET" } "ApplyModifier" { "ModifierName" "modifier_banish" "Target" "CASTER" } "ApplyModifier" { "ModifierName" "modifier_tricks_of_the_trade" "Target" "CASTER" } } "OnChannelFinish" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_riki/riki_tricks_end.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_banish" "Target" "CASTER" } "RemoveModifier" { "ModifierName" "modifier_tricks_of_the_trade" "Target" "CASTER" } } "Modifiers" { "modifier_banish" { "Duration" "%duration" "OnAttackLanded" { "RunScript" { "ScriptFile" "heroes/hero_riki/tricks_of_the_trade.lua" "Function" "ProcBackstab" "particle" "particles/units/heroes/hero_riki/riki_backstab.vpcf" "sound" "Hero_Riki.Backstab" } } "OnDestroy" { "RunScript" { "ScriptFile" "heroes/hero_riki/tricks_of_the_trade.lua" "Function" "DrawModel" } } "States" { //"MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" // Don't use these state for a channeling ability. //"MODIFIER_STATE_OUT_OF_GAME" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_ATTACK_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_UNSELECTABLE" "MODIFIER_STATE_VALUE_ENABLED" "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED" } } "modifier_tricks_of_the_trade" { "Aura" "modifier_tricks_of_the_trade_debuff" "Aura_Radius" "%radius" "Aura_Teams" "DOTA_UNIT_TARGET_TEAM_ENEMY" "Aura_Types" "DOTA_UNIT_TARGET_HERO" "Aura_Flags" "DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO" "Duration" "%duration" "OnCreated" { "FireSound" { "EffectName" "Hero_Riki.TricksOfTheTrade" "Target" "CASTER" } "AttachEffect" { // Dagger particle is not working for me for some reason. "EffectName" "particles/units/heroes/hero_riki/riki_tricks.vpcf" "EffectAttachType" "attach_origin" "Target" "CASTER" "ControlPoints" { "00" "0 0 0" "01" "%radius %radius %radius" "02" "%duration 0 0" } } } } "modifier_tricks_of_the_trade_debuff" { "IsHidden" "1" "OnCreated" { "RunScript" { "ScriptFile" "heroes/hero_riki/tricks_of_the_trade.lua" "Function" "PerformAttacks" } } "ThinkInterval" "%damage_interval" "OnIntervalThink" { "RunScript" { "ScriptFile" "heroes/hero_riki/tricks_of_the_trade.lua" "Function" "PerformAttacks" } } } } } }