├── .gitignore ├── LICENSE.md ├── README.md └── game └── scripts ├── custom_events.txt ├── npc ├── abilities │ ├── abaddon │ │ ├── aphotic_shield_datadriven.txt │ │ ├── borrowed_time_datadriven.txt │ │ ├── death_coil_datadriven.txt │ │ └── frostmourne_datadriven.txt │ ├── ability_base_datadriven.txt │ ├── abyssal_underlord_atrophy_aura_datadriven.txt │ ├── abyssal_underlord_cancel_dark_rift_datadriven.txt │ ├── abyssal_underlord_dark_rift_datadriven.txt │ ├── abyssal_underlord_firestorm_datadriven.txt │ ├── abyssal_underlord_pit_of_malice_datadriven.txt │ ├── alchemist │ │ ├── acid_spray_datadriven.txt │ │ ├── chemical_rage_datadriven.txt │ │ ├── goblins_greed_datadriven.txt │ │ ├── unstable_concoction_datadriven.txt │ │ └── unstable_concoction_throw_datadriven.txt │ ├── alpha_wolf_command_aura_datadriven.txt │ ├── alpha_wolf_critical_strike_datadriven.txt │ ├── ancient_apparition │ │ ├── chilling_touch_datadriven.txt │ │ ├── cold_feet_datadriven.txt │ │ ├── ice_blast_datadriven.txt │ │ ├── ice_blast_release_datadriven.txt │ │ └── ice_vortex_datadriven.txt │ ├── antimage │ │ ├── blink_datadriven.txt │ │ ├── mana_break_datadriven.txt │ │ ├── mana_void_datadriven.txt │ │ └── spell_shield_datadriven.txt │ ├── arc_warden_flux_lua.txt │ ├── arc_warden_magnetic_field_lua.txt │ ├── arc_warden_spark_wraith_lua.txt │ ├── arc_warden_tempest_double_lua.txt │ ├── attr_damage_datadriven.txt │ ├── attribute_bonus_datadriven.txt │ ├── axe │ │ ├── battle_hunger_datadriven.txt │ │ ├── berserkers_call_datadriven.txt │ │ ├── counter_helix_datadriven.txt │ │ └── culling_blade_datadriven.txt │ ├── backdoor_protection_datadriven.txt │ ├── backdoor_protection_in_base_datadriven.txt │ ├── bane │ │ ├── brain_sap_datadriven.txt │ │ ├── enfeeble_datadriven.txt │ │ ├── fiends_grip_datadriven.txt │ │ ├── nightmare_datadriven.txt │ │ └── nightmare_end_datadriven.txt │ ├── batrider_firefly_datadriven.txt │ ├── batrider_flamebreak_datadriven.txt │ ├── batrider_flaming_lasso_datadriven.txt │ ├── batrider_sticky_napalm_datadriven.txt │ ├── beastmaster │ │ ├── call_of_the_wild_boar_datadriven.txt │ │ ├── call_of_the_wild_hawk_datadriven.txt │ │ ├── inner_beast_datadriven.txt │ │ └── primal_roar_datadriven.txt │ ├── beastmaster_boar_poison_datadriven.txt │ ├── beastmaster_greater_boar_poison_datadriven.txt │ ├── beastmaster_hawk_invisibility_datadriven.txt │ ├── beastmaster_wild_axes_datadriven.txt │ ├── big_thunder_lizard_frenzy_datadriven.txt │ ├── big_thunder_lizard_slam_datadriven.txt │ ├── black_dragon_splash_attack_datadriven.txt │ ├── bloodseeker │ │ ├── blood_rite_datadriven.txt │ │ ├── bloodrage_datadriven.txt │ │ ├── rupture_datadriven.txt │ │ └── thirst_datadriven.txt │ ├── blue_dragonspawn_overseer_devotion_aura_datadriven.txt │ ├── blue_dragonspawn_overseer_evasion_datadriven.txt │ ├── blue_dragonspawn_sorcerer_evasion_datadriven.txt │ ├── bounty_hunter │ │ ├── jinada_datadriven.txt │ │ ├── shuriken_toss_datadriven.txt │ │ ├── track_datadriven.txt │ │ └── wind_walk_datadriven.txt │ ├── brewmaster │ │ ├── drunken_brawler_datadriven.txt │ │ ├── drunken_haze_datadriven.txt │ │ ├── primal_split_datadriven.txt │ │ └── thunder_clap_datadriven.txt │ ├── brewmaster_earth_hurl_boulder_datadriven.txt │ ├── brewmaster_earth_pulverize_datadriven.txt │ ├── brewmaster_earth_spell_immunity_datadriven.txt │ ├── brewmaster_fire_permanent_immolation_datadriven.txt │ ├── brewmaster_storm_cyclone_datadriven.txt │ ├── brewmaster_storm_dispel_magic_datadriven.txt │ ├── brewmaster_storm_wind_walk_datadriven.txt │ ├── bristleback │ │ ├── bristleback_datadriven.txt │ │ ├── quill_spray_datadriven.txt │ │ ├── viscous_nasal_goo_datadriven.txt │ │ └── warpath_datadriven.txt │ ├── broodmother │ │ ├── incapacitating_bite_datadriven.txt │ │ ├── insatiable_hunger_datadriven.txt │ │ ├── spawn_spiderlings_datadriven.txt │ │ ├── spin_web_datadriven.txt │ │ └── spin_web_destroy_datadriven.txt │ ├── broodmother_poison_sting_datadriven.txt │ ├── broodmother_spawn_spiderite_datadriven.txt │ ├── centaur │ │ ├── double_edge_datadriven.txt │ │ ├── hoof_stomp_datadriven.txt │ │ ├── return_datadriven.txt │ │ └── stampede_datadriven.txt │ ├── centaur_great_fortitude_datadriven.txt │ ├── centaur_khan_endurance_aura_datadriven.txt │ ├── centaur_khan_war_stomp_datadriven.txt │ ├── chaos_knight │ │ ├── chaos_bolt_datadriven.txt │ │ ├── chaos_strike_datadriven.txt │ │ ├── phantasm_datadriven.txt │ │ └── reality_rift_datadriven.txt │ ├── chen │ │ ├── hand_of_god_datadriven.txt │ │ ├── holy_persuasion_datadriven.txt │ │ ├── penitence_datadriven.txt │ │ ├── test_of_faith_datadriven.txt │ │ └── test_of_faith_teleport_datadriven.txt │ ├── clinkz │ │ ├── death_pact_datadriven.txt │ │ ├── searing_arrows_datadriven.txt │ │ ├── strafe_datadriven.txt │ │ └── wind_walk_datadriven.txt │ ├── courier_burst_datadriven.txt │ ├── courier_go_to_secretshop_datadriven.txt │ ├── courier_morph_datadriven.txt │ ├── courier_return_stash_items_datadriven.txt │ ├── courier_return_to_base_datadriven.txt │ ├── courier_shield_datadriven.txt │ ├── courier_take_stash_items_datadriven.txt │ ├── courier_transfer_items_datadriven.txt │ ├── crystal_maiden │ │ ├── brilliance_aura_datadriven.txt │ │ ├── crystal_nova_datadriven.txt │ │ ├── freezing_field_datadriven.txt │ │ └── frostbite_datadriven.txt │ ├── dark_seer │ │ ├── ion_shell_datadriven.txt │ │ ├── surge_datadriven.txt │ │ ├── vacuum_datadriven.txt │ │ └── wall_of_replica_datadriven.txt │ ├── dark_troll_warlord_ensnare_datadriven.txt │ ├── dark_troll_warlord_raise_dead_datadriven.txt │ ├── dazzle │ │ ├── poison_touch_datadriven.txt │ │ ├── shadow_wave_datadriven.txt │ │ ├── shallow_grave_datadriven.txt │ │ └── weave_datadriven.txt │ ├── death_prophet │ │ ├── carrion_swarm_datadriven.txt │ │ ├── exorcism_datadriven.txt │ │ ├── silence_datadriven.txt │ │ └── spirit_siphon_datadriven.txt │ ├── default_attack_datadriven.txt │ ├── disruptor │ │ ├── glimpse_datadriven.txt │ │ ├── kinetic_field_datadriven.txt │ │ ├── static_storm_datadriven.txt │ │ └── thunder_strike_datadriven.txt │ ├── doom_bringer │ │ ├── devour_datadriven.txt │ │ ├── doom_bringer_empty1_datadriven.txt │ │ ├── doom_bringer_empty2_datadriven.txt │ │ ├── doom_datadriven.txt │ │ ├── infernal_blade_datadriven.txt │ │ ├── lvl_death_datadriven.txt │ │ └── scorched_earth_datadriven.txt │ ├── dragon_knight │ │ ├── breathe_fire_datadriven.txt │ │ ├── dragon_blood_datadriven.txt │ │ ├── dragon_tail_datadriven.txt │ │ └── elder_dragon_form_datadriven.txt │ ├── dragon_knight_frost_breath_datadriven.txt │ ├── drow_ranger │ │ ├── frost_arrows_datadriven.txt │ │ ├── marksmanship_datadriven.txt │ │ ├── trueshot_datadriven.txt │ │ └── wave_of_silence_datadriven.txt │ ├── earth_spirit_boulder_smash_datadriven.txt │ ├── earth_spirit_geomagnetic_grip_datadriven.txt │ ├── earth_spirit_magnetize_datadriven.txt │ ├── earth_spirit_petrify_datadriven.txt │ ├── earth_spirit_rolling_boulder_datadriven.txt │ ├── earth_spirit_stone_caller_datadriven.txt │ ├── earthshaker │ │ ├── aftershock_datadriven.txt │ │ ├── echo_slam_datadriven.txt │ │ ├── enchant_totem_datadriven.txt │ │ └── fissure_datadriven.txt │ ├── earthshaker_aftershock_datadriven.txt │ ├── earthshaker_echo_slam_datadriven.txt │ ├── earthshaker_enchant_totem_datadriven.txt │ ├── earthshaker_fissure_datadriven.txt │ ├── elder_titan_ancestral_spirit_datadriven.txt │ ├── elder_titan_earth_splitter_datadriven.txt │ ├── elder_titan_echo_stomp_datadriven.txt │ ├── elder_titan_echo_stomp_spirit_datadriven.txt │ ├── elder_titan_natural_order_datadriven.txt │ ├── elder_titan_return_spirit_datadriven.txt │ ├── ember_spirit │ │ ├── activate_fire_remnant_datadriven.txt │ │ ├── fire_remnant_datadriven.txt │ │ ├── flame_guard_datadriven.txt │ │ ├── searing_chains_datadriven.txt │ │ └── sleight_of_fist_datadriven.txt │ ├── enchantress_enchant_datadriven.txt │ ├── enchantress_impetus_datadriven.txt │ ├── enchantress_natures_attendants_datadriven.txt │ ├── enchantress_untouchable_datadriven.txt │ ├── enigma │ │ ├── black_hole_datadriven.txt │ │ ├── demonic_conversion_datadriven.txt │ │ ├── malefice_datadriven.txt │ │ └── midnight_pulse_datadriven.txt │ ├── enraged_wildkin_tornado_datadriven.txt │ ├── enraged_wildkin_toughness_aura_datadriven.txt │ ├── faceless_void │ │ ├── backtrack_datadriven.txt │ │ ├── chronosphere_datadriven.txt │ │ ├── time_dilation_datadriven.txt │ │ ├── time_lock_datadriven.txt │ │ └── time_walk_datadriven.txt │ ├── forest_troll_high_priest_heal_datadriven.txt │ ├── forest_troll_high_priest_mana_aura_datadriven.txt │ ├── fountain_buyback_datadriven.txt │ ├── fountain_glyph_datadriven.txt │ ├── furion_force_of_nature_datadriven.txt │ ├── furion_sprout_datadriven.txt │ ├── furion_teleportation_datadriven.txt │ ├── furion_wrath_of_nature_datadriven.txt │ ├── ghost_frost_attack_datadriven.txt │ ├── giant_wolf_critical_strike_datadriven.txt │ ├── gnoll_assassin_envenomed_weapon_datadriven.txt │ ├── greevil_black_hole_datadriven.txt │ ├── greevil_blade_fury_datadriven.txt │ ├── greevil_bloodlust_datadriven.txt │ ├── greevil_cold_snap_datadriven.txt │ ├── greevil_decrepify_datadriven.txt │ ├── greevil_diabolic_edict_datadriven.txt │ ├── greevil_echo_slam_datadriven.txt │ ├── greevil_fatal_bonds_datadriven.txt │ ├── greevil_flesh_golem_datadriven.txt │ ├── greevil_hook_datadriven.txt │ ├── greevil_ice_wall_datadriven.txt │ ├── greevil_laguna_blade_datadriven.txt │ ├── greevil_leech_seed_datadriven.txt │ ├── greevil_magic_missile_datadriven.txt │ ├── greevil_maledict_datadriven.txt │ ├── greevil_miniboss_black_brain_sap_datadriven.txt │ ├── greevil_miniboss_black_nightmare_datadriven.txt │ ├── greevil_miniboss_blue_cold_feet_datadriven.txt │ ├── greevil_miniboss_blue_ice_vortex_datadriven.txt │ ├── greevil_miniboss_green_living_armor_datadriven.txt │ ├── greevil_miniboss_green_overgrowth_datadriven.txt │ ├── greevil_miniboss_orange_dragon_slave_datadriven.txt │ ├── greevil_miniboss_orange_light_strike_array_datadriven.txt │ ├── greevil_miniboss_purple_plague_ward_datadriven.txt │ ├── greevil_miniboss_purple_venomous_gale_datadriven.txt │ ├── greevil_miniboss_red_earthshock_datadriven.txt │ ├── greevil_miniboss_red_overpower_datadriven.txt │ ├── greevil_miniboss_sight_datadriven.txt │ ├── greevil_miniboss_white_degen_aura_datadriven.txt │ ├── greevil_miniboss_white_purification_datadriven.txt │ ├── greevil_miniboss_yellow_ion_shell_datadriven.txt │ ├── greevil_miniboss_yellow_surge_datadriven.txt │ ├── greevil_natures_attendants_datadriven.txt │ ├── greevil_phantom_strike_datadriven.txt │ ├── greevil_poison_nova_datadriven.txt │ ├── greevil_purification_datadriven.txt │ ├── greevil_rot_datadriven.txt │ ├── greevil_shadow_strike_datadriven.txt │ ├── greevil_shadow_wave_datadriven.txt │ ├── greevil_time_lock_datadriven.txt │ ├── gyrocopter │ │ ├── call_down_datadriven.txt │ │ ├── flak_cannon_datadriven.txt │ │ ├── homing_missile_datadriven.txt │ │ └── rocket_barrage_datadriven.txt │ ├── harpy_storm_chain_lightning_datadriven.txt │ ├── healing_campfire_datadriven.txt │ ├── huskar │ │ ├── berserkers_blood_datadriven.txt │ │ ├── burning_spear_datadriven.txt │ │ ├── inner_vitality_datadriven.txt │ │ └── life_break_datadriven.txt │ ├── invoker │ │ ├── alacrity_datadriven.txt │ │ ├── chaos_meteor_datadriven.txt │ │ ├── cold_snap_datadriven.txt │ │ ├── deafening_blast_datadriven.txt │ │ ├── emp_datadriven.txt │ │ ├── exort_datadriven.txt │ │ ├── forge_spirit_datadriven.txt │ │ ├── forged_spirit_melting_strike_datadriven.txt │ │ ├── ghost_walk_datadriven.txt │ │ ├── ice_wall_datadriven.txt │ │ ├── invoke_datadriven.txt │ │ ├── invoker_empty1_datadriven.txt │ │ ├── invoker_empty2_datadriven.txt │ │ ├── quas_datadriven.txt │ │ ├── sun_strike_datadriven.txt │ │ ├── tornado_datadriven.txt │ │ └── wex_datadriven.txt │ ├── jakiro │ │ ├── dual_breath_datadriven.txt │ │ ├── dual_breath_fiery_datadriven.txt │ │ ├── ice_path_datadriven.txt │ │ ├── liquid_fire_datadriven.txt │ │ └── macropyre_datadriven.txt │ ├── juggernaut_blade_dance_datadriven.txt │ ├── juggernaut_blade_fury_datadriven.txt │ ├── juggernaut_healing_ward_datadriven.txt │ ├── juggernaut_omni_slash_datadriven.txt │ ├── keeper_of_the_light │ │ ├── blinding_light_datadriven.txt │ │ ├── chakra_magic_datadriven.txt │ │ ├── illuminate_datadriven.txt │ │ ├── illuminate_end_datadriven.txt │ │ ├── mana_leak_datadriven.txt │ │ ├── recall_datadriven.txt │ │ ├── spirit_form_datadriven.txt │ │ ├── spirit_form_illuminate_datadriven.txt │ │ └── spirit_form_illuminate_end_datadriven.txt │ ├── kobold_taskmaster_speed_aura_datadriven.txt │ ├── kunkka │ │ ├── ghostship_datadriven.txt │ │ ├── return_datadriven.txt │ │ ├── tidebringer_datadriven.txt │ │ ├── torrent_datadriven.txt │ │ └── x_marks_the_spot_datadriven.txt │ ├── legion_commander │ │ └── duel_datadriven.txt │ ├── legion_commander_moment_of_courage_datadriven.txt │ ├── legion_commander_overwhelming_odds_datadriven.txt │ ├── legion_commander_press_the_attack_datadriven.txt │ ├── leshrac │ │ ├── diabolic_edict_datadriven.txt │ │ ├── lightning_storm_datadriven.txt │ │ ├── pulse_nova_datadriven.txt │ │ └── split_earth_datadriven.txt │ ├── lich │ │ ├── chain_frost_datadriven.txt │ │ ├── dark_ritual_datadriven.txt │ │ ├── frost_armor_datadriven.txt │ │ └── frost_nova_datadriven.txt │ ├── life_stealer_consume_datadriven.txt │ ├── life_stealer_feast_datadriven.txt │ ├── life_stealer_infest_datadriven.txt │ ├── life_stealer_open_wounds_datadriven.txt │ ├── life_stealer_rage_datadriven.txt │ ├── lina_dragon_slave_datadriven.txt │ ├── lina_fiery_soul_alt1_datadriven.txt │ ├── lina_fiery_soul_datadriven.txt │ ├── lina_laguna_blade_datadriven.txt │ ├── lina_light_strike_array_datadriven.txt │ ├── lion_finger_of_death_datadriven.txt │ ├── lion_impale_datadriven.txt │ ├── lion_mana_drain_datadriven.txt │ ├── lion_voodoo_datadriven.txt │ ├── lone_druid_rabid_datadriven.txt │ ├── lone_druid_spirit_bear_datadriven.txt │ ├── lone_druid_spirit_bear_demolish_datadriven.txt │ ├── lone_druid_spirit_bear_entangle_datadriven.txt │ ├── lone_druid_spirit_bear_return_datadriven.txt │ ├── lone_druid_synergy_datadriven.txt │ ├── lone_druid_true_form_battle_cry_datadriven.txt │ ├── lone_druid_true_form_datadriven.txt │ ├── lone_druid_true_form_druid_datadriven.txt │ ├── luna_eclipse_datadriven.txt │ ├── luna_lucent_beam_datadriven.txt │ ├── luna_lunar_blessing_datadriven.txt │ ├── luna_moon_glaive_datadriven.txt │ ├── luna_moon_glaive_dummy_datadriven.txt │ ├── lycan_feral_impulse_datadriven.txt │ ├── lycan_howl_datadriven.txt │ ├── lycan_shapeshift_datadriven.txt │ ├── lycan_summon_wolves_critical_strike_datadriven.txt │ ├── lycan_summon_wolves_datadriven.txt │ ├── lycan_summon_wolves_invisibility_datadriven.txt │ ├── magnataur │ │ ├── empower_datadriven.txt │ │ ├── reverse_polarity_datadriven.txt │ │ ├── shockwave_datadriven.txt │ │ └── skewer_datadriven.txt │ ├── medusa_mana_shield_datadriven.txt │ ├── medusa_mystic_snake_datadriven.txt │ ├── medusa_split_shot_datadriven.txt │ ├── medusa_stone_gaze_datadriven.txt │ ├── meepo_divided_we_stand_datadriven.txt │ ├── meepo_earthbind_datadriven.txt │ ├── meepo_geostrike_datadriven.txt │ ├── meepo_poof_datadriven.txt │ ├── mirana_arrow_datadriven.txt │ ├── mirana_invis_datadriven.txt │ ├── mirana_leap_datadriven.txt │ ├── mirana_starfall_datadriven.txt │ ├── modifier_buyback_gold_penalty_datadriven.txt │ ├── modifier_illusion_datadriven.txt │ ├── modifier_invulnerable_datadriven.txt │ ├── modifier_magicimmune_datadriven.txt │ ├── morphling_adaptive_strike_datadriven.txt │ ├── morphling_morph_agi_datadriven.txt │ ├── morphling_morph_replicate_datadriven.txt │ ├── morphling_morph_str_datadriven.txt │ ├── morphling_replicate_datadriven.txt │ ├── morphling_waveform_datadriven.txt │ ├── naga_siren_ensnare_datadriven.txt │ ├── naga_siren_mirror_image_datadriven.txt │ ├── naga_siren_rip_tide_datadriven.txt │ ├── naga_siren_song_of_the_siren_cancel_datadriven.txt │ ├── naga_siren_song_of_the_siren_datadriven.txt │ ├── necrolyte │ │ ├── death_pulse_datadriven.txt │ │ ├── heartstopper_aura_datadriven.txt │ │ ├── reapers_scythe_datadriven.txt │ │ └── sadist_datadriven.txt │ ├── necronomicon_archer_aoe_datadriven.txt │ ├── necronomicon_archer_mana_burn_datadriven.txt │ ├── necronomicon_warrior_last_will_datadriven.txt │ ├── necronomicon_warrior_mana_burn_datadriven.txt │ ├── necronomicon_warrior_sight_datadriven.txt │ ├── neutral_spell_immunity_datadriven.txt │ ├── nevermore_dark_lord_datadriven.txt │ ├── nevermore_necromastery_datadriven.txt │ ├── nevermore_requiem_datadriven.txt │ ├── nevermore_shadowraze1_datadriven.txt │ ├── nevermore_shadowraze2_datadriven.txt │ ├── nevermore_shadowraze3_datadriven.txt │ ├── night_stalker_crippling_fear_datadriven.txt │ ├── night_stalker_darkness_datadriven.txt │ ├── night_stalker_hunter_in_the_night_datadriven.txt │ ├── night_stalker_void_datadriven.txt │ ├── nyx_assassin_impale_datadriven.txt │ ├── nyx_assassin_mana_burn_datadriven.txt │ ├── nyx_assassin_spiked_carapace_datadriven.txt │ ├── nyx_assassin_vendetta_datadriven.txt │ ├── obsidian_destroyer_arcane_orb_datadriven.txt │ ├── obsidian_destroyer_astral_imprisonment_datadriven.txt │ ├── obsidian_destroyer_essence_aura_datadriven.txt │ ├── obsidian_destroyer_sanity_eclipse_datadriven.txt │ ├── ogre_magi_bloodlust_datadriven.txt │ ├── ogre_magi_fireblast_datadriven.txt │ ├── ogre_magi_frost_armor_datadriven.txt │ ├── ogre_magi_ignite_datadriven.txt │ ├── ogre_magi_multicast_datadriven.txt │ ├── ogre_magi_unrefined_fireblast_datadriven.txt │ ├── omniknight_degen_aura_datadriven.txt │ ├── omniknight_guardian_angel_datadriven.txt │ ├── omniknight_purification_datadriven.txt │ ├── omniknight_repel_datadriven.txt │ ├── oracle_false_promise_datadriven.txt │ ├── oracle_fates_edict_datadriven.txt │ ├── oracle_fortunes_end_datadriven.txt │ ├── oracle_purifying_flames_datadriven.txt │ ├── phantom_assassin_blur_datadriven.txt │ ├── phantom_assassin_coup_de_grace_datadriven.txt │ ├── phantom_assassin_phantom_strike_datadriven.txt │ ├── phantom_assassin_stifling_dagger_datadriven.txt │ ├── phantom_lancer │ │ ├── doppelganger_datadriven.txt │ │ ├── juxtapose_datadriven.txt │ │ ├── phantom_rush_datadriven.txt │ │ └── spirit_lance_datadriven.txt │ ├── phoenix_fire_spirits_datadriven.txt │ ├── phoenix_icarus_dive_datadriven.txt │ ├── phoenix_icarus_dive_stop_datadriven.txt │ ├── phoenix_launch_fire_spirit_datadriven.txt │ ├── phoenix_sun_ray_datadriven.txt │ ├── phoenix_sun_ray_stop_datadriven.txt │ ├── phoenix_sun_ray_toggle_move_datadriven.txt │ ├── phoenix_sun_ray_toggle_move_empty_datadriven.txt │ ├── phoenix_supernova_datadriven.txt │ ├── polar_furbolg_ursa_warrior_thunder_clap_datadriven.txt │ ├── puck_dream_coil_datadriven.txt │ ├── puck_ethereal_jaunt_datadriven.txt │ ├── puck_illusory_orb_datadriven.txt │ ├── puck_phase_shift_datadriven.txt │ ├── puck_waning_rift_datadriven.txt │ ├── pudge_dismember_lua.txt │ ├── pudge_flesh_heap_lua.txt │ ├── pudge_meat_hook_lua.txt │ ├── pudge_rot_lua.txt │ ├── pugna_decrepify_datadriven.txt │ ├── pugna_life_drain_datadriven.txt │ ├── pugna_nether_blast_datadriven.txt │ ├── pugna_nether_ward_datadriven.txt │ ├── queenofpain_blink_datadriven.txt │ ├── queenofpain_scream_of_pain_datadriven.txt │ ├── queenofpain_shadow_strike_datadriven.txt │ ├── queenofpain_sonic_wave_datadriven.txt │ ├── rattletrap_battery_assault_datadriven.txt │ ├── rattletrap_hookshot_datadriven.txt │ ├── rattletrap_power_cogs_datadriven.txt │ ├── rattletrap_rocket_flare_datadriven.txt │ ├── razor_eye_of_the_storm_datadriven.txt │ ├── razor_plasma_field_datadriven.txt │ ├── razor_static_link_datadriven.txt │ ├── razor_unstable_current_datadriven.txt │ ├── riki │ │ ├── blink_strike_datadriven.txt │ │ ├── cloak_and_dagger_datadriven.txt │ │ ├── smoke_screen_datadriven.txt │ │ └── tricks_of_the_trade.txt │ ├── roshan__halloween_shell_datadriven.txt │ ├── roshan_bash_datadriven.txt │ ├── roshan_devotion_datadriven.txt │ ├── roshan_halloween_angry_datadriven.txt │ ├── roshan_halloween_apocalypse_datadriven.txt │ ├── roshan_halloween_burn_datadriven.txt │ ├── roshan_halloween_candy_datadriven.txt │ ├── roshan_halloween_fed_datadriven.txt │ ├── roshan_halloween_fireball_datadriven.txt │ ├── roshan_halloween_greater_bash_datadriven.txt │ ├── roshan_halloween_levels_datadriven.txt │ ├── roshan_halloween_shell_datadriven.txt │ ├── roshan_halloween_spell_block_datadriven.txt │ ├── roshan_halloween_summon_datadriven.txt │ ├── roshan_halloween_toss_datadriven.txt │ ├── roshan_halloween_wave_of_force_datadriven.txt │ ├── roshan_inherent_buffs_datadriven.txt │ ├── roshan_slam_datadriven.txt │ ├── roshan_spell_block_datadriven.txt │ ├── rubick │ │ ├── empty1_datadriven.txt │ │ ├── fade_bolt_datadriven.txt │ │ ├── null_field_datadriven.txt │ │ ├── spell_steal_datadriven.txt │ │ ├── telekinesis_datadriven.txt │ │ └── telekinesis_land_datadriven.txt │ ├── rune_doubledamage_datadriven.txt │ ├── rune_haste_datadriven.txt │ ├── rune_invis_datadriven.txt │ ├── rune_regen_datadriven.txt │ ├── sandking_burrowstrike_datadriven.txt │ ├── sandking_caustic_finale_datadriven.txt │ ├── sandking_epicenter_datadriven.txt │ ├── sandking_sand_storm_datadriven.txt │ ├── satyr_hellcaller_shockwave_datadriven.txt │ ├── satyr_hellcaller_unholy_aura_datadriven.txt │ ├── satyr_soulstealer_mana_burn_datadriven.txt │ ├── satyr_trickster_purge_datadriven.txt │ ├── shadow_demon_demonic_purge_datadriven.txt │ ├── shadow_demon_disruption_datadriven.txt │ ├── shadow_demon_shadow_poison_datadriven.txt │ ├── shadow_demon_shadow_poison_release_datadriven.txt │ ├── shadow_demon_soul_catcher_datadriven.txt │ ├── shadow_shaman_ether_shock_datadriven.txt │ ├── shadow_shaman_mass_serpent_ward_datadriven.txt │ ├── shadow_shaman_shackles_datadriven.txt │ ├── shadow_shaman_voodoo_datadriven.txt │ ├── shoot_firework_datadriven.txt │ ├── shredder_chakram_2_datadriven.txt │ ├── shredder_chakram_datadriven.txt │ ├── shredder_reactive_armor_datadriven.txt │ ├── shredder_return_chakram_2_datadriven.txt │ ├── shredder_return_chakram_datadriven.txt │ ├── shredder_timber_chain_datadriven.txt │ ├── shredder_whirling_death_datadriven.txt │ ├── silencer_curse_of_the_silent_datadriven.txt │ ├── silencer_glaives_of_wisdom_datadriven.txt │ ├── silencer_global_silence_datadriven.txt │ ├── silencer_last_word_datadriven.txt │ ├── skeleton_king_hellfire_blast_datadriven.txt │ ├── skeleton_king_mortal_strike_datadriven.txt │ ├── skeleton_king_reincarnation_datadriven.txt │ ├── skeleton_king_vampiric_aura_datadriven.txt │ ├── skywrath_mage_ancient_seal_datadriven.txt │ ├── skywrath_mage_arcane_bolt_datadriven.txt │ ├── skywrath_mage_concussive_shot_datadriven.txt │ ├── skywrath_mage_mystic_flare_datadriven.txt │ ├── slardar_amplify_damage_datadriven.txt │ ├── slardar_bash_datadriven.txt │ ├── slardar_slithereen_crush_datadriven.txt │ ├── slardar_sprint_datadriven.txt │ ├── slark_dark_pact_datadriven.txt │ ├── slark_essence_shift_datadriven.txt │ ├── slark_pounce_datadriven.txt │ ├── slark_shadow_dance_datadriven.txt │ ├── sniper_assassinate_datadriven.txt │ ├── sniper_headshot_datadriven.txt │ ├── sniper_shrapnel_datadriven.txt │ ├── sniper_take_aim_datadriven.txt │ ├── spectre │ │ ├── spectre_desolate_datadriven.txt │ │ ├── spectre_dispersion_datadriven.txt │ │ ├── spectre_haunt_datadriven.txt │ │ └── spectre_reality_datadriven.txt │ ├── spectre_desolate_datadriven.txt │ ├── spectre_dispersion_datadriven.txt │ ├── spectre_haunt_datadriven.txt │ ├── spectre_reality_datadriven.txt │ ├── spectre_spectral_dagger_datadriven.txt │ ├── spirit_breaker_charge_of_darkness_datadriven.txt │ ├── spirit_breaker_empowering_haste_datadriven.txt │ ├── spirit_breaker_greater_bash_datadriven.txt │ ├── spirit_breaker_nether_strike_datadriven.txt │ ├── storm_spirit_ball_lightning_datadriven.txt │ ├── storm_spirit_electric_vortex_datadriven.txt │ ├── storm_spirit_overload_datadriven.txt │ ├── storm_spirit_static_remnant_datadriven.txt │ ├── sven_gods_strength_datadriven.txt │ ├── sven_great_cleave_datadriven.txt │ ├── sven_storm_bolt_datadriven.txt │ ├── sven_warcry_datadriven.txt │ ├── techies_focused_detonate_datadriven.txt │ ├── techies_land_mines_datadriven.txt │ ├── techies_remote_mines_datadriven.txt │ ├── techies_remote_mines_self_detonate_datadriven.txt │ ├── techies_stasis_trap_datadriven.txt │ ├── techies_suicide_datadriven.txt │ ├── templar_assassin │ │ ├── meld_datadriven.txt │ │ ├── psi_blades_datadriven.txt │ │ ├── psionic_trap_datadriven.txt │ │ ├── refraction_datadriven.txt │ │ ├── self_trap_datadriven.txt │ │ └── trap_datadriven.txt │ ├── terrorblade_conjure_image_datadriven.txt │ ├── terrorblade_metamorphosis_datadriven.txt │ ├── terrorblade_reflection_datadriven.txt │ ├── terrorblade_sunder_datadriven.txt │ ├── test_ability.txt │ ├── throw_coal_datadriven.txt │ ├── throw_snowball_datadriven.txt │ ├── tidehunter_anchor_smash_datadriven.txt │ ├── tidehunter_gush_datadriven.txt │ ├── tidehunter_kraken_shell_datadriven.txt │ ├── tidehunter_ravage_datadriven.txt │ ├── tinker_heat_seeking_missile_datadriven.txt │ ├── tinker_laser_datadriven.txt │ ├── tinker_march_of_the_machines_datadriven.txt │ ├── tinker_rearm_datadriven.txt │ ├── tiny_avalanche_datadriven.txt │ ├── tiny_craggy_exterior_datadriven.txt │ ├── tiny_grow_datadriven.txt │ ├── tiny_toss_datadriven.txt │ ├── tornado_tempest_datadriven.txt │ ├── treant_eyes_in_the_forest_datadriven.txt │ ├── treant_leech_seed_datadriven.txt │ ├── treant_living_armor_datadriven.txt │ ├── treant_natures_guise_datadriven.txt │ ├── treant_overgrowth_datadriven.txt │ ├── troll_warlord_battle_trance_datadriven.txt │ ├── troll_warlord_berserkers_rage_datadriven.txt │ ├── troll_warlord_fervor_datadriven.txt │ ├── troll_warlord_whirling_axes_melee_datadriven.txt │ ├── troll_warlord_whirling_axes_ranged_datadriven.txt │ ├── tusk_frozen_sigil_datadriven.txt │ ├── tusk_ice_shards_datadriven.txt │ ├── tusk_launch_snowball_datadriven.txt │ ├── tusk_snowball_datadriven.txt │ ├── tusk_walrus_punch_datadriven.txt │ ├── undying_decay_datadriven.txt │ ├── undying_flesh_golem_datadriven.txt │ ├── undying_soul_rip_datadriven.txt │ ├── undying_tombstone_datadriven.txt │ ├── undying_tombstone_zombie_aura_datadriven.txt │ ├── undying_tombstone_zombie_deathstrike_datadriven.txt │ ├── ursa_earthshock_datadriven.txt │ ├── ursa_enrage_datadriven.txt │ ├── ursa_fury_swipes_datadriven.txt │ ├── ursa_overpower_datadriven.txt │ ├── vengefulspirit_command_aura_datadriven.txt │ ├── vengefulspirit_magic_missile_datadriven.txt │ ├── vengefulspirit_nether_swap_datadriven.txt │ ├── vengefulspirit_wave_of_terror_datadriven.txt │ ├── venomancer_plague_ward_datadriven.txt │ ├── venomancer_poison_nova_datadriven.txt │ ├── venomancer_poison_sting_datadriven.txt │ ├── venomancer_venomous_gale_datadriven.txt │ ├── viper_corrosive_skin_datadriven.txt │ ├── viper_nethertoxin_datadriven.txt │ ├── viper_poison_attack_datadriven.txt │ ├── viper_viper_strike_datadriven.txt │ ├── visage_grave_chill_datadriven.txt │ ├── visage_gravekeepers_cloak_datadriven.txt │ ├── visage_soul_assumption_datadriven.txt │ ├── visage_summon_familiars_datadriven.txt │ ├── visage_summon_familiars_stone_form_datadriven.txt │ ├── warlock_fatal_bonds_datadriven.txt │ ├── warlock_golem_flaming_fists_datadriven.txt │ ├── warlock_golem_permanent_immolation_datadriven.txt │ ├── warlock_rain_of_chaos_datadriven.txt │ ├── warlock_shadow_word_datadriven.txt │ ├── warlock_upheaval_datadriven.txt │ ├── weaver_geminate_attack_datadriven.txt │ ├── weaver_shukuchi_datadriven.txt │ ├── weaver_the_swarm_datadriven.txt │ ├── weaver_time_lapse_datadriven.txt │ ├── windrunner_focusfire_datadriven.txt │ ├── windrunner_powershot_datadriven.txt │ ├── windrunner_shackleshot_datadriven.txt │ ├── windrunner_windrun_datadriven.txt │ ├── wisp_empty1_datadriven.txt │ ├── wisp_empty2_datadriven.txt │ ├── wisp_overcharge_datadriven.txt │ ├── wisp_relocate_datadriven.txt │ ├── wisp_spirits_datadriven.txt │ ├── wisp_spirits_in_datadriven.txt │ ├── wisp_spirits_out_datadriven.txt │ ├── wisp_tether_break_datadriven.txt │ ├── wisp_tether_datadriven.txt │ ├── witch_doctor │ │ ├── death_ward_datadriven.txt │ │ ├── maledict_datadriven.txt │ │ ├── paralyzing_cask_datadriven.txt │ │ └── voodoo_restoration_datadriven.txt │ └── zuus │ │ ├── arc_lightning_datadriven.txt │ │ ├── lightning_bolt_datadriven.txt │ │ ├── static_field_datadriven.txt │ │ └── thundergods_wrath_datadriven.txt ├── backups │ ├── npc_abilities_custom.txt │ ├── npc_heroes_custom.txt │ ├── npc_items_custom.txt │ └── npc_units_custom.txt ├── executable.jar ├── heroes │ ├── test_dummy_melee.txt │ └── test_dummy_ranged.txt ├── items │ ├── item_abyssal_blade_datadriven.txt │ ├── item_ancient_janggo_datadriven.txt │ ├── item_arcane_boots_datadriven.txt │ ├── item_armlet_datadriven.txt │ ├── item_assault_datadriven.txt │ ├── item_basher_datadriven.txt │ ├── item_belt_of_strength_datadriven.txt │ ├── item_bfury_datadriven.txt │ ├── item_black_king_bar_datadriven.txt │ ├── item_blade_of_alacrity_datadriven.txt │ ├── item_blades_of_attack_datadriven.txt │ ├── item_blink_datadriven.txt │ ├── item_bloodstone_datadriven.txt │ ├── item_boots_datadriven.txt │ ├── item_boots_of_elves_datadriven.txt │ ├── item_bracer_datadriven.txt │ ├── item_branches_datadriven.txt │ ├── item_broadsword_datadriven.txt │ ├── item_buckler_datadriven.txt │ ├── item_butterfly_datadriven.txt │ ├── item_chainmail_datadriven.txt │ ├── item_cheese_datadriven.txt │ ├── item_circlet_datadriven.txt │ ├── item_clarity_datadriven.txt │ ├── item_claymore_datadriven.txt │ ├── item_cloak_datadriven.txt │ ├── item_dagon_datadriven.txt │ ├── item_demon_edge_datadriven.txt │ ├── item_desolator_datadriven.txt │ ├── item_eagle_datadriven.txt │ ├── item_energy_booster_datadriven.txt │ ├── item_flask_datadriven.txt │ ├── item_force_staff_datadriven.txt │ ├── item_gauntlets_datadriven.txt │ ├── item_gem_datadriven.txt │ ├── item_ghost_datadriven.txt │ ├── item_gloves_datadriven.txt │ ├── item_hand_of_midas_datadriven.txt │ ├── item_headdress_datadriven.txt │ ├── item_heart_datadriven.txt │ ├── item_heavens_halberd_datadriven.txt │ ├── item_helm_of_iron_will_datadriven.txt │ ├── item_hood_of_defiance_datadriven.txt │ ├── item_hyperstone_datadriven.txt │ ├── item_invis_sword_datadriven.txt │ ├── item_javelin_datadriven.txt │ ├── item_lifesteal_datadriven.txt │ ├── item_magic_stick_datadriven.txt │ ├── item_magic_wand_datadriven.txt │ ├── item_manta_datadriven.txt │ ├── item_mantle_datadriven.txt │ ├── item_mask_of_madness_datadriven.txt │ ├── item_medallion_of_courage_datadriven.txt │ ├── item_mekansm_datadriven.txt │ ├── item_mithril_hammer_datadriven.txt │ ├── item_monkey_king_bar_datadriven.txt │ ├── item_mystic_staff_datadriven.txt │ ├── item_null_talisman_datadriven.txt │ ├── item_oblivion_staff_datadriven.txt │ ├── item_ogre_axe_datadriven.txt │ ├── item_orb_of_venom_datadriven.txt │ ├── item_pers_datadriven.txt │ ├── item_phase_boots_datadriven.txt │ ├── item_platemail_datadriven.txt │ ├── item_point_booster_datadriven.txt │ ├── item_power_treads_datadriven.txt │ ├── item_quarterstaff_datadriven.txt │ ├── item_radiance_datadriven.txt │ ├── item_reaver_datadriven.txt │ ├── item_recipe_abyssal_blade_datadriven.txt │ ├── item_recipe_ancient_janggo_datadriven.txt │ ├── item_recipe_arcane_boots_datadriven.txt │ ├── item_recipe_armlet_datadriven.txt │ ├── item_recipe_assault_datadriven.txt │ ├── item_recipe_basher_datadriven.txt │ ├── item_recipe_bfury_datadriven.txt │ ├── item_recipe_black_king_bar_datadriven.txt │ ├── item_recipe_bloodstone_datadriven.txt │ ├── item_recipe_bracer_datadriven.txt │ ├── item_recipe_buckler_datadriven.txt │ ├── item_recipe_butterfly_datadriven.txt │ ├── item_recipe_dagon_datadriven.txt │ ├── item_recipe_desolator_datadriven.txt │ ├── item_recipe_force_staff_datadriven.txt │ ├── item_recipe_hand_of_midas_datadriven.txt │ ├── item_recipe_headdress_datadriven.txt │ ├── item_recipe_heart_datadriven.txt │ ├── item_recipe_heavens_halberd_datadriven.txt │ ├── item_recipe_hood_of_defiance_datadriven.txt │ ├── item_recipe_invis_sword_datadriven.txt │ ├── item_recipe_magic_wand_datadriven.txt │ ├── item_recipe_manta_datadriven.txt │ ├── item_recipe_mask_of_madness_datadriven.txt │ ├── item_recipe_medallion_of_courage_datadriven.txt │ ├── item_recipe_mekansm_datadriven.txt │ ├── item_recipe_monkey_king_bar_datadriven.txt │ ├── item_recipe_null_talisman_datadriven.txt │ ├── item_recipe_oblivion_staff_datadriven.txt │ ├── item_recipe_pers_datadriven.txt │ ├── item_recipe_phase_boots_datadriven.txt │ ├── item_recipe_power_treads_datadriven.txt │ ├── item_recipe_radiance_datadriven.txt │ ├── item_recipe_refresher_datadriven.txt │ ├── item_recipe_ring_of_aquila_datadriven.txt │ ├── item_recipe_ring_of_basilius_datadriven.txt │ ├── item_recipe_rod_of_atos_datadriven.txt │ ├── item_recipe_sange_and_yasha_datadriven.txt │ ├── item_recipe_sange_datadriven.txt │ ├── item_recipe_satanic_datadriven.txt │ ├── item_recipe_shivas_guard_datadriven.txt │ ├── item_recipe_skadi_datadriven.txt │ ├── item_recipe_soul_booster_datadriven.txt │ ├── item_recipe_sphere_datadriven.txt │ ├── item_recipe_ultimate_scepter_datadriven.txt │ ├── item_recipe_urn_of_shadows_datadriven.txt │ ├── item_recipe_veil_of_discord_datadriven.txt │ ├── item_recipe_vladmir_datadriven.txt │ ├── item_recipe_wraith_band_datadriven.txt │ ├── item_recipe_yasha_datadriven.txt │ ├── item_refresher_datadriven.txt │ ├── item_relic_datadriven.txt │ ├── item_ring_of_aquila_datadriven.txt │ ├── item_ring_of_basilius_datadriven.txt │ ├── item_ring_of_health_datadriven.txt │ ├── item_ring_of_protection_datadriven.txt │ ├── item_ring_of_regen_datadriven.txt │ ├── item_robe_datadriven.txt │ ├── item_rod_of_atos_datadriven.txt │ ├── item_sange_and_yasha_datadriven.txt │ ├── item_sange_datadriven.txt │ ├── item_satanic_datadriven.txt │ ├── item_shivas_guard_datadriven.txt │ ├── item_skadi_datadriven.txt │ ├── item_slippers_datadriven.txt │ ├── item_sobi_mask_datadriven.txt │ ├── item_soul_booster_datadriven.txt │ ├── item_sphere_datadriven.txt │ ├── item_staff_of_wizardry_datadriven.txt │ ├── item_talisman_of_evasion_datadriven.txt │ ├── item_ultimate_orb_datadriven.txt │ ├── item_ultimate_scepter_datadriven.txt │ ├── item_urn_of_shadows_datadriven.txt │ ├── item_veil_of_discord_datadriven.txt │ ├── item_vitality_booster_datadriven.txt │ ├── item_vladmir_datadriven.txt │ ├── item_void_stone_datadriven.txt │ ├── item_wraith_band_datadriven.txt │ └── item_yasha_datadriven.txt ├── npc_abilities_custom.txt ├── npc_heroes_custom.txt ├── npc_items_custom.txt ├── npc_units_custom.txt └── units │ ├── npc_dummy_unit.txt │ ├── plague_ward_1_datadriven.txt │ ├── plague_ward_2_datadriven.txt │ ├── plague_ward_3_datadriven.txt │ ├── plague_ward_4_datadriven.txt │ └── witch_doctor_death_ward_datadriven.txt └── vscripts ├── addon_game_mode.lua ├── barebones.lua ├── heroes ├── hero_abaddon │ ├── aphotic_shield.lua │ ├── borrowed_time.lua │ └── death_coil.lua ├── hero_alchemist │ ├── acid_spray.lua │ ├── goblins_greed.lua │ └── unstable_concoction.lua ├── hero_ancient_apparition │ ├── chilling_touch.lua │ ├── cold_feet.lua │ ├── ice_blast.lua │ └── ice_vortex.lua ├── hero_antimage │ ├── blink.lua │ ├── mana_break.lua │ └── mana_void.lua ├── hero_arc_warden │ ├── arc_warden_flux_lua.lua │ ├── arc_warden_magnetic_field_lua.lua │ ├── arc_warden_spark_wraith_lua.lua │ └── arc_warden_tempest_double_lua.lua ├── hero_axe │ ├── battle_hunger.lua │ ├── berserkers_call.lua │ ├── counter_helix.lua │ └── culling_blade.lua ├── hero_bane │ ├── fiends_grip.lua │ └── nightmare.lua ├── hero_beastmaster │ └── call_of_the_wild.lua ├── hero_bloodseeker │ ├── blood_rite.lua │ ├── bloodrage.lua │ ├── rupture.lua │ └── thirst.lua ├── hero_bounty_hunter │ ├── jinada.lua │ └── track.lua ├── hero_brewmaster │ ├── drunken_brawler.lua │ └── primal_split.lua ├── hero_bristleback │ ├── bristleback.lua │ ├── quill_spray.lua │ ├── viscous_nasal_goo.lua │ └── warpath.lua ├── hero_broodmother │ ├── insatiable_hunger.lua │ └── spin_web.lua ├── hero_centaur │ ├── double_edge.lua │ ├── return.lua │ └── stampede.lua ├── hero_chaos_knight │ ├── chaos_bolt.lua │ ├── phantasm.lua │ └── reality_rift.lua ├── hero_chen │ ├── hand_of_god.lua │ ├── holy_persuasion.lua │ └── test_of_faith.lua ├── hero_clinkz │ └── death_pact.lua ├── hero_crystal_maiden │ ├── crystal_nova.lua │ └── freezing_field.lua ├── hero_dark_seer │ ├── ion_shell.lua │ ├── vacuum.lua │ └── wall_of_replica.lua ├── hero_dazzle │ ├── poison_touch.lua │ ├── shadow_wave.lua │ └── weave.lua ├── hero_death_prophet │ ├── exorcism.lua │ └── spirit_siphon.lua ├── hero_disruptor │ ├── glimpse.lua │ ├── kinetic_field.lua │ ├── static_storm.lua │ └── thunder_strike.lua ├── hero_doom_bringer │ ├── devour.lua │ ├── doom.lua │ ├── infernal_blade.lua │ ├── lvl_death.lua │ └── scorched_earth.lua ├── hero_dragon_knight │ ├── elder_dragon_form.lua │ └── modifiers │ │ └── modifier_elder_dragon_form_model_lua.lua ├── hero_drow_ranger │ ├── marksmanship.lua │ ├── trueshot.lua │ └── wave_of_silence.lua ├── hero_earthshaker │ ├── aftershock.lua │ ├── echo_slam.lua │ └── fissure.lua ├── hero_ember_spirit │ ├── fire_remnant.lua │ ├── flame_guard.lua │ ├── searing_chains.lua │ └── sleight_of_fist.lua ├── hero_enigma │ ├── black_hole.lua │ ├── demonic_conversion.lua │ └── midnight_pulse.lua ├── hero_faceless_void │ ├── backtrack.lua │ ├── chronosphere.lua │ ├── modifiers │ │ └── modifier_chronosphere_speed_lua.lua │ ├── time_dilation.lua │ └── time_walk.lua ├── hero_furion │ ├── force_of_nature.lua │ ├── sprout.lua │ ├── teleportation.lua │ └── wrath_of_nature.lua ├── hero_gyrocopter │ ├── call_down.lua │ ├── flak_cannon.lua │ └── homing_missile.lua ├── hero_huskar │ ├── berserkers_blood.lua │ ├── burning_spear.lua │ ├── inner_vitality.lua │ ├── life_break.lua │ └── modifiers │ │ ├── modifier_berserkers_blood_lua.lua │ │ └── modifier_inner_vitality_lua.lua ├── hero_invoker │ ├── alacrity.lua │ ├── chaos_meteor.lua │ ├── cold_snap.lua │ ├── deafening_blast.lua │ ├── emp.lua │ ├── exort.lua │ ├── forge_spirit.lua │ ├── ghost_walk.lua │ ├── ice_wall.lua │ ├── invoke.lua │ ├── melting_strike.lua │ ├── quas.lua │ ├── sun_strike.lua │ ├── tornado.lua │ └── wex.lua ├── hero_jakiro │ ├── dual_breath.lua │ ├── ice_path.lua │ ├── liquid_fire.lua │ └── macropyre.lua ├── hero_keeper_of_the_light │ ├── chakra_magic.lua │ ├── illuminate.lua │ ├── mana_leak.lua │ ├── recall.lua │ ├── spirit_form.lua │ └── spirit_form_illuminate.lua ├── hero_kunkka │ ├── ghostship.lua │ ├── tidebringer.lua │ ├── torrent.lua │ └── x_marks_the_spot.lua ├── hero_legion_commander │ └── duel.lua ├── hero_leshrac │ ├── diabolic_edict.lua │ ├── lightning_storm.lua │ └── pulse_nova.lua ├── hero_lich │ ├── chain_frost.lua │ ├── dark_ritual.lua │ └── frost_armor.lua ├── hero_life_stealer │ ├── feast.lua │ ├── infest.lua │ └── rage.lua ├── hero_lina │ └── fiery_soul.lua ├── hero_lion │ ├── mana_drain.lua │ ├── modifiers │ │ └── modifier_voodoo_lua.lua │ └── voodoo.lua ├── hero_lone_druid │ ├── rabid.lua │ ├── spirit_bear.lua │ ├── synergy.lua │ └── true_form.lua ├── hero_luna │ ├── eclipse.lua │ └── moon_glaive.lua ├── hero_lycan │ ├── feral_impulse.lua │ ├── howl.lua │ ├── modifiers │ │ ├── modifier_shapeshift_model_lua.lua │ │ └── modifier_shapeshift_speed_lua.lua │ ├── shapeshift.lua │ └── summon_wolves.lua ├── hero_magnataur │ ├── reverse_polarity.lua │ └── skewer.lua ├── hero_medusa │ ├── mana_shield.lua │ ├── mystic_snake.lua │ ├── split_shot.lua │ └── stone_gaze.lua ├── hero_mirana │ ├── arrow.lua │ └── leap.lua ├── hero_morphling │ ├── morph_agi.lua │ └── morph_str.lua ├── hero_naga_siren │ ├── ensnare.lua │ ├── mirror_image.lua │ ├── rip_tide.lua │ └── song_of_the_siren.lua ├── hero_necrolyte │ ├── heartstopper_aura.lua │ ├── reapers_scythe.lua │ └── sadist.lua ├── hero_nevermore │ ├── necromastery.lua │ └── shadowraze.lua ├── hero_night_stalker │ ├── crippling_fear.lua │ ├── darkness.lua │ ├── hunter_in_the_night.lua │ └── void.lua ├── hero_nyx_assassin │ ├── mana_burn.lua │ ├── spiked_carapace.lua │ └── vendetta.lua ├── hero_obsidian_destroyer │ ├── arcane_orb.lua │ ├── astral_imprisonment.lua │ ├── essence_aura.lua │ └── sanity_eclipse.lua ├── hero_ogre_magi │ ├── bloodlust.lua │ ├── ignite.lua │ └── multicast.lua ├── hero_phantom_assassin │ ├── blur.lua │ └── phantom_strike.lua ├── hero_phantom_lancer │ ├── doppelganger.lua │ ├── juxtapose.lua │ ├── phantom_rush.lua │ └── spirit_lance.lua ├── hero_phoenix │ ├── fire_spirits.lua │ ├── icarus_dive.lua │ ├── sun_ray.lua │ └── supernova.lua ├── hero_puck │ ├── dream_coil.lua │ ├── illusory_orb.lua │ └── phase_shift.lua ├── hero_pudge │ ├── Modifiers │ │ ├── modifier_dismember_lua.lua │ │ ├── modifier_flesh_heap_lua.lua │ │ ├── modifier_meat_hook_followthrough_lua.lua │ │ ├── modifier_meat_hook_lua.lua │ │ └── modifier_rot_lua.lua │ ├── pudge_dismember_lua.lua │ ├── pudge_flesh_heap_lua.lua │ ├── pudge_meat_hook_lua.lua │ └── pudge_rot_lua.lua ├── hero_pugna │ ├── life_drain.lua │ └── nether_ward.lua ├── hero_queenofpain │ ├── blink.lua │ └── shadow_strike.lua ├── hero_riki │ ├── blink_strike.lua │ ├── cloak_and_dagger.lua │ └── tricks_of_the_trade.lua ├── hero_rubick │ ├── fade_bolt.lua │ ├── spell_steal.lua │ └── telekinesis.lua ├── hero_sand_king │ ├── burrowstrike.lua │ ├── caustic_finale.lua │ └── sand_storm.lua ├── hero_shadow_shaman │ ├── mass_serpent_ward.lua │ ├── modifiers │ │ └── modifier_voodoo_lua.lua │ ├── shackles.lua │ ├── shock.lua │ └── voodoo.lua ├── hero_silencer │ ├── curse_of_the_silent.lua │ ├── glaives_of_wisdom.lua │ └── last_word.lua ├── hero_skeleton_king │ ├── reincarnation.lua │ └── vampiric_aura.lua ├── hero_skywrath_mage │ ├── arcane_bolt.lua │ ├── concussive_shot.lua │ └── mystic_flare.lua ├── hero_slardar │ └── amplify_damage.lua ├── hero_slark │ └── essence_shift.lua ├── hero_sniper │ ├── assassinate.lua │ └── shrapnel.lua ├── hero_spectre │ ├── desolate.lua │ ├── dispersion.lua │ ├── haunt.lua │ ├── modifiers │ │ └── modifier_spectre_dispersion_lua.lua │ └── reality.lua ├── hero_stormspirit │ ├── ball_lightning.lua │ ├── electric_vortex.lua │ ├── overload.lua │ └── static_remnant.lua ├── hero_techies │ ├── land_mines.lua │ ├── remote_mines.lua │ ├── stasis_trap.lua │ └── suicide.lua ├── hero_templar_assassin │ ├── psi_blades.lua │ ├── psionic_trap.lua │ └── refraction.lua ├── hero_terrorblade │ ├── conjure_image.lua │ ├── metamorphosis.lua │ ├── reflection.lua │ └── sunder.lua ├── hero_tinker │ ├── heat_seeking_missile.lua │ ├── march_of_the_machines.lua │ └── rearm.lua ├── hero_treant │ └── living_armor.lua ├── hero_troll_warlord │ ├── berserkers_rage.lua │ ├── fervor.lua │ ├── whirling_axes_melee.lua │ └── whirling_axes_ranged.lua ├── hero_ursa │ ├── enrage.lua │ ├── fury_swipes.lua │ └── overpower.lua ├── hero_vengefulspirit │ ├── command_aura.lua │ ├── nether_swap.lua │ └── wave_of_terror.lua ├── hero_venomancer │ ├── plague_ward.lua │ ├── poison_nova.lua │ ├── poison_sting.lua │ └── venomous_gale.lua ├── hero_viper │ └── nethertoxin.lua ├── hero_weaver │ └── time_lapse.lua ├── hero_windrunner │ ├── focusfire.lua │ ├── powershot.lua │ └── shackleshot.lua ├── hero_wisp │ ├── overcharge.lua │ ├── relocate.lua │ ├── spirits.lua │ └── tether.lua ├── hero_witch_doctor │ ├── death_ward.lua │ ├── maledict.lua │ └── paralyzing_cask.lua └── hero_zuus │ ├── arc_lightning.lua │ ├── lightning_bolt.lua │ ├── static_field.lua │ └── thundergods_wrath.lua ├── items ├── item_abyssal_blade.lua ├── item_ancient_janggo.lua ├── item_arcane_boots.lua ├── item_armlet.lua ├── item_assault.lua ├── item_basher.lua ├── item_bfury.lua ├── item_black_king_bar.lua ├── item_blink.lua ├── item_bloodstone.lua ├── item_buckler.lua ├── item_butterfly.lua ├── item_cheese.lua ├── item_clarity.lua ├── item_dagon.lua ├── item_flask.lua ├── item_force_staff.lua ├── item_hand_of_midas.lua ├── item_heart.lua ├── item_heavens_halberd.lua ├── item_invis_sword.lua ├── item_lifesteal.lua ├── item_magic_stick.lua ├── item_magic_wand.lua ├── item_manta.lua ├── item_mask_of_madness.lua ├── item_medallion_of_courage.lua ├── item_mekansm.lua ├── item_orb_of_venom.lua ├── item_power_treads.lua ├── item_radiance.lua ├── item_refresher.lua ├── item_ring_of_aquila.lua ├── item_ring_of_basilius.lua ├── item_sange.lua ├── item_sange_and_yasha.lua ├── item_satanic.lua ├── item_shivas_guard.lua ├── item_skadi.lua ├── item_sphere.lua ├── item_ultimate_scepter.lua ├── item_urn_of_shadows.lua └── item_vladmir.lua ├── libraries └── modifiers │ ├── modifier_movespeed_cap.lua │ └── modifier_movespeed_cap_low.lua ├── physics.lua ├── timers.lua └── util.lua /.gitignore: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | !.gitignore 4 | !LICENSE.md 5 | #!.gitattributes this is optional 6 | 7 | # Ignore game folder, and all default dota_addons folders 8 | !Game 9 | /Game/* 10 | !/Game/scripts 11 | 12 | 13 | 14 | # Ignore content folder, and all default dota_addons folders 15 | /Content/* -------------------------------------------------------------------------------- /game/scripts/custom_events.txt: -------------------------------------------------------------------------------- 1 | "CustomEvents" 2 | { 3 | 4 | "custom_error_show" 5 | { 6 | "player_ID" "short" 7 | "_error" "string" 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/abyssal_underlord_cancel_dark_rift_datadriven.txt: -------------------------------------------------------------------------------- 1 | "abyssal_underlord_cancel_dark_rift_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" 7 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 8 | "MaxLevel" "1" 9 | 10 | // Casting 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCastPoint" "0.0 0.0 0.0 0.0" 13 | } 14 | 15 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/alpha_wolf_command_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "alpha_wolf_command_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_damage_pct" "30" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/alpha_wolf_critical_strike_datadriven.txt: -------------------------------------------------------------------------------- 1 | "alpha_wolf_critical_strike_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "crit_chance" "20" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "crit_mult" "200" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/antimage/spell_shield_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Remwrite of the Antimage Spellshield ability 2 | // Author: Pizzalol 3 | // Date: October 13, 2015 4 | // Version: 6.85 5 | // Type: Datadriven 6 | "spell_shield_datadriven" 7 | { 8 | // General 9 | //------------------------------------------------------------------------------------------------------------- 10 | "BaseClass" "ability_datadriven" 11 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 12 | "AbilityTextureName" "antimage_spell_shield" 13 | 14 | // Special 15 | //------------------------------------------------------------------------------------------------------------- 16 | "AbilitySpecial" 17 | { 18 | "01" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "spell_shield_resistance" "26 34 42 50" 22 | } 23 | } 24 | 25 | "Modifiers" 26 | { 27 | "modifier_spell_shield_datadriven" 28 | { 29 | "Passive" "1" 30 | "IsHidden" "1" 31 | 32 | "Properties" 33 | { 34 | "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS" "%spell_shield_resistance" 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/arc_warden_magnetic_field_lua.txt: -------------------------------------------------------------------------------- 1 | "arc_warden_magnetic_field" 2 | { 3 | "BaseClass" "ability_lua" 4 | "ScriptFile" "heroes/hero_arc_warden/arc_warden_magnetic_field_lua.lua" 5 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT" 6 | "AbilityRadius" "275" 7 | "AbilityCastPoint" "0.3" 8 | "AbilityCastRange" "900" 9 | "AbilityManaCost" "110" 10 | "AbilityCooldown" "50" 11 | 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_FLOAT" 17 | "field_duration" "3.5 4 4.5 5" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "evasion" "100" 23 | } 24 | "03" 25 | { 26 | "var_type" "FIELD_INTEGER" 27 | "bonus_attack_speed" "50 60 70 80" 28 | } 29 | "04" 30 | { 31 | "var_type" "FIELD_INTEGER" 32 | "radius" "275" 33 | } 34 | } 35 | "precache" 36 | { 37 | 38 | "particle" "particles/units/heroes/hero_disruptor/disruptor_static_storm.vpcf" 39 | } 40 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/arc_warden_tempest_double_lua.txt: -------------------------------------------------------------------------------- 1 | "arc_warden_tempest_double" 2 | { 3 | "BaseClass" "ability_lua" 4 | "ScriptFile" "heroes/hero_arc_warden/arc_warden_tempest_double_lua.lua" 5 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 6 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 7 | 8 | "AbilityCastPoint" "0.3" 9 | "AbilityCooldown" "65 60 55" 10 | 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "duration" "20" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "health_cost" "30 15 0" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "mana_cost" "30 15 0" 27 | } 28 | } 29 | "precache" 30 | { 31 | "particle" "particles/status_fx/status_effect_ancestral_spirit.vpcf" 32 | } 33 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/attribute_bonus_datadriven.txt: -------------------------------------------------------------------------------- 1 | "attribute_bonus_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_ATTRIBUTES" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_FLOAT" 16 | "attribute_bonus_per_level" "2.0" 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/backdoor_protection_datadriven.txt: -------------------------------------------------------------------------------- 1 | "backdoor_protection_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "MaxLevel" "1" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "radius" "900" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_FLOAT" 21 | "activation_time" "15.0" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "regen_rate" "90" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/backdoor_protection_in_base_datadriven.txt: -------------------------------------------------------------------------------- 1 | "backdoor_protection_in_base_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "MaxLevel" "1" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_FLOAT" 16 | "activation_time" "15.0" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "regen_rate" "90" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/beastmaster_boar_poison_datadriven.txt: -------------------------------------------------------------------------------- 1 | "beastmaster_boar_poison_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "attack_speed" "-20" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "movement_speed" "-20" 23 | } 24 | "03" 25 | { 26 | "var_type" "FIELD_FLOAT" 27 | "duration" "3.0" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/beastmaster_greater_boar_poison_datadriven.txt: -------------------------------------------------------------------------------- 1 | "beastmaster_greater_boar_poison_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "attack_speed" "-35" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "movement_speed" "-35" 23 | } 24 | "03" 25 | { 26 | "var_type" "FIELD_FLOAT" 27 | "duration" "3.0" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/beastmaster_hawk_invisibility_datadriven.txt: -------------------------------------------------------------------------------- 1 | "beastmaster_hawk_invisibility_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_FLOAT" 15 | "fade_time" "1.0" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_FLOAT" 20 | "idle_invis_delay" "3.0" // This plus the fade time equal the total time before the hawk goes invis. 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/big_thunder_lizard_frenzy_datadriven.txt: -------------------------------------------------------------------------------- 1 | "big_thunder_lizard_frenzy_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 8 | 9 | // Stats 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.0" 12 | "AbilityCooldown" "8.0" 13 | "AbilityManaCost" "50" 14 | 15 | // Special 16 | //------------------------------------------------------------------------------------------------------------- 17 | "AbilitySpecial" 18 | { 19 | "01" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "attackspeed_bonus" "75" 23 | } 24 | "02" 25 | { 26 | "var_type" "FIELD_FLOAT" 27 | "duration" "8.0" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/black_dragon_splash_attack_datadriven.txt: -------------------------------------------------------------------------------- 1 | "black_dragon_splash_attack_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "range_close" "50" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_FLOAT" 21 | "damage_percent_close" "100.0" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "range_mid" "150" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_FLOAT" 31 | "damage_percent_mid" "50.0" 32 | } 33 | "05" 34 | { 35 | "var_type" "FIELD_INTEGER" 36 | "range_far" "250" 37 | } 38 | "06" 39 | { 40 | "var_type" "FIELD_FLOAT" 41 | "damage_percent_far" "25.0" 42 | } 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/blue_dragonspawn_overseer_devotion_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "blue_dragonspawn_overseer_devotion_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_armor" "3" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/blue_dragonspawn_overseer_evasion_datadriven.txt: -------------------------------------------------------------------------------- 1 | "blue_dragonspawn_overseer_evasion_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "evasion_chance_pct" "15" 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/blue_dragonspawn_sorcerer_evasion_datadriven.txt: -------------------------------------------------------------------------------- 1 | "blue_dragonspawn_sorcerer_evasion_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "evasion_chance_pct" "15" 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/brewmaster_earth_pulverize_datadriven.txt: -------------------------------------------------------------------------------- 1 | "brewmaster_earth_pulverize_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_INTEGER" 15 | "damage_inner" "40 40 40 40" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "radius_inner" "150 150 150 150" 21 | } 22 | "03" 23 | { 24 | "var_type" "FIELD_INTEGER" 25 | "damage_outer" "20 20 20 20" 26 | } 27 | "04" 28 | { 29 | "var_type" "FIELD_INTEGER" 30 | "radius_outer" "250 250 250 250" 31 | } 32 | "05" 33 | { 34 | "var_type" "FIELD_INTEGER" 35 | "chance" "20 20 20 20" 36 | } 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/brewmaster_earth_spell_immunity_datadriven.txt: -------------------------------------------------------------------------------- 1 | "brewmaster_earth_spell_immunity_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/brewmaster_fire_permanent_immolation_datadriven.txt: -------------------------------------------------------------------------------- 1 | "brewmaster_fire_permanent_immolation_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "damage" "15 30 45" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "radius" "220 220 220" 23 | } 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/broodmother_poison_sting_datadriven.txt: -------------------------------------------------------------------------------- 1 | "broodmother_poison_sting_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 9 | 10 | // Stats 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityModifierSupportBonus" "15" 13 | 14 | // Special 15 | //------------------------------------------------------------------------------------------------------------- 16 | "AbilitySpecial" 17 | { 18 | "01" 19 | { 20 | "var_type" "FIELD_FLOAT" 21 | "duration" "6.0" 22 | } 23 | "02" 24 | { 25 | "var_type" "FIELD_FLOAT" 26 | "duration_hero" "2.0" 27 | } 28 | "03" 29 | { 30 | "var_type" "FIELD_INTEGER" 31 | "damage_per_second" "8" 32 | } 33 | "04" 34 | { 35 | "var_type" "FIELD_INTEGER" 36 | "movement_speed" "-15" 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/broodmother_spawn_spiderite_datadriven.txt: -------------------------------------------------------------------------------- 1 | "broodmother_spawn_spiderite_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_FLOAT" 15 | "spiderite_duration" "60.0" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_FLOAT" 20 | "buff_duration" "2.0" 21 | } 22 | } 23 | } 24 | 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/centaur_khan_endurance_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "centaur_khan_endurance_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_attack_speed" "15" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/centaur_khan_war_stomp_datadriven.txt: -------------------------------------------------------------------------------- 1 | "centaur_khan_war_stomp_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 8 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 9 | 10 | // Stats 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCastPoint" "0.5" 13 | "AbilityCooldown" "20.0" 14 | "AbilityDamage" "25" 15 | "AbilityManaCost" "100" 16 | 17 | // Special 18 | //------------------------------------------------------------------------------------------------------------- 19 | "AbilitySpecial" 20 | { 21 | "01" 22 | { 23 | "var_type" "FIELD_INTEGER" 24 | "radius" "250" 25 | } 26 | "02" 27 | { 28 | "var_type" "FIELD_FLOAT" 29 | "non_hero_stun_duration" "3.0" 30 | } 31 | "03" 32 | { 33 | "var_type" "FIELD_FLOAT" 34 | "hero_stun_duration" "2.0" 35 | } 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_burst_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_burst_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_DONT_CANCEL_MOVEMENT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | // Time 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCooldown" "90.0" 12 | 13 | // Special 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilitySpecial" 16 | { 17 | "01" 18 | { 19 | "var_type" "FIELD_FLOAT" 20 | "duration" "4.0" 21 | } 22 | "02" 23 | { 24 | "var_type" "FIELD_INTEGER" 25 | "movement_speed" "650" 26 | } 27 | "03" 28 | { 29 | "var_type" "FIELD_FLOAT" 30 | "damage_absorb" "250" 31 | } 32 | } 33 | 34 | "MaxLevel" "1" 35 | } 36 | 37 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_go_to_secretshop_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_go_to_secretshop_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | "MaxLevel" "1" 10 | } 11 | 12 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_morph_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_morph_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY" 8 | "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" 9 | "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" 10 | 11 | // Time 12 | //------------------------------------------------------------------------------------------------------------- 13 | "AbilityCooldown" "0.1" 14 | "AbilityCastRange" "0" 15 | 16 | // Special 17 | //------------------------------------------------------------------------------------------------------------- 18 | "AbilitySpecial" 19 | { 20 | } 21 | 22 | "MaxLevel" "1" 23 | } 24 | 25 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_return_stash_items_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_return_stash_items_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "handoff_distance" "400" 17 | } 18 | } 19 | 20 | "MaxLevel" "1" 21 | } 22 | 23 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_return_to_base_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_return_to_base_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | "MaxLevel" "1" 10 | } 11 | 12 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_shield_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_shield_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | // Time 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCooldown" "20.0" 12 | 13 | // Special 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilitySpecial" 16 | { 17 | "01" 18 | { 19 | "var_type" "FIELD_FLOAT" 20 | "duration" "7.0" 21 | } 22 | } 23 | 24 | "MaxLevel" "1" 25 | } 26 | 27 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_take_stash_items_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_take_stash_items_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "stash_pickup_distance" "250" 17 | } 18 | } 19 | 20 | "MaxLevel" "1" 21 | } 22 | 23 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/courier_transfer_items_datadriven.txt: -------------------------------------------------------------------------------- 1 | "courier_transfer_items_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "handoff_distance" "400" 17 | } 18 | } 19 | 20 | "MaxLevel" "1" 21 | } 22 | 23 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/dark_troll_warlord_raise_dead_datadriven.txt: -------------------------------------------------------------------------------- 1 | "dark_troll_warlord_raise_dead_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 8 | 9 | // Stats 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.5" 12 | "AbilityCooldown" "25.0" 13 | "AbilityManaCost" "50" 14 | 15 | // Special 16 | //------------------------------------------------------------------------------------------------------------- 17 | "AbilitySpecial" 18 | { 19 | "01" 20 | { 21 | "var_type" "FIELD_FLOAT" 22 | "duration" "40.0" 23 | } 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/default_attack_datadriven.txt: -------------------------------------------------------------------------------- 1 | "default_attack_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | 7 | // Special 8 | //------------------------------------------------------------------------------------------------------------- 9 | "AbilitySpecial" 10 | { 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/doom_bringer/doom_bringer_empty1_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of the Doom Empty1 ability 2 | // Author: Pizzalol 3 | // Date: January 27, 2016 4 | // Version: 6.86 5 | // Type: Datadriven 6 | // NOTES: This is a placeholder ability for the Devour ability 7 | // 8 | // ----- FILE REQUIREMENTS ----- 9 | // Script files: 10 | // scripts/vscripts/heroes/hero_doom_bringer/devour.lua 11 | // 12 | // KV files: 13 | // scripts/npc/abilities/doom_bringer/devour_datadriven.txt 14 | // scripts/npc/abilities/doom_bringer/doom_bringer_empty2_datadriven.txt 15 | "doom_bringer_empty1_datadriven" 16 | { 17 | // General 18 | //------------------------------------------------------------------------------------------------------------- 19 | "BaseClass" "ability_datadriven" 20 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 21 | "MaxLevel" "0" 22 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/doom_bringer/doom_bringer_empty2_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of the Doom Empty2 ability 2 | // Author: Pizzalol 3 | // Date: January 27, 2016 4 | // Version: 6.86 5 | // Type: Datadriven 6 | // NOTES: This is a placeholder ability for the Devour ability 7 | // 8 | // ----- FILE REQUIREMENTS ----- 9 | // Script files: 10 | // scripts/vscripts/heroes/hero_doom_bringer/devour.lua 11 | // 12 | // KV files: 13 | // scripts/npc/abilities/doom_bringer/devour_datadriven.txt 14 | // scripts/npc/abilities/doom_bringer/doom_bringer_empty1_datadriven.txt 15 | "doom_bringer_empty2_datadriven" 16 | { 17 | // General 18 | //------------------------------------------------------------------------------------------------------------- 19 | "BaseClass" "ability_datadriven" 20 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 21 | "MaxLevel" "0" 22 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/dragon_knight_frost_breath_datadriven.txt: -------------------------------------------------------------------------------- 1 | "dragon_knight_frost_breath_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_movement_speed" "-30" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_attack_speed" "-20" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_FLOAT" 26 | "duration" "3.0" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/elder_titan_natural_order_datadriven.txt: -------------------------------------------------------------------------------- 1 | "elder_titan_natural_order_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" 7 | "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" 8 | "AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC" 9 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 10 | 11 | // Special 12 | //------------------------------------------------------------------------------------------------------------- 13 | "AbilitySpecial" 14 | { 15 | "01" 16 | { 17 | "var_type" "FIELD_INTEGER" 18 | "radius" "275 275 275 275" 19 | } 20 | "02" 21 | { 22 | "var_type" "FIELD_INTEGER" 23 | "armor_reduction_pct" "40 60 80 100" 24 | } 25 | "03" 26 | { 27 | "var_type" "FIELD_INTEGER" 28 | "magic_resistance_pct" "12 19 26 33" 29 | } 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/elder_titan_return_spirit_datadriven.txt: -------------------------------------------------------------------------------- 1 | "elder_titan_return_spirit_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "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" 7 | "MaxLevel" "1" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.0 0.0 0.0 0.0" 12 | 13 | // Time 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilityCooldown" "0.0 0.0 0.0" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/enchantress_untouchable_datadriven.txt: -------------------------------------------------------------------------------- 1 | "enchantress_untouchable_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" 8 | 9 | "AbilityDuration" "4" 10 | 11 | // Special 12 | //------------------------------------------------------------------------------------------------------------- 13 | "AbilitySpecial" 14 | { 15 | "01" 16 | { 17 | "var_type" "FIELD_INTEGER" 18 | "slow_attack_speed" "-30 -60 -90 -120" 19 | } 20 | "02" 21 | { 22 | "var_type" "FIELD_INTEGER" 23 | "slow_duration" "4" 24 | } 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/enraged_wildkin_tornado_datadriven.txt: -------------------------------------------------------------------------------- 1 | "enraged_wildkin_tornado_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_CHANNELLED" 8 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 9 | 10 | // Stats 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCastRange" "500" 13 | "AbilityCastPoint" "0.75" 14 | "AbilityCooldown" "70.0" 15 | "AbilityChannelTime" "40.0" 16 | "AbilityManaCost" "200" 17 | 18 | // Special 19 | //------------------------------------------------------------------------------------------------------------- 20 | "AbilitySpecial" 21 | { 22 | "01" // Only for tooltip, redundant with AbilityChannelTime 23 | { 24 | "var_type" "FIELD_FLOAT" 25 | "duration" "40.0" 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/enraged_wildkin_toughness_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "enraged_wildkin_toughness_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_armor" "3" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/forest_troll_high_priest_mana_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "forest_troll_high_priest_mana_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "mana_regen" "2" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | // Next free ID 5523 27 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/ghost_frost_attack_datadriven.txt: -------------------------------------------------------------------------------- 1 | "ghost_frost_attack_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 8 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "movespeed_slow" "-20" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "attackspeed_slow" "-20" 23 | } 24 | "03" 25 | { 26 | "var_type" "FIELD_FLOAT" 27 | "duration" "1.5" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/giant_wolf_critical_strike_datadriven.txt: -------------------------------------------------------------------------------- 1 | "giant_wolf_critical_strike_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "crit_chance" "20" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "crit_mult" "200" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/gnoll_assassin_envenomed_weapon_datadriven.txt: -------------------------------------------------------------------------------- 1 | "gnoll_assassin_envenomed_weapon_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "damage_per_second" "2" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_FLOAT" 22 | "non_hero_duration" "20.0" 23 | } 24 | "03" 25 | { 26 | "var_type" "FIELD_FLOAT" 27 | "hero_duration" "10.0" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/greevil_miniboss_sight_datadriven.txt: -------------------------------------------------------------------------------- 1 | "greevil_miniboss_sight_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "radius" "1000" 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/greevil_miniboss_white_degen_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "greevil_miniboss_white_degen_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA" 7 | "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastRange" "300" 12 | 13 | // Special 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilitySpecial" 16 | { 17 | "01" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "speed_bonus" "-28" 21 | } 22 | "02" 23 | { 24 | "var_type" "FIELD_INTEGER" 25 | "radius" "315" 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/greevil_rot_datadriven.txt: -------------------------------------------------------------------------------- 1 | "greevil_rot_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0 0 0 0" 12 | 13 | // Special 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilitySpecial" 16 | { 17 | "01" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "rot_radius" "250" 21 | } 22 | "02" 23 | { 24 | "var_type" "FIELD_FLOAT" 25 | "rot_tick" "0.2" 26 | } 27 | "03" 28 | { 29 | "var_type" "FIELD_INTEGER" 30 | "rot_slow" "-20" 31 | } 32 | "04" 33 | { 34 | "var_type" "FIELD_INTEGER" 35 | "customval_damage" "20" 36 | } 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/greevil_time_lock_datadriven.txt: -------------------------------------------------------------------------------- 1 | "greevil_time_lock_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_FLOAT" 16 | "duration" "1.0" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "chance_pct" "10 15 20" 22 | } 23 | "04" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "customval_bonus_damage" "7 11 15" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/invoker/invoker_empty1_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of one of Invoker's empty slots 2 | // Author: Rook 3 | // Date: February 14, 2016 4 | // Version: 6.86 5 | // Type: Datadriven 6 | // NOTES: This is a placeholder ability for the Invoke ability 7 | // 8 | // ----- FILE REQUIREMENTS ----- 9 | // Script files: 10 | // scripts/vscripts/heroes/hero_invoker/invoke.lua 11 | // 12 | // KV files: 13 | // scripts/npc/abilities/invoker/invoke_datadriven.txt 14 | // scripts/npc/abilities/invoker/invoker_empty2_datadriven.txt 15 | "invoker_empty1_datadriven" 16 | { 17 | // General 18 | //------------------------------------------------------------------------------------------------------------- 19 | "BaseClass" "ability_datadriven" 20 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 21 | "MaxLevel" "0" 22 | "AbilityTextureName" "rubick_empty1" 23 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/invoker/invoker_empty2_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of one of Invoker's empty slots 2 | // Author: Rook 3 | // Date: February 14, 2016 4 | // Version: 6.86 5 | // Type: Datadriven 6 | // NOTES: This is a placeholder ability for the Invoke ability 7 | // 8 | // ----- FILE REQUIREMENTS ----- 9 | // Script files: 10 | // scripts/vscripts/heroes/hero_invoker/invoke.lua 11 | // 12 | // KV files: 13 | // scripts/npc/abilities/invoker/invoke_datadriven.txt 14 | // scripts/npc/abilities/invoker/invoker_empty1_datadriven.txt 15 | "invoker_empty2_datadriven" 16 | { 17 | // General 18 | //------------------------------------------------------------------------------------------------------------- 19 | "BaseClass" "ability_datadriven" 20 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 21 | "MaxLevel" "0" 22 | "AbilityTextureName" "rubick_empty1" 23 | } -------------------------------------------------------------------------------- /game/scripts/npc/abilities/juggernaut_blade_dance_datadriven.txt: -------------------------------------------------------------------------------- 1 | "juggernaut_blade_dance_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_INTEGER" 15 | "blade_dance_crit_mult" "200" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "blade_dance_crit_chance" "15 20 25 35" 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/kobold_taskmaster_speed_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "kobold_taskmaster_speed_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_movement_speed" "12" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/legion_commander_moment_of_courage_datadriven.txt: -------------------------------------------------------------------------------- 1 | "legion_commander_moment_of_courage_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Time 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilityCooldown" "0.9" 11 | 12 | // Special 13 | //------------------------------------------------------------------------------------------------------------- 14 | "AbilitySpecial" 15 | { 16 | "01" 17 | { 18 | "var_type" "FIELD_INTEGER" 19 | "trigger_chance" "16 18 20 22" 20 | } 21 | "02" 22 | { 23 | "var_type" "FIELD_FLOAT" 24 | "buff_duration" "1.0" 25 | } 26 | "03" 27 | { 28 | "var_type" "FIELD_INTEGER" 29 | "hp_leech_percent" "20 40 60 80" 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/life_stealer_consume_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of the Lifestealer Consume ability 2 | // Author: jacklarnes, RcColes 3 | // Date: 08.07.2015. 4 | "life_stealer_consume_datadriven" 5 | { 6 | // General 7 | //------------------------------------------------------------------------------------------------------------- 8 | "BaseClass" "ability_datadriven" 9 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 10 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_UNRESTRICTED" 11 | "FightRecapLevel" "1" 12 | "AbilityTextureName" "life_stealer_consume" 13 | "MaxLevel" "1" 14 | 15 | // Casting 16 | //------------------------------------------------------------------------------------------------------------- 17 | "AbilityCastPoint" "0" 18 | "AbilityCastRange" "0" 19 | 20 | "OnSpellStart" 21 | // OnSpellStart as a Modifier Event, you can Apply it on a target to trigger any Actions. 22 | { 23 | "RunScript" 24 | { 25 | "ScriptFile" "heroes/hero_life_stealer/infest.lua" 26 | "Function" "infest_consume" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/lone_druid_spirit_bear_demolish_datadriven.txt: -------------------------------------------------------------------------------- 1 | "lone_druid_spirit_bear_demolish_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_INTEGER" 15 | "spell_resistance" "33" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "bonus_building_damage" "40" 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/lone_druid_spirit_bear_return_datadriven.txt: -------------------------------------------------------------------------------- 1 | "lone_druid_spirit_bear_return_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 7 | 8 | // Casting 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilityCastPoint" "0.3" 11 | 12 | // Time 13 | //------------------------------------------------------------------------------------------------------------- 14 | "AbilityCooldown" "5.0" 15 | 16 | // Cost 17 | //------------------------------------------------------------------------------------------------------------- 18 | "AbilityManaCost" "0" 19 | 20 | // Special 21 | //------------------------------------------------------------------------------------------------------------- 22 | "AbilitySpecial" 23 | { 24 | "01" 25 | { 26 | "var_type" "FIELD_INTEGER" 27 | "return_damage_cooldown" "3" 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/lycan_summon_wolves_critical_strike_datadriven.txt: -------------------------------------------------------------------------------- 1 | "lycan_summon_wolves_critical_strike_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "crit_chance" "30" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "crit_damage" "170" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/lycan_summon_wolves_invisibility_datadriven.txt: -------------------------------------------------------------------------------- 1 | "lycan_summon_wolves_invisibility_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_FLOAT" 15 | "fade_time" "0.0 0.0 0.0" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_FLOAT" 20 | "fade_delay" "1.7" 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/meepo_divided_we_stand_datadriven.txt: -------------------------------------------------------------------------------- 1 | "meepo_divided_we_stand_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 8 | "DisplayAdditionalHeroes" "1" 9 | "LevelsBetweenUpgrades" "7" 10 | "RequiredLevel" "3" 11 | 12 | // Special 13 | //------------------------------------------------------------------------------------------------------------- 14 | "AbilitySpecial" 15 | { 16 | "01" 17 | { 18 | "var_type" "FIELD_INTEGER" 19 | "tooltip_clones" "1 2 3" 20 | } 21 | "02" 22 | { 23 | "var_type" "FIELD_INTEGER" 24 | "tooltip_share_percentage" "30" 25 | } 26 | "03" 27 | { 28 | "var_type" "FIELD_INTEGER" 29 | "tooltip_share_percentage_scepter" "100" 30 | } 31 | "04" 32 | { 33 | "var_type" "FIELD_FLOAT" 34 | "respawn" "0.1 0.2 0.3" 35 | } 36 | "05" 37 | { 38 | "var_type" "FIELD_INTEGER" 39 | "tooltip_respawn" "10 20 30" 40 | } 41 | } 42 | } 43 | 44 | 45 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/meepo_geostrike_datadriven.txt: -------------------------------------------------------------------------------- 1 | "meepo_geostrike_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 8 | 9 | "AbilityDamage" "7 14 21 28" 10 | 11 | "AbilityDuration" "2" 12 | 13 | // Stats 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilityModifierSupportBonus" "5" 16 | 17 | // Special 18 | //------------------------------------------------------------------------------------------------------------- 19 | "AbilitySpecial" 20 | { 21 | "01" 22 | { 23 | "var_type" "FIELD_INTEGER" 24 | "slow" "-5 -10 -15 -20" 25 | } 26 | "02" 27 | { 28 | "var_type" "FIELD_FLOAT" 29 | "duration_tooltip" "2.0" 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/morphling_morph_replicate_datadriven.txt: -------------------------------------------------------------------------------- 1 | "morphling_morph_replicate_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" 8 | 9 | // Cost 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityManaCost" "150 150 150" 12 | "AbilityCastPoint" "0.25" 13 | } 14 | 15 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/necronomicon_archer_aoe_datadriven.txt: -------------------------------------------------------------------------------- 1 | "necronomicon_archer_aoe_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "radius" "900" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "speed_bonus" "3 6 9" 22 | } 23 | } 24 | } 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/necronomicon_warrior_last_will_datadriven.txt: -------------------------------------------------------------------------------- 1 | "necronomicon_warrior_last_will_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "explosion" "550 675 800" 18 | } 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/necronomicon_warrior_mana_burn_datadriven.txt: -------------------------------------------------------------------------------- 1 | "necronomicon_warrior_mana_burn_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | "AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL" 9 | 10 | // Special 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilitySpecial" 13 | { 14 | "01" 15 | { 16 | "var_type" "FIELD_INTEGER" 17 | "burn_amount" "25 50 75" 18 | } 19 | "02" 20 | { 21 | "var_type" "FIELD_INTEGER" 22 | "burn_damage_conversion" "60" 23 | } 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/necronomicon_warrior_sight_datadriven.txt: -------------------------------------------------------------------------------- 1 | "necronomicon_warrior_sight_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "radius" "1000" 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/neutral_spell_immunity_datadriven.txt: -------------------------------------------------------------------------------- 1 | "neutral_spell_immunity_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | } 9 | 10 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/phoenix_sun_ray_toggle_move_empty_datadriven.txt: -------------------------------------------------------------------------------- 1 | "phoenix_sun_ray_toggle_move_empty_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 7 | "MaxLevel" "0" 8 | "AbilityTextureName" "phoenix_sun_ray_toggle_move_empty" 9 | } 10 | 11 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_bash_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_bash_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bash_chance" "15" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_damage" "50" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_FLOAT" 26 | "stun_duration" "1.65" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_devotion_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_devotion_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_INTEGER" 15 | "radius" "5" 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_angry_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_angry_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_movement" "20" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_health" "500" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "bonus_damage" "20" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_INTEGER" 31 | "bonus_armor" "2" 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_candy_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_candy_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_movement" "20" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_health" "500" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "bonus_damage" "10" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_INTEGER" 31 | "bonus_armor" "2" 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_greater_bash_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_greater_bash_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "MaxLevel" "1" 9 | 10 | // Time 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCooldown" "1.5" 13 | 14 | // Special 15 | //------------------------------------------------------------------------------------------------------------- 16 | "AbilitySpecial" 17 | { 18 | "01" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "chance_pct" "25" 22 | } 23 | "02" 24 | { 25 | "var_type" "FIELD_FLOAT" 26 | "duration" ".35" 27 | } 28 | "03" 29 | { 30 | "var_type" "FIELD_FLOAT" 31 | "knockback_duration" ".25" 32 | } 33 | "04" 34 | { 35 | "var_type" "FIELD_INTEGER" 36 | "knockback_distance" "500" 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_levels_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_levels_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_movement" "8" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_damage" "200" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "bonus_armor" "1" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_INTEGER" 31 | "bonus_health_regen" "5" 32 | } 33 | "05" 34 | { 35 | "var_type" "FIELD_INTEGER" 36 | "bonus_magic_resist" "5" 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_shell_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_shell_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET" 7 | "MaxLevel" "1" 8 | 9 | // Stats 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCooldown" "45.0" 12 | 13 | 14 | // Special 15 | //------------------------------------------------------------------------------------------------------------- 16 | "AbilitySpecial" 17 | { 18 | "01" 19 | { 20 | "var_type" "FIELD_FLOAT" 21 | "duration" "5" 22 | } 23 | "02" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "bonus_spell_damage_pct" "-60" 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_spell_block_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_spell_block_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Time 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilityCooldown" "10.0" 11 | } 12 | 13 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_halloween_summon_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_halloween_summon_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" 7 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 8 | "MaxLevel" "1" 9 | "AbilityTextureName" "roshan_spell_block" 10 | 11 | // Casting 12 | //------------------------------------------------------------------------------------------------------------- 13 | "AbilityCastRange" "0" 14 | "AbilityCastPoint" "1.0" 15 | 16 | // Time 17 | //------------------------------------------------------------------------------------------------------------- 18 | "AbilityCooldown" "30.0" 19 | 20 | 21 | // Cost 22 | //------------------------------------------------------------------------------------------------------------- 23 | "AbilityManaCost" "0" 24 | 25 | // Special 26 | //------------------------------------------------------------------------------------------------------------- 27 | "AbilitySpecial" 28 | { 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_inherent_buffs_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_inherent_buffs_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/roshan_spell_block_datadriven.txt: -------------------------------------------------------------------------------- 1 | "roshan_spell_block_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Time 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilityCooldown" "15.0" 11 | } 12 | 13 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/rubick/empty1_datadriven.txt: -------------------------------------------------------------------------------- 1 | "empty1_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 7 | "MaxLevel" "0" 8 | } 9 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/satyr_hellcaller_unholy_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "satyr_hellcaller_unholy_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "MaxLevel" "1" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "health_regen" "4" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "radius" "900" 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/shadow_demon_shadow_poison_release_datadriven.txt: -------------------------------------------------------------------------------- 1 | "shadow_demon_shadow_poison_release_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING" 7 | "MaxLevel" "1" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.3" 12 | 13 | // Time 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilityCooldown" "1.0" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/shoot_firework_datadriven.txt: -------------------------------------------------------------------------------- 1 | "shoot_firework_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 7 | 8 | "AbilityCastRange" "1800" 9 | "AbilityCastPoint" "0.5" 10 | 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/shredder_reactive_armor_datadriven.txt: -------------------------------------------------------------------------------- 1 | "shredder_reactive_armor_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_armor" "1" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_hp_regen" "1" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "stack_limit" "4 8 12 16" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_FLOAT" 31 | "stack_duration" "16.0 16.0 16.0 16.0" 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/shredder_return_chakram_2_datadriven.txt: -------------------------------------------------------------------------------- 1 | "shredder_return_chakram_2_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "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" 7 | "MaxLevel" "3" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.0 0.0 0.0 0.0" 12 | 13 | // Time 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilityCooldown" "0.0 0.0 0.0" 16 | } 17 | 18 | 19 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/shredder_return_chakram_datadriven.txt: -------------------------------------------------------------------------------- 1 | "shredder_return_chakram_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "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" 7 | "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.0 0.0 0.0 0.0" 12 | 13 | // Time 14 | //------------------------------------------------------------------------------------------------------------- 15 | "AbilityCooldown" "0.0 0.0 0.0" 16 | } 17 | 18 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/sniper_take_aim_datadriven.txt: -------------------------------------------------------------------------------- 1 | "sniper_take_aim_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | "AbilityTextureName" "sniper_take_aim" 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_attack_range" "100 200 300 400" 17 | } 18 | } 19 | 20 | // Data driven 21 | //------------------------------------------------------------------------------------------------------------- 22 | "Modifiers" 23 | { 24 | "modifier_take_aim_datadriven" 25 | { 26 | "Passive" "1" 27 | "IsPurgable" "0" 28 | "IsHidden" "1" 29 | 30 | "Properties" 31 | { 32 | "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS" "%bonus_attack_range" 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/spectre/spectre_reality_datadriven.txt: -------------------------------------------------------------------------------- 1 | //Author: Nightborn 2 | //Rewrite of Spectre Haunt 3 | //Date: August 27, 2016 4 | //OBS! Requires "spectre_haunt_datadriven"! 5 | "spectre_reality_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "ability_datadriven" 10 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_POINT" 11 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 12 | "AbilityTextureName" "spectre_reality" 13 | 14 | "MaxLevel" "1" 15 | 16 | "FightRecapLevel" "2" 17 | 18 | "precache" 19 | { 20 | "soundfile" "soundevents/game_sounds_heroes/game_sounds_spectre.vsndevts" 21 | } 22 | 23 | "OnSpellStart" 24 | { 25 | "RunScript" 26 | { 27 | "ScriptFile" "heroes/hero_spectre/reality.lua" 28 | "Function" "RealityCast" 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/spectre_reality_datadriven.txt: -------------------------------------------------------------------------------- 1 | //Author: Nightborn 2 | //Rewrite of Spectre Haunt 3 | //Date: August 27, 2016 4 | //OBS! Requires "spectre_haunt_datadriven"! 5 | "spectre_reality_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "ability_datadriven" 10 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_POINT" 11 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 12 | "AbilityTextureName" "spectre_reality" 13 | 14 | "MaxLevel" "1" 15 | 16 | "FightRecapLevel" "2" 17 | 18 | "precache" 19 | { 20 | "soundfile" "soundevents/game_sounds_heroes/game_sounds_spectre.vsndevts" 21 | } 22 | 23 | "OnSpellStart" 24 | { 25 | "RunScript" 26 | { 27 | "ScriptFile" "heroes/hero_spectre/reality.lua" 28 | "Function" "RealityCast" 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/tidehunter_kraken_shell_datadriven.txt: -------------------------------------------------------------------------------- 1 | "tidehunter_kraken_shell_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | // Special 9 | //------------------------------------------------------------------------------------------------------------- 10 | "AbilitySpecial" 11 | { 12 | "01" 13 | { 14 | "var_type" "FIELD_INTEGER" 15 | "damage_reduction" "10 20 30 40" 16 | } 17 | "02" 18 | { 19 | "var_type" "FIELD_INTEGER" 20 | "damage_cleanse" "600 550 500 450" 21 | } 22 | "03" 23 | { 24 | "var_type" "FIELD_FLOAT" 25 | "damage_reset_interval" "6.0 6.0 6.0 6.0" 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/tusk_launch_snowball_datadriven.txt: -------------------------------------------------------------------------------- 1 | "tusk_launch_snowball_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "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" 7 | "AbilityTextureName" "tusk_snowball" 8 | 9 | // Casting 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilityCastPoint" "0.0 0.0 0.0 0.0" 12 | } 13 | 14 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/undying_tombstone_zombie_aura_datadriven.txt: -------------------------------------------------------------------------------- 1 | "undying_tombstone_zombie_aura_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_HIDDEN" 7 | "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY" 8 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 9 | 10 | 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "radius" "400 600 800 1000" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "health_threshold" "100 200 300 400" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_FLOAT" 26 | "zombie_interval" "3.0" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_INTEGER" 31 | "bonus_speed" "50" 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/visage_gravekeepers_cloak_datadriven.txt: -------------------------------------------------------------------------------- 1 | "visage_gravekeepers_cloak_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 7 | 8 | 9 | // Special 10 | //------------------------------------------------------------------------------------------------------------- 11 | "AbilitySpecial" 12 | { 13 | "01" 14 | { 15 | "var_type" "FIELD_INTEGER" 16 | "bonus_armor" "1 2 4 5" 17 | } 18 | "02" 19 | { 20 | "var_type" "FIELD_INTEGER" 21 | "bonus_resist" "3 6 12 16" 22 | } 23 | "03" 24 | { 25 | "var_type" "FIELD_INTEGER" 26 | "max_layers" "4" 27 | } 28 | "04" 29 | { 30 | "var_type" "FIELD_FLOAT" 31 | "recovery_time" "12.0 10.0 8.0 6.0" 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/warlock_golem_flaming_fists_datadriven.txt: -------------------------------------------------------------------------------- 1 | "warlock_golem_flaming_fists_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | "MaxLevel" "3" 9 | "AbilityUnitDamageType" "DAMAGE_TYPE_PURE" 10 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 11 | 12 | // Special 13 | //------------------------------------------------------------------------------------------------------------- 14 | "AbilitySpecial" 15 | { 16 | "01" 17 | { 18 | "var_type" "FIELD_INTEGER" 19 | "damage" "80 115 150" 20 | } 21 | "02" 22 | { 23 | "var_type" "FIELD_INTEGER" 24 | "chance" "40" 25 | } 26 | "03" 27 | { 28 | "var_type" "FIELD_INTEGER" 29 | "radius" "300 300 300" 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/warlock_golem_permanent_immolation_datadriven.txt: -------------------------------------------------------------------------------- 1 | "warlock_golem_permanent_immolation_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityType" "DOTA_ABILITY_TYPE_BASIC" 7 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 8 | "MaxLevel" "3" 9 | "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL" 10 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO" 11 | 12 | // Special 13 | //------------------------------------------------------------------------------------------------------------- 14 | "AbilitySpecial" 15 | { 16 | "01" 17 | { 18 | "var_type" "FIELD_INTEGER" 19 | "aura_radius" "300" 20 | } 21 | "02" 22 | { 23 | "var_type" "FIELD_INTEGER" 24 | "aura_damage" "30 40 50" 25 | } 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/weaver_geminate_attack_datadriven.txt: -------------------------------------------------------------------------------- 1 | "weaver_geminate_attack_datadriven" 2 | { 3 | // General 4 | "BaseClass" "ability_datadriven" 5 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" 6 | "SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES" 7 | 8 | "AbilityCooldown" "6.0 5.0 4.0 3.0" 9 | } 10 | 11 | 12 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/wisp_empty1_datadriven.txt: -------------------------------------------------------------------------------- 1 | "wisp_empty1_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 7 | "MaxLevel" "0" 8 | } 9 | 10 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/wisp_empty2_datadriven.txt: -------------------------------------------------------------------------------- 1 | "wisp_empty2_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE" 7 | "MaxLevel" "0" 8 | } 9 | 10 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/wisp_spirits_in_datadriven.txt: -------------------------------------------------------------------------------- 1 | "wisp_spirits_in_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_HIDDEN" 7 | "MaxLevel" "1" 8 | "AbilityTextureName" "wisp_spirits_in" 9 | 10 | // Casting 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCastPoint" "0 0 0 0" 13 | 14 | // Data driven 15 | //------------------------------------------------------------------------------------------------------------- 16 | "OnToggleOn" 17 | { 18 | "RunScript" 19 | { 20 | "ScriptFile" "heroes/hero_wisp/spirits.lua" 21 | "Function" "ToggleOn" 22 | 23 | "spirit_movement" "-1" 24 | "opposite_ability" "wisp_spirits_out_datadriven" 25 | } 26 | } 27 | 28 | "OnToggleOff" 29 | { 30 | "RunScript" 31 | { 32 | "ScriptFile" "heroes/hero_wisp/spirits.lua" 33 | "Function" "ToggleOff" 34 | } 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /game/scripts/npc/abilities/wisp_spirits_out_datadriven.txt: -------------------------------------------------------------------------------- 1 | "wisp_spirits_out_datadriven" 2 | { 3 | // General 4 | //------------------------------------------------------------------------------------------------------------- 5 | "BaseClass" "ability_datadriven" 6 | "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_HIDDEN" 7 | "MaxLevel" "1" 8 | "AbilityTextureName" "wisp_spirits_out" 9 | 10 | // Casting 11 | //------------------------------------------------------------------------------------------------------------- 12 | "AbilityCastPoint" "0 0 0 0" 13 | 14 | // Data driven 15 | //------------------------------------------------------------------------------------------------------------- 16 | "OnToggleOn" 17 | { 18 | "RunScript" 19 | { 20 | "ScriptFile" "heroes/hero_wisp/spirits.lua" 21 | "Function" "ToggleOn" 22 | 23 | "spirit_movement" "1" 24 | "opposite_ability" "wisp_spirits_in_datadriven" 25 | } 26 | } 27 | 28 | "OnToggleOff" 29 | { 30 | "RunScript" 31 | { 32 | "ScriptFile" "heroes/hero_wisp/spirits.lua" 33 | "Function" "ToggleOff" 34 | } 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /game/scripts/npc/backups/npc_heroes_custom.txt: -------------------------------------------------------------------------------- 1 | "DOTAHeroes" 2 | { 3 | "npc_dota_hero_antimage_datadriven" 4 | { 5 | "override_hero" "npc_dota_hero_abaddon" 6 | 7 | "Ability1" "viper_poison_attack_datadriven" 8 | "Ability2" "antimage_blink_datadriven" 9 | "Ability3" "bounty_hunter_wind_walk_datadriven" 10 | "Ability4" "dragon_knight_elder_dragon_form_datadriven" 11 | } 12 | "npc_dota_hero_ancient_apparition_datadriven" 13 | { 14 | "override_hero" "npc_dota_hero_ancient_apparition" 15 | 16 | "AbilityLayout" "4" 17 | 18 | "Ability1" "lina_dragon_slave_datadriven" 19 | "Ability2" "ancient_apparition_chilling_touch_datadriven" 20 | "Ability3" "ancient_apparition_ice_blast" 21 | "Ability4" "ancient_apparition_ice_blast_datadriven" 22 | "Ability5" "ancient_apparition_ice_blast_release_datadriven" 23 | } 24 | } -------------------------------------------------------------------------------- /game/scripts/npc/executable.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pizzalol/SpellLibrary/6ae510089a7515adf0582d06a444f027f95af040/game/scripts/npc/executable.jar -------------------------------------------------------------------------------- /game/scripts/npc/heroes/test_dummy_melee.txt: -------------------------------------------------------------------------------- 1 | "npc_dota_hero_antimage_datadriven" 2 | { 3 | "override_hero" "npc_dota_hero_abaddon" 4 | 5 | "Ability1" "furion_teleportation_datadriven" 6 | "Ability2" "furion_force_of_nature_datadriven" 7 | "Ability3" "furion_wrath_of_nature" 8 | "Ability4" "furion_wrath_of_nature_datadriven" 9 | } -------------------------------------------------------------------------------- /game/scripts/npc/heroes/test_dummy_ranged.txt: -------------------------------------------------------------------------------- 1 | "npc_dota_hero_ancient_apparition_datadriven" 2 | { 3 | "override_hero" "npc_dota_hero_ancient_apparition" 4 | 5 | "AbilityLayout" "4" 6 | 7 | "Ability1" "frost_nova_datadriven" 8 | "Ability2" "frost_armor_datadriven" 9 | "Ability3" "dark_ritual_datadriven" 10 | "Ability4" "chain_frost_datadriven" 11 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_abyssal_blade_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Abyssal Blade 2 | // Author: Rook 3 | // Date: February 1, 2015 4 | 5 | "item_recipe_abyssal_blade_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1207" //Valve's version of this item uses the ID "207". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_abyssal_blade_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_basher_datadriven;item_relic_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_ancient_janggo_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Drum of Endurance 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_ancient_janggo_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1184" //Valve's version of this item uses the ID "184". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "875" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_ancient_janggo_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_bracer_datadriven;item_robe_datadriven" 26 | "02" "item_ancient_janggo_datadriven" 27 | } 28 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_arcane_boots_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Arcane Boots 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_arcane_boots_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1179" //Valve's version of this item uses the ID "179". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_arcane_boots_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_energy_booster_datadriven;item_boots_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_armlet_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Armlet of Mordiggian 2 | // Author: Rook 3 | // Date: February 3, 2015 4 | 5 | "item_recipe_armlet_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1150" //Valve's version of this item uses the ID "150". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "500" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_armlet_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_helm_of_iron_will_datadriven;item_gloves_datadriven;item_blades_of_attack_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_assault_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Assault Cuirass 2 | // Author: Rook 3 | // Date: January 28, 2015 4 | 5 | "item_recipe_assault_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1111" //Valve's version of this item uses the ID "111". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1300" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_assault_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_platemail_datadriven;item_hyperstone_datadriven;item_chainmail_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_basher_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Skull Basher 2 | // Author: Rook 3 | // Date: February 1, 2015 4 | 5 | "item_recipe_basher_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1142" //Valve's version of this item uses the ID "142". 11 | "InvalidHeroes" "npc_dota_hero_spirit_breaker;npc_dota_hero_faceless_void;npc_dota_hero_slardar;npc_dota_hero_troll_warlord" 12 | "Model" "models/props_gameplay/recipe.mdl" 13 | "AbilityTextureName" "item_recipe" 14 | 15 | // Item Info 16 | //------------------------------------------------------------------------------------------------------------- 17 | "ItemCost" "1000" 18 | "ItemShopTags" "" 19 | 20 | // Recipe 21 | //------------------------------------------------------------------------------------------------------------- 22 | "ItemRecipe" "1" 23 | "ItemResult" "item_basher_datadriven" 24 | "ItemRequirements" 25 | { 26 | "01" "item_belt_of_strength_datadriven;item_javelin_datadriven" 27 | } 28 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_bfury_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Battle Fury 2 | // Author: Rook 3 | // Date: February 2, 2015 4 | 5 | "item_recipe_bfury_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1144" //Valve's version of this item uses the ID "144". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_bfury_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_broadsword;item_claymore;item_pers" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_black_king_bar_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Black King Bar 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_black_king_bar_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1115" //Valve's version of this item uses the ID "115". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1375" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_black_king_bar_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ogre_axe_datadriven;item_mithril_hammer_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_bloodstone_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Bloodstone 2 | // Author: Rook 3 | // Date: January 29, 2015 4 | 5 | "item_recipe_bloodstone_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1120" //Valve's version of this item uses the ID "120". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "800" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_bloodstone_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_soul_ring_datadriven;item_soul_booster_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_bracer_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Bracer 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_bracer_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1072" //Valve's version of this item uses the ID "72". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "210" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_bracer_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_circlet_datadriven;item_gauntlets_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_buckler_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Buckler 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_buckler_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1085" //Valve's version of this item uses the ID "85". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "200" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_buckler_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_chainmail_datadriven;item_branches_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_butterfly_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Butterfly 2 | // Author: Rook 3 | // Date: January 31, 2015 4 | 5 | "item_recipe_butterfly_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1138" //Valve's version of this item uses the ID "138". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_butterfly_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_talisman_of_evasion_datadriven;item_quarterstaff_datadriven;item_eagle_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_desolator_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Desolator 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_desolator_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1167" //Valve's version of this item uses the ID "167". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "900" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_desolator_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_mithril_hammer_datadriven;item_mithril_hammer_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_force_staff_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Author: Nightborn and KAL 2 | // Rewrite of Force Staff Recipe 3 | // Date: August 27, 2016 4 | "item_recipe_force_staff_datadriven" 5 | { 6 | 7 | "BaseClass" "item_datadriven" 8 | "ID" "1101" // Default ID by Valve is "101" 9 | "Model" "models/props_gameplay/recipe.vmdl" 10 | "AbilityTextureName" "item_recipe" 11 | 12 | 13 | "ItemCost" "900" 14 | "ItemShopTags" "" 15 | 16 | 17 | "ItemRecipe" "1" 18 | "ItemResult" "item_force_staff_datadriven" 19 | "ItemRequirements" 20 | { 21 | "01" "item_ring_of_regen_datadriven;item_staff_of_wizardry_datadriven" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_hand_of_midas_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Hand of Midas 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_hand_of_midas_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1064" //Valve's version of this item uses the ID "64". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1550" 17 | "ItemShopTags" "" 18 | "ItemAliases" "hom" 19 | 20 | // Recipe 21 | //------------------------------------------------------------------------------------------------------------- 22 | "ItemRecipe" "1" 23 | "ItemResult" "item_hand_of_midas_datadriven" 24 | "ItemRequirements" 25 | { 26 | "01" "item_gloves_datadriven" 27 | } 28 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_headdress_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Headdress 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_headdress_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1093" //Valve's version of this item uses the ID "93". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "200" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_headdress_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ring_of_regen_datadriven;item_branches_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_heart_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Heart of Tarrasque 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_refresher_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1113" //Valve's version of this item uses the ID "113". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1200" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_heart_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_reaver_datadriven;item_vitality_booster_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_heavens_halberd_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Heaven's Halberd 2 | // Author: Rook 3 | // Date: February 5, 2015 4 | 5 | "item_recipe_heavens_halberd_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1209" //Valve's version of this item uses the ID "209". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_heavens_halberd_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_sange_datadriven;item_talisman_of_evasion_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_hood_of_defiance_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Hood of Defiance 2 | // Author: Rook 3 | // Date: January 30, 2015 4 | 5 | "item_recipe_hood_of_defiance_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1130" //Valve's version of this item uses the ID "130". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_hood_of_defiance_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ring_of_health_datadriven;item_cloak_datadriven;item_ring_of_regen_datadriven;item_ring_of_regen_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_invis_sword_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Shadow Blade 2 | // Author: Rook 3 | // Date: February 3, 2015 4 | 5 | "item_recipe_invis_sword_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1183" //Valve's version of this item uses the ID "183". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_invis_sword_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_shadow_amulet_datadriven;item_claymore_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_magic_wand_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Magic Wand 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_magic_wand_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1035" //Valve's version of this item uses the ID "35". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "150" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_magic_wand_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_magic_stick_datadriven;item_branches_datadriven;item_branches_datadriven;item_branches_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_manta_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Manta Style 2 | // Author: Rook 3 | // Date: February 2, 2015 4 | 5 | "item_recipe_manta_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1146" //Valve's version of this item uses the ID "146". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | "FightRecapLevel" "1" 14 | 15 | // Item Info 16 | //------------------------------------------------------------------------------------------------------------- 17 | "ItemCost" "800" 18 | "ItemShopTags" "" 19 | 20 | // Recipe 21 | //------------------------------------------------------------------------------------------------------------- 22 | "ItemRecipe" "1" 23 | "ItemResult" "item_manta_datadriven" 24 | "ItemRequirements" 25 | { 26 | "01" "item_yasha;item_ultimate_orb" 27 | } 28 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_mask_of_madness_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Mask of Madness 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_mask_of_madness_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1171" //Valve's version of this item uses the ID "171". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "900" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_mask_of_madness_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_lifesteal_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_medallion_of_courage_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Medallion of Courage 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_medallion_of_courage_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1186" //Valve's version of this item uses the ID "186". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "325" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_medallion_of_courage_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_chainmail_datadriven;item_sobi_mask_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_mekansm_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Mekansm 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_mekansm_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1078" //Valve's version of this item uses the ID "78". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "900" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_mekansm_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_headdress_datadriven;item_buckler_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_monkey_king_bar_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Monkey King Bar 2 | // Author: Rook 3 | // Date: January 30, 2015 4 | 5 | "item_recipe_monkey_king_bar_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1134" //Valve's version of this item uses the ID "134". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_monkey_king_bar_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_demon_edge_datadriven;item_javelin_datadriven;item_javelin_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_null_talisman_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Null Talisman 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_null_talisman_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1076" //Valve's version of this item uses the ID "76". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "155" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_null_talisman_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_circlet_datadriven;item_mantle_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_oblivion_staff_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Oblivion Staff 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_oblivion_staff_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1066" //Valve's version of this item uses the ID "66". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_oblivion_staff_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_quarterstaff_datadriven;item_sobi_mask_datadriven;item_robe_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_pers_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Perseverance 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_perseverance_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1068" //Valve's version of this item uses the ID "68". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_pers_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ring_of_health_datadriven;item_void_stone_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_phase_boots_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Phase Boots 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_phase_boots_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1049" //Valve's version of this item uses the ID "49". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_phase_boots_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_boots_datadriven;item_blades_of_attack_datadriven;item_blades_of_attack_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_radiance_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Radiance 2 | // Author: Rook 3 | // Date: January 30, 2015 4 | 5 | "item_recipe_radiance_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1136" //Valve's version of this item uses the ID "136". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1350" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_radiance_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_relic_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_refresher_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Refresher Orb 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_refresher_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1109" //Valve's version of this item uses the ID "109". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1800" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_refresher_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_oblivion_staff_datadriven;item_pers_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_ring_of_aquila_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Ring of Aquila 2 | // Author: Rook 3 | // Date: February 5, 2015 4 | 5 | "item_recipe_ring_of_aquila_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1211" //Valve's version of this item uses the ID "211". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_ring_of_aquila_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_wraith_band_datadriven;item_ring_of_basilius_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_rod_of_atos_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Rod of Atos 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_rod_of_atos_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1205" //Valve's version of this item uses the ID "205". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_rod_of_atos_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_staff_of_wizardry_datadriven;item_staff_of_wizardry_datadriven;item_vitality_booster_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_sange_and_yasha_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Sange and Yasha 2 | // Author: Rook 3 | // Date: February 3, 2015 4 | 5 | "item_recipe_sange_and_yasha_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1153" //Valve's version of this item uses the ID "153". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_sange_and_yasha_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_yasha_datadriven;item_sange_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_sange_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Sange 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_sange_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1161" //Valve's version of this item uses the ID "161". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "600" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_sange_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ogre_axe_datadriven;item_belt_of_strength_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_satanic_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Satanic 2 | // Author: Rook 3 | // Date: February 3, 2015 4 | 5 | "item_recipe_satanic_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1155" //Valve's version of this item uses the ID "155". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1100" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_satanic_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_reaver_datadriven;item_helm_of_the_dominator_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_shivas_guard_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Shiva's Guard 2 | // Author: Rook 3 | // Date: February 15, 2015 4 | 5 | "item_recipe_shivas_guard_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1118" //Valve's version of this item uses the ID "118". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "600" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_shivas_guard_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_platemail_datadriven;item_mystic_staff_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_skadi_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Eye of Skadi 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_skadi_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1159" //Valve's version of this item uses the ID "159". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_skadi_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ultimate_orb_datadriven;item_ultimate_orb_datadriven;item_point_booster_datadriven;item_orb_of_venom_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_soul_booster_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Soul Booster 2 | // Author: Rook 3 | // Date: January 30, 2015 4 | 5 | "item_recipe_soul_booster_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1128" //Valve's version of this item uses the ID "128". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_soul_booster_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_vitality_booster_datadriven;item_energy_booster_datadriven;item_point_booster_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_sphere_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Linken's Sphere 2 | // Author: Rook 3 | // Date: January 29, 2015 4 | 5 | "item_recipe_sphere_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1122" //Valve's version of this item uses the ID "122". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1325" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_sphere_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ultimate_orb_datadriven;item_pers_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_ultimate_scepter_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Aghanim's Scepter 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_ultimate_scepter_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1107" //Valve's version of this item uses the ID "107". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "0" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_ultimate_scepter_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_point_booster_datadriven;item_staff_of_wizardry_datadriven;item_ogre_axe_datadriven;item_blade_of_alacrity_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_urn_of_shadows_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Urn of Shadows 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_urn_of_shadows_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1091" //Valve's version of this item uses the ID "91". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "250" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_urn_of_shadows_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_sobi_mask_datadriven;item_gauntlets_datadriven;item_gauntlets_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_veil_of_discord_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Veil of Discord 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_veil_of_discord_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1189" //Valve's version of this item uses the ID "189". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "1250" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_veil_of_discord_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_helm_of_iron_will_datadriven;item_null_talisman_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_vladmir_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Vladmir's Offering 2 | // Author: Rook 3 | // Date: January 26, 2015 4 | 5 | "item_recipe_vladmir_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1080" //Valve's version of this item uses the ID "80". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "300" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_vladmir_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_ring_of_regen_datadriven;item_ring_of_basilius_datadriven;item_lifesteal_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_wraith_band_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Wraith Band 2 | // Author: Rook 3 | // Date: January 25, 2015 4 | 5 | "item_recipe_wraith_band_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1074" //Valve's version of this item uses the ID "74". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "170" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_wraith_band_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_circlet_datadriven;item_slippers_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/items/item_recipe_yasha_datadriven.txt: -------------------------------------------------------------------------------- 1 | // Rewrite of Recipe: Yasha 2 | // Author: Rook 3 | // Date: February 4, 2015 4 | 5 | "item_recipe_yasha_datadriven" 6 | { 7 | // General 8 | //------------------------------------------------------------------------------------------------------------- 9 | "BaseClass" "item_datadriven" 10 | "ID" "1169" //Valve's version of this item uses the ID "169". 11 | "Model" "models/props_gameplay/recipe.mdl" 12 | "AbilityTextureName" "item_recipe" 13 | 14 | // Item Info 15 | //------------------------------------------------------------------------------------------------------------- 16 | "ItemCost" "600" 17 | "ItemShopTags" "" 18 | 19 | // Recipe 20 | //------------------------------------------------------------------------------------------------------------- 21 | "ItemRecipe" "1" 22 | "ItemResult" "item_yasha_datadriven" 23 | "ItemRequirements" 24 | { 25 | "01" "item_blade_of_alacrity_datadriven;item_boots_of_elves_datadriven" 26 | } 27 | } -------------------------------------------------------------------------------- /game/scripts/npc/npc_heroes_custom.txt: -------------------------------------------------------------------------------- 1 | "DOTAHeroes" 2 | { 3 | "npc_dota_hero_antimage_datadriven" 4 | { 5 | "override_hero" "npc_dota_hero_abaddon" 6 | 7 | "Ability1" "furion_teleportation_datadriven" 8 | "Ability2" "furion_force_of_nature_datadriven" 9 | "Ability3" "furion_wrath_of_nature" 10 | "Ability4" "furion_wrath_of_nature_datadriven" 11 | } 12 | "npc_dota_hero_ancient_apparition_datadriven" 13 | { 14 | "override_hero" "npc_dota_hero_ancient_apparition" 15 | 16 | "AbilityLayout" "4" 17 | 18 | "Ability1" "frost_nova_datadriven" 19 | "Ability2" "frost_armor_datadriven" 20 | "Ability3" "dark_ritual_datadriven" 21 | "Ability4" "chain_frost_datadriven" 22 | } 23 | } -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_alchemist/acid_spray.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: 9.1.2015. 4 | Plays a looping and stops after the duration 5 | ]] 6 | function AcidSpraySound( event ) 7 | local target = event.target 8 | local ability = event.ability 9 | local duration = ability:GetLevelSpecialValueFor( "duration", ability:GetLevel() - 1 ) 10 | 11 | target:EmitSound("Hero_Alchemist.AcidSpray") 12 | 13 | -- Stops the sound after the duration, a bit early to ensure the thinker still exists 14 | Timers:CreateTimer(duration-0.1, function() 15 | target:StopSound("Hero_Alchemist.AcidSpray") 16 | end) 17 | 18 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_ancient_apparition/ice_vortex.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 13.10.2015. 3 | Provides vision over the targeted area]] 4 | function IceVortexVision( keys ) 5 | local caster = keys.caster 6 | local target_point = keys.target_points[1] 7 | local ability = keys.ability 8 | local ability_level = ability:GetLevel() - 1 9 | 10 | local duration = ability:GetLevelSpecialValueFor("duration", ability_level) 11 | local vision_aoe = ability:GetLevelSpecialValueFor("vision_aoe", ability_level) 12 | 13 | AddFOWViewer(caster:GetTeamNumber(), target_point, vision_aoe, duration, true) 14 | end 15 | 16 | --[[Author: Pizzalol 17 | Date: 11.02.2015. 18 | Stops the sound from playing on the targeted unit]] 19 | function IceVortexStopSound( keys ) 20 | local target = keys.target 21 | local sound = keys.sound 22 | 23 | StopSoundEvent(sound, target) 24 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_antimage/blink.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Amused/D3luxe 2 | Used by: Pizzalol 3 | Date: 11.07.2015. 4 | Blinks the target to the target point, if the point is beyond max blink range then blink the maximum range]] 5 | function Blink(keys) 6 | local point = keys.target_points[1] 7 | local caster = keys.caster 8 | local casterPos = caster:GetAbsOrigin() 9 | local pid = caster:GetPlayerID() 10 | local difference = point - casterPos 11 | local ability = keys.ability 12 | local range = ability:GetLevelSpecialValueFor("blink_range", (ability:GetLevel() - 1)) 13 | 14 | if difference:Length2D() > range then 15 | point = casterPos + (point - casterPos):Normalized() * range 16 | end 17 | 18 | FindClearSpaceForUnit(caster, point, false) 19 | ProjectileManager:ProjectileDodge(caster) 20 | 21 | local blinkIndex = ParticleManager:CreateParticle("particles/units/heroes/hero_antimage/antimage_blink_start.vpcf", PATTACH_ABSORIGIN, caster) 22 | Timers:CreateTimer( 1, function() 23 | ParticleManager:DestroyParticle( blinkIndex, false ) 24 | return nil 25 | end 26 | ) 27 | end 28 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_antimage/mana_break.lua: -------------------------------------------------------------------------------- 1 | --[[Mana drain and damage part of Mana Break 2 | Author: Pizzalol 3 | Date: 11.07.2015.]] 4 | function ManaBreak( keys ) 5 | local target = keys.target 6 | local caster = keys.caster 7 | local ability = keys.ability 8 | local manaBurn = ability:GetLevelSpecialValueFor("mana_per_hit", (ability:GetLevel() - 1)) 9 | local manaDamage = ability:GetLevelSpecialValueFor("damage_per_burn", (ability:GetLevel() - 1)) 10 | 11 | local damageTable = {} 12 | damageTable.attacker = caster 13 | damageTable.victim = target 14 | damageTable.damage_type = ability:GetAbilityDamageType() 15 | damageTable.ability = ability 16 | 17 | -- If the target is not magic immune then reduce the mana and deal damage 18 | if not target:IsMagicImmune() then 19 | -- Checking the mana of the target and calculating the damage 20 | if(target:GetMana() >= manaBurn) then 21 | damageTable.damage = manaBurn * manaDamage 22 | target:ReduceMana(manaBurn) 23 | else 24 | damageTable.damage = target:GetMana() * manaDamage 25 | target:ReduceMana(manaBurn) 26 | end 27 | 28 | ApplyDamage(damageTable) 29 | end 30 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_axe/berserkers_call.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 09.02.2015. 3 | Forces the target to attack the caster]] 4 | function BerserkersCall( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | 8 | -- Clear the force attack target 9 | target:SetForceAttackTarget(nil) 10 | 11 | -- Give the attack order if the caster is alive 12 | -- otherwise forces the target to sit and do nothing 13 | if caster:IsAlive() then 14 | local order = 15 | { 16 | UnitIndex = target:entindex(), 17 | OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET, 18 | TargetIndex = caster:entindex() 19 | } 20 | 21 | ExecuteOrderFromTable(order) 22 | else 23 | target:Stop() 24 | end 25 | 26 | -- Set the force attack target to be the caster 27 | target:SetForceAttackTarget(caster) 28 | end 29 | 30 | -- Clears the force attack target upon expiration 31 | function BerserkersCallEnd( keys ) 32 | local target = keys.target 33 | 34 | target:SetForceAttackTarget(nil) 35 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_axe/counter_helix.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 09.02.2015. 3 | Triggers when the unit attacks 4 | Checks if the attack target is the same as the caster 5 | If true then trigger the counter helix if its not on cooldown]] 6 | function CounterHelix( keys ) 7 | local caster = keys.caster 8 | local target = keys.target 9 | local ability = keys.ability 10 | local helix_modifier = keys.helix_modifier 11 | 12 | -- If the caster has the helix modifier then do not trigger the counter helix 13 | -- as its considered to be on cooldown 14 | if target == caster and not caster:HasModifier(helix_modifier) then 15 | ability:ApplyDataDrivenModifier(caster, caster, helix_modifier, {}) 16 | end 17 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_bloodseeker/blood_rite.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: February 13, 2016 3 | Gives the caster's team flying vision at the point of cast]] 4 | function GiveVision(keys) 5 | caster = keys.caster 6 | ability = keys.ability 7 | local flying_vision = ability:GetLevelSpecialValueFor( "flying_vision", ability:GetLevel() - 1 ) 8 | local vision_duration = ability:GetLevelSpecialValueFor( "vision_duration", ability:GetLevel() - 1 ) 9 | 10 | AddFOWViewer(caster:GetTeam(), ability:GetCursorPosition(), flying_vision, vision_duration, false) 11 | end 12 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_bloodseeker/bloodrage.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: February 13, 2016 3 | Heals the hero with bloodrage if they kill a unit, and heals their attacker if they are killed]] 4 | function HealKiller(keys) 5 | local caster = keys.caster 6 | local target = keys.unit 7 | local attacker = keys.attacker 8 | local ability = keys.ability 9 | local health_bonus_pct = ability:GetLevelSpecialValueFor("health_bonus_pct", (ability:GetLevel() -1))/100 10 | 11 | if caster:IsAlive() then 12 | local target_health = target:GetMaxHealth() 13 | local heal = target_health * health_bonus_pct 14 | 15 | caster:Heal(heal, caster) 16 | else 17 | local caster_health = caster:GetMaxHealth() 18 | local heal = caster_health * health_bonus_pct 19 | 20 | attacker:Heal(heal, caster) 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_bloodseeker/rupture.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: February 13, 2016 3 | Checks the target's distance from its last position and deals damage accordingly]] 4 | function DistanceCheck(keys) 5 | local caster = keys.caster 6 | local target = keys.target 7 | print(target) 8 | local ability = keys.ability 9 | local movement_damage_pct = ability:GetLevelSpecialValueFor( "movement_damage_pct", ability:GetLevel() - 1 )/100 10 | local damage_cap_amount = ability:GetLevelSpecialValueFor( "damage_cap_amount", ability:GetLevel() - 1 ) 11 | local damage = 0 12 | 13 | if target.position == nil then 14 | target.position = target:GetAbsOrigin() 15 | end 16 | local vector_distance = target.position - target:GetAbsOrigin() 17 | local distance = (vector_distance):Length2D() 18 | if distance <= damage_cap_amount and distance > 0 then 19 | damage = distance * movement_damage_pct 20 | end 21 | target.position = target:GetAbsOrigin() 22 | if damage ~= 0 then 23 | ApplyDamage({victim = target, attacker = caster, damage = damage, damage_type = ability:GetAbilityDamageType()}) 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_bounty_hunter/jinada.lua: -------------------------------------------------------------------------------- 1 | --[[Jinada 2 | Author: Pizzalol 3 | Date: 1.1.2015.]] 4 | function Jinada( keys ) 5 | local ability = keys.ability 6 | local level = ability:GetLevel() - 1 7 | local cooldown = ability:GetCooldown(level) 8 | local caster = keys.caster 9 | local modifierName = "modifier_jinada_datadriven" 10 | 11 | ability:StartCooldown(cooldown) 12 | 13 | caster:RemoveModifierByName(modifierName) 14 | 15 | Timers:CreateTimer(cooldown, function() 16 | ability:ApplyDataDrivenModifier(caster, caster, modifierName, {}) 17 | end) 18 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_broodmother/insatiable_hunger.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 14.01.2015. 3 | Stops the sound upon expiration]] 4 | function InsatiableHungerStopSound( keys ) 5 | local caster = keys.caster 6 | local sound = keys.sound 7 | 8 | StopSoundEvent(sound, caster) 9 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_centaur/double_edge.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: 9.1.2015. 4 | Does non lethal magic damage to the caster 5 | ]] 6 | function DoubleEdgeSelfDamage( event ) 7 | -- Variables 8 | local caster = event.caster 9 | local ability = event.ability 10 | local self_damage = ability:GetLevelSpecialValueFor( "edge_damage" , ability:GetLevel() - 1 ) 11 | local damageType = ability:GetAbilityDamageType() 12 | 13 | -- Self damage 14 | ApplyDamage({ victim = caster, attacker = caster, damage = self_damage, damage_type = damageType, damage_flags = DOTA_DAMAGE_FLAG_NON_LETHAL }) 15 | end 16 | 17 | function DoubleEdgeParticle( event ) 18 | local caster = event.caster 19 | local target = event.target 20 | 21 | -- Particle 22 | local particle = ParticleManager:CreateParticle("particles/units/heroes/hero_centaur/centaur_double_edge.vpcf", PATTACH_ABSORIGIN_FOLLOW, target) 23 | ParticleManager:SetParticleControl(particle, 0, caster:GetAbsOrigin()) -- Origin 24 | ParticleManager:SetParticleControl(particle, 1, target:GetAbsOrigin()) -- Destination 25 | ParticleManager:SetParticleControl(particle, 5, target:GetAbsOrigin()) -- Hit Glow 26 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_centaur/return.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: 9.1.2015. 4 | Does base damage plus a percent of the hero strength 5 | ]] 6 | function Return( event ) 7 | -- Variables 8 | local caster = event.caster 9 | local attacker = event.attacker 10 | local ability = event.ability 11 | local casterSTR = caster:GetStrength() 12 | local str_return = ability:GetLevelSpecialValueFor( "strength_pct" , ability:GetLevel() - 1 ) * 0.01 13 | local damage = ability:GetLevelSpecialValueFor( "return_damage" , ability:GetLevel() - 1 ) 14 | local damageType = ability:GetAbilityDamageType() 15 | local return_damage = damage + ( casterSTR * str_return ) 16 | 17 | -- Damage 18 | if attacker:GetTeamNumber() ~= caster:GetTeamNumber() then 19 | ApplyDamage({ victim = attacker, attacker = caster, damage = return_damage, damage_type = damageType }) 20 | print("done "..return_damage) 21 | end 22 | 23 | end 24 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_chen/hand_of_god.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 06.04.2015. 3 | If the target unit is owned by the caster then heal it to full]] 4 | function HandOfGod( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | 9 | local sound = keys.sound 10 | local hand_particle = keys.hand_particle 11 | 12 | if target:GetPlayerOwnerID() == caster:GetPlayerOwnerID() and target ~= caster then 13 | local particle = ParticleManager:CreateParticle(hand_particle, PATTACH_POINT_FOLLOW, target) 14 | ParticleManager:SetParticleControlEnt(particle, 0, target, PATTACH_POINT_FOLLOW, "attach_hitloc", target:GetAbsOrigin(), true) 15 | ParticleManager:ReleaseParticleIndex(particle) 16 | 17 | EmitSoundOn(sound, target) 18 | 19 | target:Heal(target:GetMaxHealth(), ability) 20 | end 21 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_crystal_maiden/crystal_nova.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 31.12.2015. 4 | Provide vision post-attack 5 | ]] 6 | function crystal_nova_post_vision( keys ) 7 | -- Variables 8 | local caster = keys.caster 9 | local ability = keys.ability 10 | local target = keys.target_points[ 1 ] 11 | local duration = ability:GetLevelSpecialValueFor( "vision_duration", ( ability:GetLevel() - 1 ) ) 12 | local radius = ability:GetLevelSpecialValueFor( "vision_radius", ( ability:GetLevel() - 1 ) ) 13 | 14 | -- Create unobstructed vision around the point 15 | AddFOWViewer(caster:GetTeamNumber(), target, radius, duration, false) 16 | end 17 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_dazzle/poison_touch.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 07.02.2015. 3 | Checks if the current ability level is supposed to stun, if yes then stun the target]] 4 | function PoisonTouchStun( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | 9 | local ability_level = ability:GetLevel() - 1 10 | local stun_duration = ability:GetLevelSpecialValueFor("stun_duration", ability_level) 11 | local should_stun = ability:GetLevelSpecialValueFor("should_stun", ability_level) 12 | 13 | if should_stun == 1 then 14 | target:AddNewModifier(caster, ability, "modifier_stunned", {duration = stun_duration}) 15 | end 16 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_disruptor/thunder_strike.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: March 30, 2016 3 | Gives vision to the caster's team]] 4 | function GiveVisionEnd(keys) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | local vision_radius = ability:GetLevelSpecialValueFor("vision_radius", ability:GetLevel() -1) 9 | local vision_duration = ability:GetLevelSpecialValueFor("vision_duration", ability:GetLevel() -1) 10 | 11 | AddFOWViewer(caster:GetTeam(), target:GetAbsOrigin(), vision_radius, vision_duration, false) 12 | end 13 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_doom_bringer/scorched_earth.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 24.02.2015. 3 | Checks if the target is owned by the caster or if its the caster itself 4 | If yes then it applies the scorched earth buff]] 5 | function ScorchedEarthCheck( keys ) 6 | local caster = keys.caster 7 | local target = keys.target 8 | local ability = keys.ability 9 | local modifier = keys.modifier 10 | 11 | if target:GetOwner() == caster or target == caster then 12 | ability:ApplyDataDrivenModifier(caster, target, modifier, {}) 13 | end 14 | end 15 | 16 | -- Stops the sound from playing 17 | function StopSound( keys ) 18 | local target = keys.target 19 | local sound = keys.sound 20 | 21 | StopSoundEvent(sound, target) 22 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_dragon_knight/modifiers/modifier_elder_dragon_form_model_lua.lua: -------------------------------------------------------------------------------- 1 | modifier_elder_dragon_form_model_lua = class({}) 2 | 3 | --[[Author: Noya 4 | Date: 27.01.2016. 5 | Changes the model of the unit into the Dragon Knight Elder Dragon Form model as long as the modifier is active]] 6 | function modifier_elder_dragon_form_model_lua:DeclareFunctions() 7 | local funcs = { 8 | MODIFIER_PROPERTY_MODEL_CHANGE 9 | } 10 | 11 | return funcs 12 | end 13 | 14 | function modifier_elder_dragon_form_model_lua:GetModifierModelChange() 15 | return "models/heroes/dragon_knight/dragon_knight_dragon.vmdl" 16 | end 17 | 18 | function modifier_elder_dragon_form_model_lua:IsHidden() 19 | return true 20 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_drow_ranger/marksmanship.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 1.1.2015. 4 | Check number of units every interval 5 | Note: Might be possible to do entirely in datadriven, however, I seem to crash everytime I tried 6 | to do so, insteads, I just use simple script 7 | ]] 8 | function marksmanship_detection( keys ) 9 | local caster = keys.caster 10 | local ability = keys.ability 11 | local radius = ability:GetLevelSpecialValueFor( "radius", ( ability:GetLevel() - 1 ) ) 12 | local modifierName = "modifier_marksmanship_effect_datadriven" 13 | 14 | -- Count units in radius 15 | local units = FindUnitsInRadius( caster:GetTeamNumber(), caster:GetAbsOrigin(), caster, radius, 16 | DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO, 0, 0, false ) 17 | local count = 0 18 | for k, v in pairs( units ) do 19 | count = count + 1 20 | end 21 | 22 | -- Apply and destroy 23 | if count == 0 and not caster:HasModifier( modifierName ) then 24 | ability:ApplyDataDrivenModifier( caster, caster, modifierName, {} ) 25 | elseif count ~= 0 and caster:HasModifier( modifierName ) then 26 | caster:RemoveModifierByName( modifierName ) 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_drow_ranger/wave_of_silence.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | CHANGELIST: 3 | 09.01.2015 - Change the file into .lua extension 4 | ]] 5 | 6 | --[[ 7 | Author: kritth 8 | Date: 09.01.2015 9 | Knockback enemies in the line accordingly to the distance 10 | ]] 11 | function modifier_wave_of_silence_knockback( keys ) 12 | local vCaster = keys.caster:GetAbsOrigin() 13 | local vTarget = keys.target:GetAbsOrigin() 14 | local len = ( vTarget - vCaster ):Length2D() 15 | len = keys.distance - keys.distance * ( len / keys.range ) 16 | local knockbackModifierTable = 17 | { 18 | should_stun = 0, 19 | knockback_duration = keys.duration, 20 | duration = keys.duration, 21 | knockback_distance = len, 22 | knockback_height = 0, 23 | center_x = keys.caster:GetAbsOrigin().x, 24 | center_y = keys.caster:GetAbsOrigin().y, 25 | center_z = keys.caster:GetAbsOrigin().z 26 | } 27 | keys.target:AddNewModifier( keys.caster, nil, "modifier_knockback", knockbackModifierTable ) 28 | end 29 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_enigma/midnight_pulse.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: February 17, 2016 3 | Applies the damage to the target]] 4 | function ApplyDPS(keys) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | 9 | local health_percent = ability:GetLevelSpecialValueFor("damage_percent", ability:GetLevel() -1)/100 10 | local health = target:GetMaxHealth() 11 | 12 | ApplyDamage({victim = target, attacker = caster, damage = health * health_percent, damage_type = ability:GetAbilityDamageType()}) 13 | end 14 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_faceless_void/backtrack.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 14.02.2016. 3 | Keeps track of the casters health]] 4 | function BacktrackHealth( keys ) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | 8 | ability.caster_hp_old = ability.caster_hp_old or caster:GetMaxHealth() 9 | ability.caster_hp = ability.caster_hp or caster:GetMaxHealth() 10 | 11 | ability.caster_hp_old = ability.caster_hp 12 | ability.caster_hp = caster:GetHealth() 13 | end 14 | 15 | --[[Author: Pizzalol 16 | Date: 14.02.2016. 17 | Negates incoming damage]] 18 | function BacktrackHeal( keys ) 19 | local caster = keys.caster 20 | local ability = keys.ability 21 | 22 | caster:SetHealth(ability.caster_hp_old) 23 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_furion/sprout.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: March 22, 2016 3 | Creates the sprout]] 4 | function CreateSprout(keys) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | local point = ability:GetCursorPosition() 8 | local duration = ability:GetLevelSpecialValueFor("duration", (ability:GetLevel() -1)) 9 | local vision_range = ability:GetLevelSpecialValueFor("vision_range", (ability:GetLevel() -1)) 10 | local trees = 8 11 | local radius = 150 12 | local angle = math.pi/4 13 | 14 | -- Creates 8 temporary trees at each 45 degree interval around the clicked point 15 | for i=1,trees do 16 | local position = Vector(point.x+radius*math.sin(angle), point.y+radius*math.cos(angle), point.z) 17 | CreateTempTree(position, duration) 18 | angle = angle + math.pi/4 19 | end 20 | -- Gives vision to the caster's team in a radius around the clicked point for the duration 21 | AddFOWViewer(caster:GetTeam(), point, vision_range, duration, false) 22 | end 23 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_furion/teleportation.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: April 5, 2015. 4 | FURION CAN YOU TP TOP? FURION CAN YOU TP TOP? CAN YOU TP TOP? FURION CAN YOU TP TOP? 5 | ]] 6 | function Teleport( event ) 7 | local caster = event.caster 8 | local point = event.target_points[1] 9 | 10 | FindClearSpaceForUnit(caster, point, true) 11 | caster:Stop() 12 | EndTeleport(event) 13 | end 14 | 15 | function CreateTeleportParticles( event ) 16 | local caster = event.caster 17 | local point = event.target_points[1] 18 | local particleName = "particles/units/heroes/hero_furion/furion_teleport_end.vpcf" 19 | caster.teleportParticle = ParticleManager:CreateParticle(particleName, PATTACH_WORLDORIGIN, caster) 20 | ParticleManager:SetParticleControl(caster.teleportParticle, 1, point) 21 | end 22 | 23 | function EndTeleport( event ) 24 | local caster = event.caster 25 | ParticleManager:DestroyParticle(caster.teleportParticle, false) 26 | caster:StopSound("Hero_Furion.Teleport_Grow") 27 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_gyrocopter/call_down.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: March 28, 2016 3 | Gives the caster's team vision in the radius]] 4 | function GiveVision(keys) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | local point = ability:GetCursorPosition() 8 | local sight_radius = ability:GetLevelSpecialValueFor("sight_radius", (ability:GetLevel() -1)) 9 | local sight_duration = ability:GetLevelSpecialValueFor("sight_duration", (ability:GetLevel() -1)) 10 | 11 | AddFOWViewer(caster:GetTeam(), point, sight_radius, sight_duration, false) 12 | end 13 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_huskar/berserkers_blood.lua: -------------------------------------------------------------------------------- 1 | LinkLuaModifier( "modifier_huskar_berserkers_blood_lua" , "heroes/hero_huskar/modifiers/modifier_berserkers_blood_lua.lua" , LUA_MODIFIER_MOTION_NONE ) 2 | 3 | --[[ 4 | Author: Bude 5 | Date: 30.09.2015 6 | Simply applies the lua modifier 7 | --]] 8 | function ApplyLuaModifier( keys ) 9 | local caster = keys.caster 10 | local ability = keys.ability 11 | local modifiername = keys.ModifierName 12 | 13 | caster:AddNewModifier(caster, ability, modifiername, {}) 14 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_huskar/inner_vitality.lua: -------------------------------------------------------------------------------- 1 | LinkLuaModifier( "modifier_huskar_inner_vitality_lua" , "heroes/hero_huskar/modifiers/modifier_inner_vitality_lua.lua" , LUA_MODIFIER_MOTION_NONE ) 2 | 3 | --[[ 4 | Author: Bude 5 | Date: 29.09.2015 6 | Simply applies the lua modifier 7 | --]] 8 | 9 | function ApplyLuaModifier( keys ) 10 | local caster = keys.caster 11 | local target = keys.target 12 | local ability = keys.ability 13 | local modifiername = keys.ModifierName 14 | local duration = ability:GetDuration() 15 | 16 | target:AddNewModifier(caster, ability, modifiername, {Duration = duration}) 17 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_invoker/alacrity.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 12.04.2015. 3 | Applies the alacrity values depending on wex and exort levels]] 4 | function Alacrity( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | 9 | -- Ability variables 10 | local wex_level = caster:FindAbilityByName("wex_datadriven"):GetLevel() - 1 11 | local exort_level = caster:FindAbilityByName("exort_datadriven"):GetLevel() - 1 12 | local damage = ability:GetLevelSpecialValueFor("bonus_damage", exort_level) 13 | local attack_speed = ability:GetLevelSpecialValueFor("bonus_attack_speed", wex_level) 14 | local damage_modifier = keys.damage_modifier 15 | local speed_modifier = keys.speed_modifier 16 | 17 | -- Apply the bonus modifiers 18 | ability:ApplyDataDrivenModifier(caster, target, damage_modifier, {}) 19 | ability:ApplyDataDrivenModifier(caster, target, speed_modifier, {}) 20 | 21 | -- Set the values 22 | target:SetModifierStackCount(damage_modifier, ability, damage) 23 | target:SetModifierStackCount(speed_modifier, ability, attack_speed) 24 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_keeper_of_the_light/chakra_magic.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 19.01.2015. 3 | Restores a set amount of mana to the target]] 4 | function ChakraMagic( keys ) 5 | local target = keys.target 6 | local ability = keys.ability 7 | local mana_restore = ability:GetLevelSpecialValueFor("mana_restore", (ability:GetLevel() - 1)) 8 | 9 | target:GiveMana(mana_restore) 10 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_kunkka/tidebringer.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 09.01.2015 4 | Reset cooldown after attack is landed 5 | ]] 6 | function tidebringer_set_cooldown( keys ) 7 | -- Variables 8 | local caster = keys.caster 9 | local ability = keys.ability 10 | local cooldown = ability:GetCooldown( ability:GetLevel() ) 11 | local modifierName = "modifier_tidebringer_splash_datadriven" 12 | 13 | -- Remove cooldown 14 | caster:RemoveModifierByName( modifierName ) 15 | ability:StartCooldown( cooldown ) 16 | Timers:CreateTimer( cooldown, function() 17 | ability:ApplyDataDrivenModifier( caster, caster, modifierName, {} ) 18 | return nil 19 | end 20 | ) 21 | end 22 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_life_stealer/feast.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | author: jacklarnes, Pizzalol 3 | email: christucket@gmail.com 4 | reddit: /u/jacklarnes 5 | ]] 6 | function feast_attack( keys ) 7 | local attacker = keys.attacker 8 | local target = keys.target 9 | local ability = keys.ability 10 | 11 | ability.hp_leech_percent = ability:GetLevelSpecialValueFor("hp_leech_percent", ability:GetLevel() - 1) 12 | local feast_modifier = keys.feast_modifier 13 | 14 | local damage = target:GetHealth() * (ability.hp_leech_percent / 100) 15 | 16 | -- this sets the number of stacks of damage 17 | ability:ApplyDataDrivenModifier(attacker, attacker, feast_modifier, {}) 18 | attacker:SetModifierStackCount(feast_modifier, ability, damage) 19 | end 20 | 21 | function feast_heal( keys ) 22 | local attacker = keys.attacker 23 | local target = keys.target 24 | local ability = keys.ability 25 | 26 | ability.hp_leech_percent = ability:GetLevelSpecialValueFor("hp_leech_percent", ability:GetLevel() - 1) 27 | local damage = target:GetHealth() * (ability.hp_leech_percent / 100) 28 | 29 | attacker:Heal(damage, ability) 30 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_life_stealer/rage.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | author: jacklarnes 3 | email: christucket@gmail.com 4 | reddit: /u/jacklarnes 5 | ]] 6 | 7 | function rage_start( keys ) 8 | local caster = keys.caster 9 | 10 | caster:Purge(false, true, false, true, false) 11 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_lion/modifiers/modifier_voodoo_lua.lua: -------------------------------------------------------------------------------- 1 | modifier_voodoo_lua = class({}) 2 | 3 | --[[Author: Noya, Pizzalol 4 | Date: 27.09.2015. 5 | Changes the model, reduces the movement speed and disables the target]] 6 | function modifier_voodoo_lua:DeclareFunctions() 7 | local funcs = { 8 | MODIFIER_PROPERTY_MODEL_CHANGE, 9 | MODIFIER_PROPERTY_MOVESPEED_BASE_OVERRIDE 10 | } 11 | 12 | return funcs 13 | end 14 | 15 | function modifier_voodoo_lua:GetModifierModelChange() 16 | return "models/props_gameplay/frog.vmdl" 17 | end 18 | 19 | function modifier_voodoo_lua:GetModifierMoveSpeedOverride() 20 | return self:GetAbility():GetSpecialValueFor("movespeed") 21 | end 22 | 23 | function modifier_voodoo_lua:CheckState() 24 | local state = { 25 | [MODIFIER_STATE_DISARMED] = true, 26 | [MODIFIER_STATE_HEXED] = true, 27 | [MODIFIER_STATE_MUTED] = true, 28 | [MODIFIER_STATE_EVADE_DISABLED] = true, 29 | [MODIFIER_STATE_BLOCK_DISABLED] = true, 30 | [MODIFIER_STATE_SILENCED] = true 31 | } 32 | 33 | return state 34 | end 35 | 36 | function modifier_voodoo_lua:IsHidden() 37 | return false 38 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_lion/voodoo.lua: -------------------------------------------------------------------------------- 1 | LinkLuaModifier("modifier_voodoo_lua", "heroes/hero_lion/modifiers/modifier_voodoo_lua.lua", LUA_MODIFIER_MOTION_NONE) 2 | 3 | --[[Author: Pizzalol 4 | Date: 27.09.2015. 5 | Checks if the target is an illusion, if true then it kills it 6 | otherwise it applies the hex modifier to the target]] 7 | function voodoo_start( keys ) 8 | local caster = keys.caster 9 | local ability = keys.ability 10 | local ability_level = ability:GetLevel() - 1 11 | local target = keys.target 12 | 13 | local duration = ability:GetLevelSpecialValueFor("duration", ability_level) 14 | 15 | if target:IsIllusion() then 16 | target:ForceKill(true) 17 | else 18 | target:AddNewModifier(caster, ability, "modifier_voodoo_lua", {duration = duration}) 19 | end 20 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_lycan/feral_impulse.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 24.03.2015. 3 | Checks if the target owner is the same as the caster owner]] 4 | function FeralImpulse( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | local ability_level = ability:GetLevel() - 1 9 | 10 | local modifier = keys.modifier 11 | local duration = ability:GetLevelSpecialValueFor("think_interval", ability_level) 12 | local caster_owner = caster:GetPlayerOwner() 13 | local target_owner = target:GetPlayerOwner() 14 | 15 | -- If they are the same then apply the modifier 16 | if caster_owner == target_owner then 17 | ability:ApplyDataDrivenModifier(caster, target, modifier, {Duration = duration}) 18 | end 19 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_lycan/howl.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 24.03.2015. 3 | Checks if the unit is owned by a player]] 4 | function Howl( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | local ability_level = ability:GetLevel() - 1 9 | 10 | local playerID = target:GetPlayerOwnerID() 11 | local duration = ability:GetLevelSpecialValueFor("think_interval", ability_level) 12 | local modifier = keys.modifier 13 | 14 | -- If the unit is owned by a player then apply the unit modifier 15 | if playerID then 16 | ability:ApplyDataDrivenModifier(caster, target, modifier, {Duration = duration}) 17 | end 18 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_lycan/modifiers/modifier_shapeshift_model_lua.lua: -------------------------------------------------------------------------------- 1 | modifier_shapeshift_model_lua = class({}) 2 | 3 | --[[Author: Noya 4 | Date: 26.09.2015. 5 | Changes the model of the unit into the lycan shapeshift model as long as the modifier is active]] 6 | function modifier_shapeshift_model_lua:DeclareFunctions() 7 | local funcs = { 8 | MODIFIER_PROPERTY_MODEL_CHANGE 9 | } 10 | 11 | return funcs 12 | end 13 | 14 | function modifier_shapeshift_model_lua:GetModifierModelChange() 15 | return "models/heroes/lycan/lycan_wolf.vmdl" 16 | end 17 | 18 | function modifier_shapeshift_model_lua:IsHidden() 19 | return true 20 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_necrolyte/reapers_scythe.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 06.01.2015. 3 | Deals damage depending on missing hp 4 | If the target dies then it increases the respawn time]] 5 | function ReapersScythe( keys ) 6 | local caster = keys.caster 7 | local target = keys.target 8 | local ability = keys.ability 9 | local target_missing_hp = target:GetMaxHealth() - target:GetHealth() 10 | local damage_per_health = ability:GetLevelSpecialValueFor("damage_per_health", (ability:GetLevel() - 1)) 11 | local respawn_time = ability:GetLevelSpecialValueFor("respawn_constant", (ability:GetLevel() - 1)) 12 | 13 | local damage_table = {} 14 | 15 | damage_table.attacker = caster 16 | damage_table.victim = target 17 | damage_table.ability = ability 18 | damage_table.damage_type = ability:GetAbilityDamageType() 19 | damage_table.damage = target_missing_hp * damage_per_health 20 | 21 | ApplyDamage(damage_table) 22 | 23 | -- Checking if target is alive to decide if it needs to increase respawn time 24 | if not target:IsAlive() then 25 | target:SetTimeUntilRespawn(target:GetRespawnTime() + respawn_time) 26 | end 27 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_nevermore/shadowraze.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: April 5, 2015 4 | Return a front position at a distance 5 | ]] 6 | function ShadowrazePoint( event ) 7 | local caster = event.caster 8 | local fv = caster:GetForwardVector() 9 | local origin = caster:GetAbsOrigin() 10 | local distance = event.distance 11 | 12 | local front_position = origin + fv * distance 13 | local result = {} 14 | table.insert(result, front_position) 15 | 16 | return result 17 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_night_stalker/crippling_fear.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 11.01.2015. 3 | It applies a different modifier depending on the time of day]] 4 | function CripplingFear( keys ) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | local target = keys.target 8 | 9 | local modifier_day = keys.modifier_day 10 | local modifier_night = keys.modifier_night 11 | 12 | if GameRules:IsDaytime() then 13 | ability:ApplyDataDrivenModifier(caster, target, modifier_day, {}) 14 | else 15 | ability:ApplyDataDrivenModifier(caster, target, modifier_night, {}) 16 | end 17 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_night_stalker/hunter_in_the_night.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 11.01.2015. 3 | Checks if it is night time to see if it should apply the night modifier 4 | If it is day then it removes it if the caster has the night modifier]] 5 | function HunterInTheNight( keys ) 6 | local caster = keys.caster 7 | local ability = keys.ability 8 | local modifier = keys.modifier 9 | 10 | if not GameRules:IsDaytime() then 11 | ability:ApplyDataDrivenModifier(caster, caster, modifier, {}) 12 | else 13 | if caster:HasModifier(modifier) then caster:RemoveModifierByName(modifier) end 14 | end 15 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_night_stalker/void.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 10.01.2015. 3 | It applies a slow of a different duration depending on the time of the day]] 4 | function Void( keys ) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | local target = keys.target 8 | local modifier = keys.modifier 9 | 10 | local duration_day = ability:GetLevelSpecialValueFor("duration_day", (ability:GetLevel() - 1)) 11 | local duration_night = ability:GetLevelSpecialValueFor("duration_night", (ability:GetLevel() - 1)) 12 | 13 | if GameRules:IsDaytime() then 14 | ability:ApplyDataDrivenModifier(caster, target, modifier, {duration = duration_day}) 15 | else 16 | ability:ApplyDataDrivenModifier(caster, target, modifier, {duration = duration_night}) 17 | end 18 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_nyx_assassin/spiked_carapace.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 10.01.2015. 4 | Init the table 5 | ]] 6 | function spiked_carapace_init( keys ) 7 | keys.caster.carapaced_units = {} 8 | end 9 | 10 | --[[ 11 | Author: kritth 12 | Date: 10.01.2015. 13 | Reflect damage 14 | ]] 15 | function spiked_carapace_reflect( keys ) 16 | -- Variables 17 | local caster = keys.caster 18 | local attacker = keys.attacker 19 | local damageTaken = keys.DamageTaken 20 | 21 | -- Check if it's not already been hit 22 | if not caster.carapaced_units[ attacker:entindex() ] and not attacker:IsMagicImmune() then 23 | attacker:SetHealth( attacker:GetHealth() - damageTaken ) 24 | keys.ability:ApplyDataDrivenModifier( caster, attacker, "modifier_spiked_carapaced_stun_datadriven", { } ) 25 | caster:SetHealth( caster:GetHealth() + damageTaken ) 26 | caster.carapaced_units[ attacker:entindex() ] = attacker 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_obsidian_destroyer/astral_imprisonment.lua: -------------------------------------------------------------------------------- 1 | --[[Astral Imprisonment stop loop sound and show the model again 2 | Author: chrislotix 3 | Date: 6.1.2015.]] 4 | function AstralImprisonmentEnd( keys ) 5 | 6 | local sound_name = "Hero_ObsidianDestroyer.AstralImprisonment" 7 | local target = keys.target 8 | 9 | --Stops the loop sound when the modifier ends 10 | 11 | StopSoundEvent(sound_name, target) 12 | 13 | target:RemoveNoDraw() 14 | end 15 | 16 | --[[Author: Pizzalol 17 | Date: 27.04.2015. 18 | Hides the model for the duration of Astral Imprisonment]] 19 | function AstralImprisonmentStart( keys ) 20 | local target = keys.target 21 | 22 | target:AddNoDraw() 23 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_obsidian_destroyer/essence_aura.lua: -------------------------------------------------------------------------------- 1 | function RestoreMana( keys ) 2 | 3 | local target = keys.unit 4 | local ability = keys.ability 5 | local restore_amount = ability:GetLevelSpecialValueFor("restore_amount", (ability:GetLevel() -1)) 6 | local max_mana = target:GetMaxMana() * restore_amount / 100 7 | local new_mana = target:GetMana() + max_mana 8 | 9 | print("test") 10 | print(max_mana) 11 | 12 | --target:GiveMana(max_mana) 13 | --target:RestoreMana(max_mana) 14 | 15 | if new_mana > target:GetMaxMana() then 16 | target:SetMana(target:GetMaxMana()) 17 | else 18 | target:SetMana(new_mana) 19 | end 20 | end 21 | 22 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_ogre_magi/bloodlust.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: February 13, 2016 3 | Scales target's model by 125%]] 4 | function ChangeModel(keys) 5 | local target = keys.target 6 | local ability = keys.ability 7 | local model_scale = ability:GetLevelSpecialValueFor( "model_scale", ability:GetLevel() - 1 ) 8 | 9 | -- Instant scaling, as opposed to the gradual way it happens in Dota 10 | target:SetModelScale(model_scale) 11 | end 12 | 13 | --[[Author: YOLOSPAGHETTI 14 | Date: February 13, 2016 15 | Reverts the target's model to normal scale]] 16 | function RevertModel(keys) 17 | local target = keys.target 18 | 19 | -- Instant scaling, as opposed to the gradual way it happens in Dota 20 | target:SetModelScale(1) 21 | end 22 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_phantom_assassin/blur.lua: -------------------------------------------------------------------------------- 1 | --[[ Author: Pizzalol 2 | Date: 21.12.2014. 3 | Checks if there are enemy heroes nearby to determine if it needs to apply Blur]] 4 | 5 | function Blur( keys ) 6 | local caster = keys.caster 7 | local ability = keys.ability 8 | local casterLocation = caster:GetAbsOrigin() 9 | local radius = ability:GetLevelSpecialValueFor("radius", (ability:GetLevel() - 1)) 10 | 11 | local enemyHeroes = FindUnitsInRadius(caster:GetTeam(), casterLocation, nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO, 0, 0, false) 12 | 13 | if #enemyHeroes>0 then 14 | ability:ApplyDataDrivenModifier(caster, caster, "modifier_blur_enemy_datadriven", {}) 15 | else 16 | if caster:HasModifier("modifier_blur_enemy_datadriven") then 17 | caster:RemoveModifierByName("modifier_blur_enemy_datadriven") 18 | end 19 | end 20 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_puck/phase_shift.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Ractidous 3 | Date: 29.01.2015. 4 | Hide caster's model. 5 | ]] 6 | function HideCaster( event ) 7 | event.caster:AddNoDraw() 8 | end 9 | 10 | --[[ 11 | Author: Ractidous 12 | Date: 29.01.2015. 13 | Show caster's model. 14 | ]] 15 | function ShowCaster( event ) 16 | event.caster:RemoveNoDraw() 17 | end 18 | 19 | --[[ 20 | Author: Ractidous 21 | Date: 13.02.2015. 22 | Stop a sound on the target unit. 23 | ]] 24 | function StopSound( event ) 25 | StopSoundEvent( event.sound_name, event.target ) 26 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_pudge/Modifiers/modifier_meat_hook_followthrough_lua.lua: -------------------------------------------------------------------------------- 1 | modifier_meat_hook_followthrough_lua = class({}) 2 | 3 | -------------------------------------------------------------------------------- 4 | 5 | function modifier_meat_hook_followthrough_lua:IsHidden() 6 | return true 7 | end 8 | 9 | 10 | -------------------------------------------------------------------------------- 11 | 12 | function modifier_meat_hook_followthrough_lua:CheckState() 13 | local state = { 14 | [MODIFIER_STATE_STUNNED] = true, 15 | } 16 | 17 | return state 18 | end 19 | 20 | -------------------------------------------------------------------------------- 21 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_queenofpain/blink.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Amused/D3luxe 2 | Used by: Pizzalol 3 | Date: 19.12.2014. 4 | Blinks the target to the target point, if the point is beyond max blink range then blink the maximum range]] 5 | function Blink(keys) 6 | --PrintTable(keys) 7 | local point = keys.target_points[1] 8 | local caster = keys.caster 9 | local casterPos = caster:GetAbsOrigin() 10 | local pid = caster:GetPlayerID() 11 | local difference = point - casterPos 12 | local ability = keys.ability 13 | local range = ability:GetLevelSpecialValueFor("blink_range", (ability:GetLevel() - 1)) 14 | 15 | ProjectileManager:ProjectileDodge(caster) 16 | 17 | if difference:Length2D() > range then 18 | point = casterPos + (point - casterPos):Normalized() * range 19 | end 20 | 21 | FindClearSpaceForUnit(caster, point, false) 22 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_sand_king/burrowstrike.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 1.1.2015 4 | Teleport sandking to destination 5 | ]] 6 | function burrowstrike_teleport( keys ) 7 | local point = keys.target_points[1] 8 | local caster = keys.caster 9 | FindClearSpaceForUnit( caster, point, false ) 10 | end 11 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_sand_king/caustic_finale.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | CHANGELIST: 3 | 09.01.2015 - Remove ReleaseParticleIndex( .. ) 4 | ]] 5 | 6 | --[[ 7 | Author: kritth 8 | Date: 09.01.2015 9 | Fire effect at target's location upon dead 10 | ]] 11 | function caustic_finale_dead_effect( keys ) 12 | print( keys.target:GetHealth() ) 13 | if not keys.target:IsAlive() then 14 | local particleName = "particles/units/heroes/hero_sandking/sandking_caustic_finale_explode.vpcf" 15 | local soundEventName = "Ability.SandKing_CausticFinale" 16 | 17 | local fxIndex = ParticleManager:CreateParticle( particleName, PATTACH_ABSORIGIN, keys.target ) 18 | StartSoundEvent( soundEventName, keys.target ) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_sand_king/sand_storm.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 1.1.2015 4 | Remove the loop sound upon destroying the modifier 5 | ]] 6 | function sand_storm_remove_sound( keys ) 7 | local sound_name = "Ability.SandKing_SandStorm.loop" 8 | StopSoundEvent( sound_name, keys.caster ) 9 | end 10 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_shadow_shaman/modifiers/modifier_voodoo_lua.lua: -------------------------------------------------------------------------------- 1 | modifier_voodoo_lua = class({}) 2 | 3 | --[[Author: Noya, Pizzalol 4 | Date: 27.09.2015. 5 | Changes the model, reduces the movement speed and disables the target]] 6 | function modifier_voodoo_lua:DeclareFunctions() 7 | local funcs = { 8 | MODIFIER_PROPERTY_MODEL_CHANGE, 9 | MODIFIER_PROPERTY_MOVESPEED_BASE_OVERRIDE 10 | } 11 | 12 | return funcs 13 | end 14 | 15 | function modifier_voodoo_lua:GetModifierModelChange() 16 | return "models/props_gameplay/chicken.vmdl" 17 | end 18 | 19 | function modifier_voodoo_lua:GetModifierMoveSpeedOverride() 20 | return self:GetAbility():GetSpecialValueFor("movespeed") 21 | end 22 | 23 | function modifier_voodoo_lua:CheckState() 24 | local state = { 25 | [MODIFIER_STATE_DISARMED] = true, 26 | [MODIFIER_STATE_HEXED] = true, 27 | [MODIFIER_STATE_MUTED] = true, 28 | [MODIFIER_STATE_EVADE_DISABLED] = true, 29 | [MODIFIER_STATE_BLOCK_DISABLED] = true, 30 | [MODIFIER_STATE_SILENCED] = true 31 | } 32 | 33 | return state 34 | end 35 | 36 | function modifier_voodoo_lua:IsHidden() 37 | return false 38 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_shadow_shaman/shackles.lua: -------------------------------------------------------------------------------- 1 | function StopSound( event ) 2 | local target = event.target 3 | target:StopSound("Hero_ShadowShaman.Shackles") 4 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_shadow_shaman/voodoo.lua: -------------------------------------------------------------------------------- 1 | LinkLuaModifier("modifier_voodoo_lua", "heroes/hero_shadow_shaman/modifiers/modifier_voodoo_lua.lua", LUA_MODIFIER_MOTION_NONE) 2 | 3 | --[[Author: Pizzalol 4 | Date: 27.09.2015. 5 | Checks if the target is an illusion, if true then it kills it 6 | otherwise it applies the hex modifier to the target]] 7 | function voodoo_start( keys ) 8 | local caster = keys.caster 9 | local ability = keys.ability 10 | local ability_level = ability:GetLevel() - 1 11 | local target = keys.target 12 | 13 | local duration = ability:GetLevelSpecialValueFor("duration", ability_level) 14 | 15 | if target:IsIllusion() then 16 | target:ForceKill(true) 17 | else 18 | target:AddNewModifier(caster, ability, "modifier_voodoo_lua", {duration = duration}) 19 | end 20 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_silencer/curse_of_the_silent.lua: -------------------------------------------------------------------------------- 1 | --[[Curse of the Silent Mana Drain part 2 | Author: chrislotix 3 | Date: 10.1.2015.]] 4 | 5 | function ManaDrain( keys ) 6 | 7 | local target = keys.target 8 | local caster = keys.caster 9 | local ability = keys.ability 10 | local mana_drain = ability:GetLevelSpecialValueFor("mana_damage", (ability:GetLevel() -1)) 11 | 12 | target:ReduceMana(mana_drain) 13 | 14 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_silencer/glaives_of_wisdom.lua: -------------------------------------------------------------------------------- 1 | --[[Glaives of Wisdom intelligence to damage 2 | Author: chrislotix 3 | Date: 10.1.2015.]] 4 | 5 | function IntToDamage( keys ) 6 | 7 | local ability = keys.ability 8 | local caster = keys.caster 9 | local target = keys.target 10 | local int_caster = caster:GetIntellect() 11 | local int_damage = ability:GetLevelSpecialValueFor("intellect_damage_pct", (ability:GetLevel() -1)) 12 | 13 | 14 | local damage_table = {} 15 | 16 | damage_table.attacker = caster 17 | damage_table.damage_type = ability:GetAbilityDamageType() 18 | damage_table.ability = ability 19 | damage_table.victim = target 20 | 21 | damage_table.damage = int_caster * int_damage / 100 22 | 23 | ApplyDamage(damage_table) 24 | 25 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_silencer/last_word.lua: -------------------------------------------------------------------------------- 1 | --[[Last Word stop loop sound 2 | Author: chrislotix 3 | Date: 11.1.2015.]] 4 | 5 | function LastWordStopSound( keys ) 6 | 7 | local sound_name = "Hero_Silencer.LastWord.Target" 8 | local unit = keys.unit 9 | 10 | StopSoundEvent(sound_name, unit) 11 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_skeleton_king/vampiric_aura.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: Noya 3 | Date: 14.01.2015. 4 | Applies a Lifesteal modifier if the attacked target is not a building and not a mechanical unit 5 | ]] 6 | function VampiricAuraApply( event ) 7 | -- Variables 8 | local attacker = event.attacker 9 | local target = event.target 10 | local ability = event.ability 11 | 12 | if target.GetInvulnCount == nil and not target:IsMechanical() then 13 | ability:ApplyDataDrivenModifier(attacker, attacker, "modifier_vampiric_aura_lifesteal", {duration = 0.03}) 14 | end 15 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_sniper/assassinate.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 6.1.2015. 4 | Register target 5 | ]] 6 | function assassinate_register_target( keys ) 7 | keys.caster.assassinate_target = keys.target 8 | end 9 | 10 | --[[ 11 | Author: kritth 12 | Date: 6.1.2015. 13 | Remove debuff from target 14 | ]] 15 | function assassinate_remove_target( keys ) 16 | if keys.caster.assassinate_target then 17 | keys.caster.assassinate_target:RemoveModifierByName( "modifier_assassinate_target_datadriven" ) 18 | keys.caster.assassinate_target = nil 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_spectre/dispersion.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Nightborn 2 | Date: August 27, 2016 3 | ]] 4 | 5 | LinkLuaModifier("modifier_spectre_dispersion_lua", "heroes/hero_spectre/modifiers/modifier_spectre_dispersion_lua", LUA_MODIFIER_MOTION_NONE ) 6 | 7 | function ApplyModifier (keys) 8 | 9 | local caster = keys.caster 10 | local ability = keys.ability 11 | local modifier = "modifier_spectre_dispersion_lua" 12 | 13 | caster:AddNewModifier( caster, ability, modifier, {} ) 14 | 15 | end 16 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_stormspirit/overload.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 11.01.2015. 4 | Create a listener to listen to the abiltiy casted in the game 5 | 6 | Changed: 25.03.2015. - Implemented a bugfix by NEO 7 | ]] 8 | function overload_check_order( keys ) 9 | local caster = keys.caster 10 | local ability = keys.ability 11 | ListenToGameEvent( "dota_player_used_ability", function( event ) 12 | local ply = EntIndexToHScript( event.PlayerID ) 13 | -- Check if player existed 14 | if ply then 15 | local hero = ply:GetAssignedHero() 16 | -- Check if it is corrent hero 17 | if hero == caster then 18 | -- Check if ability on cast bar is casted 19 | local ability_count = caster:GetAbilityCount() 20 | for i = 0, (ability_count - 1) do 21 | local ability_at_slot = caster:GetAbilityByIndex( i ) 22 | if ability_at_slot and ability_at_slot:GetAbilityName() == event.abilityname then 23 | ability:ApplyDataDrivenModifier( caster, caster, "modifier_overload_damage_datadriven", {} ) 24 | break 25 | end 26 | end 27 | end 28 | end 29 | end, nil 30 | ) 31 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_tinker/rearm.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 7.1.2015. 4 | Put modifier to override animation on cast 5 | ]] 6 | function rearm_start( keys ) 7 | local caster = keys.caster 8 | local ability = keys.ability 9 | local abilityLevel = ability:GetLevel() 10 | ability:ApplyDataDrivenModifier( caster, caster, "modifier_rearm_level_" .. abilityLevel .. "_datadriven", {} ) 11 | end 12 | 13 | --[[ 14 | Author: kritth 15 | Date: 7.1.2015. 16 | Refresh cooldown 17 | ]] 18 | function rearm_refresh_cooldown( keys ) 19 | local caster = keys.caster 20 | 21 | -- Reset cooldown for abilities that is not rearm 22 | for i = 0, caster:GetAbilityCount() - 1 do 23 | local ability = caster:GetAbilityByIndex( i ) 24 | if ability and ability ~= keys.ability then 25 | ability:EndCooldown() 26 | end 27 | end 28 | 29 | -- Put item exemption in here 30 | local exempt_table = {} 31 | 32 | -- Reset cooldown for items 33 | for i = 0, 5 do 34 | local item = caster:GetItemInSlot( i ) 35 | if item and not exempt_table( item:GetAbilityName() ) then 36 | item:EndCooldown() 37 | end 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_ursa/overpower.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Author: kritth 3 | Date: 7.1.2015. 4 | Init: Create stack and buff 5 | ]] 6 | function overpower_init( keys ) 7 | local caster = keys.caster 8 | local ability = keys.ability 9 | local modifierName = "modifier_enrage_buff_datadriven" 10 | local duration = ability:GetLevelSpecialValueFor( "duration_tooltip", ability:GetLevel() - 1 ) 11 | local max_stack = ability:GetLevelSpecialValueFor( "max_attacks", ability:GetLevel() - 1 ) 12 | 13 | ability:ApplyDataDrivenModifier( caster, caster, modifierName, { } ) 14 | caster:SetModifierStackCount( modifierName, ability, max_stack ) 15 | end 16 | 17 | --[[ 18 | Author: kritth 19 | Date: 7.1.2015. 20 | Main: Decrease stack upon attack 21 | ]] 22 | function overpower_decrease_stack( keys ) 23 | local caster = keys.caster 24 | local ability = keys.ability 25 | local modifierName = "modifier_enrage_buff_datadriven" 26 | local current_stack = caster:GetModifierStackCount( modifierName, ability ) 27 | 28 | if current_stack > 1 then 29 | caster:SetModifierStackCount( modifierName, ability, current_stack - 1 ) 30 | else 31 | caster:RemoveModifierByName( modifierName ) 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_vengefulspirit/command_aura.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 26.01.2015. 3 | Saves the killer of the aura carrier]] 4 | function CommandAuraDeath( keys ) 5 | local caster = keys.caster 6 | local attacker = keys.attacker 7 | 8 | caster.command_aura_target = attacker 9 | end 10 | 11 | --[[Author: Pizzalol 12 | Date: 26.01.2015. 13 | Removes the negative aura from the killer on caster respawn]] 14 | function CommandAuraRespawn( keys ) 15 | local caster = keys.caster 16 | local modifier = keys.modifier 17 | 18 | caster.command_aura_target:RemoveModifierByName(modifier) 19 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_vengefulspirit/nether_swap.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 12.07.2015. 3 | Swaps the position of the caster and the target]] 4 | function NetherSwap( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | local tree_radius = ability:GetLevelSpecialValueFor("tree_radius", ability:GetLevel() - 1) 9 | 10 | local caster_position = caster:GetAbsOrigin() 11 | local target_position = target:GetAbsOrigin() 12 | 13 | -- Destroy trees around the caster and target 14 | GridNav:DestroyTreesAroundPoint( caster_position, tree_radius, false ) 15 | GridNav:DestroyTreesAroundPoint( target_position, tree_radius, false ) 16 | 17 | -- Swap their positions 18 | caster:SetAbsOrigin(target_position) 19 | target:SetAbsOrigin(caster_position) 20 | 21 | -- Make sure that they dont get stuck 22 | FindClearSpaceForUnit( caster, target_position, true ) 23 | FindClearSpaceForUnit( target, caster_position, true ) 24 | 25 | -- Stops the current action of the target 26 | target:Interrupt() 27 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_venomancer/poison_nova.lua: -------------------------------------------------------------------------------- 1 | --[[Author: Pizzalol 2 | Date: 30.09.2015. 3 | Deals non lethal magic damage to the target]] 4 | function PoisonNova( keys ) 5 | local caster = keys.caster 6 | local target = keys.target 7 | local ability = keys.ability 8 | local ability_level = ability:GetLevel() - 1 9 | 10 | local damage = ability:GetLevelSpecialValueFor("damage", ability_level) 11 | 12 | local damage_table = {} 13 | damage_table.attacker = caster 14 | damage_table.victim = target 15 | damage_table.damage_type = ability:GetAbilityDamageType() 16 | damage_table.ability = ability 17 | damage_table.damage = damage 18 | damage_table.damage_flags = DOTA_DAMAGE_FLAG_NON_LETHAL 19 | 20 | ApplyDamage(damage_table) 21 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/heroes/hero_witch_doctor/death_ward.lua: -------------------------------------------------------------------------------- 1 | --[[Author: YOLOSPAGHETTI 2 | Date: March 15, 2016 3 | Creates the death ward]] 4 | function CreateWard(keys) 5 | local caster = keys.caster 6 | local ability = keys.ability 7 | local position = ability:GetCursorPosition() 8 | 9 | -- Creates the death ward (There is no way to control the default ward, so this is a custom one) 10 | caster.death_ward = CreateUnitByName("witch_doctor_death_ward_datadriven", position, true, caster, nil, caster:GetTeam()) 11 | caster.death_ward:SetControllableByPlayer(caster:GetPlayerID(), true) 12 | caster.death_ward:SetOwner(caster) 13 | 14 | -- Applies the modifier (gives it damage, removes health bar, and makes it invulnerable) 15 | ability:ApplyDataDrivenModifier( caster, caster.death_ward, "modifier_death_ward_datadriven", {} ) 16 | end 17 | 18 | --[[Author: YOLOSPAGHETTI 19 | Date: March 15, 2016 20 | Removes the death ward entity from the game and stops its sound]] 21 | function DestroyWard(keys) 22 | local caster = keys.caster 23 | 24 | UTIL_Remove(caster.death_ward) 25 | StopSoundEvent(keys.sound, caster) 26 | end 27 | -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_cheese.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: January 25, 2015 4 | Called when Cheese is cast. Restores health and mana to the caster. 5 | Additional parameters: keys.HealthRestore and keys.ManaRestore 6 | ================================================================================================================= ]] 7 | function item_cheese_datadriven_on_spell_start(keys) 8 | keys.caster:Heal(keys.HealthRestore, keys.caster) 9 | keys.caster:GiveMana(keys.ManaRestore) 10 | 11 | --Reduce the charges left on the item by 1. Remove the item if there are no charges left. 12 | local new_charges = keys.ability:GetCurrentCharges() - 1 13 | if new_charges <= 0 then 14 | keys.caster:RemoveItem(keys.ability) 15 | else --new_charges > 0 16 | keys.ability:SetCurrentCharges(new_charges) 17 | end 18 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_force_staff.lua: -------------------------------------------------------------------------------- 1 | --Author: Nightborn and KAL 2 | --Created: August 27, 2016 3 | 4 | function ForceStaff (keys) 5 | 6 | local target = keys.target 7 | local ability = keys.ability 8 | local ability_level = ability:GetLevel() - 1 9 | 10 | target:Stop() 11 | 12 | ability.forced_direction = target:GetForwardVector() 13 | ability.forced_distance = ability:GetLevelSpecialValueFor("push_length", ability_level) 14 | ability.forced_speed = ability:GetLevelSpecialValueFor("push_speed", ability_level) * 1/30 -- * 1/30 gives a duration of ~0.4 second push time (which is what the gamepedia-site says it should be) 15 | ability.forced_traveled = 0 16 | 17 | end 18 | 19 | function ForceHorizontal( keys ) 20 | 21 | local target = keys.target 22 | local ability = keys.ability 23 | 24 | if ability.forced_traveled < ability.forced_distance then 25 | target:SetAbsOrigin(target:GetAbsOrigin() + ability.forced_direction * ability.forced_speed) 26 | ability.forced_traveled = ability.forced_traveled + (ability.forced_direction * ability.forced_speed):Length2D() 27 | else 28 | target:InterruptMotionControllers(true) 29 | end 30 | 31 | end 32 | -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_lifesteal.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: January 26, 2015 4 | Called when the unit lands an attack on a target. Applies a brief lifesteal modifier if not attacking a structure 5 | (Lifesteal blocks in KV files will normally allow the unit to heal when attacking these). 6 | ================================================================================================================= ]] 7 | function modifier_item_lifesteal_datadriven_on_orb_impact(keys) 8 | if keys.target.GetInvulnCount == nil then 9 | keys.ability:ApplyDataDrivenModifier(keys.attacker, keys.attacker, "modifier_item_lifesteal_datadriven_lifesteal", {duration = 0.03}) 10 | end 11 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_mask_of_madness.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: February 4, 2015 4 | Called when the unit lands an attack on a target. Applies a brief lifesteal modifier if not attacking a structure 5 | (Lifesteal blocks in KV files will normally allow the unit to heal when attacking these). 6 | ================================================================================================================= ]] 7 | function modifier_item_mask_of_madness_datadriven_on_orb_impact(keys) 8 | if keys.target.GetInvulnCount == nil then 9 | keys.ability:ApplyDataDrivenModifier(keys.attacker, keys.attacker, "modifier_item_mask_of_madness_datadriven_lifesteal", {duration = 0.03}) 10 | end 11 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_refresher.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: January 26, 2015 4 | Called when Refresher Orb is cast. Takes the player's abilities and items off cooldown. 5 | ================================================================================================================= ]] 6 | function item_refresher_datadriven_on_spell_start(keys) 7 | --Refresh all abilities on the caster. 8 | for i=0, 15, 1 do --The maximum number of abilities a unit can have is currently 16. 9 | local current_ability = keys.caster:GetAbilityByIndex(i) 10 | if current_ability ~= nil then 11 | current_ability:EndCooldown() 12 | end 13 | end 14 | 15 | --Refresh all items the caster has. 16 | for i=0, 5, 1 do 17 | local current_item = keys.caster:GetItemInSlot(i) 18 | if current_item ~= nil then 19 | if current_item:GetName() ~= "item_refresher_datadriven" then --Refresher Orb does not refresh itself. 20 | current_item:EndCooldown() 21 | end 22 | end 23 | end 24 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_sange.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: February 4, 2015 4 | Called when the unit lands an attack on a target and the chance to Lesser Maim is successful. Applies the 5 | modifier so long as the target is not a structure. 6 | ================================================================================================================= ]] 7 | function modifier_item_sange_datadriven_on_attack_landed_random_on_success(keys) 8 | if keys.target.GetInvulnCount == nil then --If the target is not a structure. 9 | keys.target:EmitSound("DOTA_Item.Maim") 10 | keys.ability:ApplyDataDrivenModifier(keys.attacker, keys.target, "modifier_item_sange_datadriven_lesser_maim", nil) 11 | end 12 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_sange_and_yasha.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: February 3, 2015 4 | Called when the unit lands an attack on a target and the chance to Greater Maim is successful. Applies the 5 | modifier so long as the target is not a structure. 6 | ================================================================================================================= ]] 7 | function modifier_item_sange_and_yasha_datadriven_on_attack_landed_random_on_success(keys) 8 | if keys.target.GetInvulnCount == nil then --If the target is not a structure. 9 | keys.target:EmitSound("DOTA_Item.Maim") 10 | keys.ability:ApplyDataDrivenModifier(keys.attacker, keys.target, "modifier_item_sange_and_yasha_datadriven_greater_maim", nil) 11 | end 12 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_skadi.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook 3 | Date: February 4, 2015 4 | Called when the unit lands an attack on a target. Applies the modifier so long as the target is not a structure. 5 | Additional parameters: keys.ColdDurationMelee and keys.ColdDurationRanged 6 | ================================================================================================================= ]] 7 | function modifier_item_skadi_datadriven_on_orb_impact(keys) 8 | if keys.target.GetInvulnCount == nil then 9 | if keys.caster:IsRangedAttacker() then 10 | keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_datadriven_cold_attack", {duration = keys.ColdDurationRanged}) 11 | else --The caster is melee. 12 | keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_datadriven_cold_attack", {duration = keys.ColdDurationMelee}) 13 | end 14 | end 15 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/items/item_vladmir.lua: -------------------------------------------------------------------------------- 1 | --[[ ============================================================================================================ 2 | Author: Rook, with help from Noya 3 | Date: January 26, 2015 4 | Called when the melee unit affected by the lifesteal aura lands an attack on a target. Applies a brief lifesteal 5 | modifier if not attacking a structure or mechanical unit (Lifesteal blocks in KV files will normally allow the 6 | unit to heal when attacking these). 7 | ================================================================================================================= ]] 8 | function modifier_item_vladmir_datadriven_lifesteal_aura_on_attack_landed(keys) 9 | if keys.target.GetInvulnCount == nil and not keys.target:IsMechanical() then 10 | keys.ability:ApplyDataDrivenModifier(keys.attacker, keys.attacker, "modifier_item_vladmir_datadriven_lifesteal_aura_lifesteal", {duration = 0.03}) 11 | end 12 | end -------------------------------------------------------------------------------- /game/scripts/vscripts/libraries/modifiers/modifier_movespeed_cap.lua: -------------------------------------------------------------------------------- 1 | modifier_movespeed_cap = class({}) 2 | 3 | function modifier_movespeed_cap:DeclareFunctions() 4 | local funcs = { 5 | MODIFIER_PROPERTY_MOVESPEED_MAX, 6 | MODIFIER_PROPERTY_MOVESPEED_LIMIT, 7 | } 8 | 9 | return funcs 10 | end 11 | 12 | function modifier_movespeed_cap:GetModifierMoveSpeed_Max( params ) 13 | return 1000 14 | end 15 | 16 | function modifier_movespeed_cap:GetModifierMoveSpeed_Limit( params ) 17 | return 1000 18 | end 19 | 20 | function modifier_movespeed_cap:IsHidden() 21 | return true 22 | end 23 | -------------------------------------------------------------------------------- /game/scripts/vscripts/libraries/modifiers/modifier_movespeed_cap_low.lua: -------------------------------------------------------------------------------- 1 | modifier_movespeed_cap_low = class({}) 2 | 3 | function modifier_movespeed_cap_low:DeclareFunctions() 4 | local funcs = { 5 | MODIFIER_PROPERTY_MOVESPEED_MAX, 6 | MODIFIER_PROPERTY_MOVESPEED_LIMIT, 7 | } 8 | 9 | return funcs 10 | end 11 | 12 | function modifier_movespeed_cap_low:GetModifierMoveSpeed_Max( params ) 13 | return 0.1 14 | end 15 | 16 | function modifier_movespeed_cap_low:GetModifierMoveSpeed_Limit( params ) 17 | return 0.1 18 | end 19 | 20 | function modifier_movespeed_cap_low:IsHidden() 21 | return true 22 | end 23 | --------------------------------------------------------------------------------