Files
2HUCardTDGame/scripts/vscripts/addon_game_mode.lua
2022-07-23 00:21:14 -04:00

1938 lines
96 KiB
Lua
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
if CTHTDGameMode == nil then
CTHTDGameMode = class({})
end
require( "util")
require( "common")
-- require( "component/timers")
require( "system/service")
require( "system/spawner")
require( "system/items")
require( "system/tower")
require( "system/damage")
require( "system/custom_event")
require( "system/combo")
require( "system/ai")
require( "trigger/PassCorner")
-- require( "cosmetic_abilities")
function Precache( context )
PrecacheEveryThingFromKV( context )
PrecacheResource( "particle", "particles/econ/events/ti6/hero_levelup_ti6_godray.vpcf",context )
PrecacheResource( "particle", "particles/thtd/msg/thtd_msg_level.vpcf",context )
PrecacheResource( "particle", "particles/thtd/msg/thtd_msg_star.vpcf",context )
PrecacheResource( "particle", "particles/thtd/msg/thtd_msg_food.vpcf",context )
PrecacheResource( "particle", "particles/common/thtd_food_msg.vpcf",context )
PrecacheResource( "particle_folder", "particles/portraits", context )
PrecacheResource( "particle", "particles/heroes/lily/ability_lily_01_a.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lily/ability_lily_02.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_cirno/ability_cirno_02.vpcf",context )
PrecacheResource( "particle", "particles/heroes/letty/ability_letty_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/kogasa/ability_kogasa_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/kogasa/ability_kogasa_01_debuff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lyrica/ability_lyrica_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lunasa/ability_lunasa_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lunasa/ability_lunasa_buff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/merlin/ability_merlin_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/merlin/ability_merlin_buff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/rumia/ability_rumia_02_projectile.vpcf",context )
PrecacheResource( "particle", "particles/heroes/satori/ability_satori_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/iku/ability_iku_lightning.vpcf",context )
PrecacheResource( "particle", "particles/heroes/iku/ability_iku_01_explosion.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_marisa/ability_marisa_02.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_marisa/ability_marisa_02_pink.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_marisa/ability_marisa_02_blue.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_marisa/ability_marisa_02_normal.vpcf",context )
PrecacheResource( "particle", "particles/econ/items/earthshaker/egteam_set/hero_earthshaker_egset/earthshaker_echoslam_start_fallback_low_egset.vpcf",context )
PrecacheResource( "particle", "particles/heroes/tenshi/ability_tenshi_03.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_patchouli/ability_patchouli_01_agni_shine.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_patchouli/ability_patchouli_01_bury_in_lake.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_patchouli/ability_patchouli_01_mercury_poison.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_reisen/ability_reisen_03.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_yuyuko/ability_yuyuko_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_yuyuko/ability_yuyuko_04.vpcf",context )
PrecacheResource( "particle", "particles/heroes/thtd_youmu/ability_youmu_01_laser.vpcf",context )
PrecacheResource( "particle", "particles/heroes/youmu/youmu_02_effect_explosion.vpcf",context )
PrecacheResource( "particle", "particles/thd2/heroes/youmu/youmu_01_blink_effect.vpcf",context )
PrecacheResource( "particle", "particles/heroes/youmu/youmu_04_circle.vpcf",context )
PrecacheResource( "particle", "particles/thd2/heroes/youmu/youmu_04_sword_effect.vpcf",context )
PrecacheResource( "particle", "particles/heroes/rin/ability_rin_02_body_c.vpcf",context )
PrecacheResource( "particle", "particles/heroes/rin/ability_rin_01_projectile.vpcf",context )
PrecacheResource( "particle", "particles/heroes/rin/ability_rin_01.vpcf",context )
PrecacheResource( "particle", "particles/heroes/moluo/abiilty_moluo_014.vpcf",context )
PrecacheResource( "particle", "particles/thd2/heroes/utsuho/ability_utsuho03_effect.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lyrica/ability_lyrica_music_buff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/lunasa/ability_lunasa_music_buff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/merlin/ability_merlin_music_buff.vpcf",context )
PrecacheResource( "particle", "particles/heroes/byakuren/ability_byakuren_02.vpcf",context )
PrecacheResource( "particle", "particles/econ/items/lina/lina_ti6/lina_ti6_laguna_blade.vpcf",context )
PrecacheResource( "particle", "particles/thd2/items/item_yatagarasu.vpcf",context )
PrecacheResource( "particle", "particles/heroes/daiyousei/ability_daiyousei_02.vpcf",context )
PrecacheResource( "particle", "particles/heroes/cirno/ability_cirno_02.vpcf",context )
PrecacheResource( "particle", "particles/heroes/yumemi/ability_yumemi_04_exolosion.vpcf",context )
PrecacheResource( "particle", "particles/thd2/items/item_donation_box.vpcf",context )
PrecacheResource( "particle", "particles/thtd_item/ability_item_2022.vpcf",context )
PrecacheResource( "particle", "particles/thtd/emoji/thtd_msg_hongliange.vpcf",context )
PrecacheResource( "particle", "particles/thd2/environment/death/act_hero_die.vpcf",context )
-- bosses
PrecacheResource( "particle", "particles/heroes/minoriko/ability_minoriko_04.vpcf",context )
PrecacheResource( "particle", "particles/bosses/thtd_keine/ability_bosses_keine.vpcf",context )
PrecacheResource( "particle", "particles/thd2/heroes/rumia/ability_rumia01_effect.vpcf",context )
PrecacheResource( "particle", "particles/heroes/marisa/marisa_01_rocket_a.vpcf",context )
-- 装饰技能
PrecacheResource( "particle", "particles/econ/events/new_bloom/pig_cast.vpcf",context )
PrecacheResource( "particle", "particles/econ/events/new_bloom/lion_dance_eyes_group.vpcf",context )
PrecacheResource( "particle", "particles/econ/events/ti9/ti9_drums_musicnotes.vpcf",context )
PrecacheResource( "particle", "particles/econ/events/snowball/snowball_projectile.vpcf",context )
PrecacheResource( "particle", "particles/econ/events/snowman/snowman_projectile_explosion_c.vpcf",context )
PrecacheResource( "particle", "particles/imagine_assets/courier_fx/courier_fx_2.vpcf",context )
PrecacheResource( "particle", "particles/particles/imagine_assets/courier_fx/rainbow_tail.vpcf",context )
PrecacheResource( "particle", "particles/econ/items/monkey_king/mk_ti9_immortal/mk_ti9_immortal_army_ring.vpcf",context )
PrecacheResource( "particle", "particles/units/heroes/hero_omniknight/omniknight_purification.vpcf",context )
PrecacheResource( "particle", "particles/econ/events/ti10/attack_modifier_ti10.vpcf",context )
PrecacheResource( "particle", "particles/units/heroes/hero_monkey_king/monkey_king_quad_tap_stack.vpcf",context )
-- sounds
PrecacheResource( "soundfile", "soundevents/game_sounds_custom.vsndevts", context)
PrecacheResource( "soundfile", "soundevents/custom_game/ui.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/custom_game/store.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/game_sounds/thdots_tower_attack_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/game_sounds/thdots_tower_sound_voice.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/game_sounds/thdots_tower_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_alice_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_aya_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_cirno_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_flandre_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_iku_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_kaguya_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_kanako_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_koishi_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_marisa_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_minamitsu_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_momiji_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_nue_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_ran_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_reimu_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_reisen_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_remilia_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_sakuya_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_shikieiki_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_tenshi_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_utsuho_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_youmu_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_yukari_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_yumemi_sounds.vsndevts", context )
PrecacheResource( "soundfile", "soundevents/thdots_hero_sounds/thdots_yuyuko_sounds.vsndevts", context )
-- 信使
local mxx={
--以前的模型和特效
"particles/units/heroes/hero_templar_assassin/templar_assassin_base_attack.vpcf",
"particles/dev/library/base_dust_hit_smoke.vpcf",
"particles/econ/events/fall_major_2016/teleport_start_fm06_lvl3.vpcf",
"soundevents/soundevents_dota_ui.vsndevts",
"particles/econ/events/snowball/snowball_projectile.vpcf",
"particles/units/heroes/hero_venomancer/venomancer_base_attack.vpcf",
"particles/neutral_fx/gnoll_poison_debuff.vpcf",
"particles/units/heroes/hero_crystalmaiden/maiden_frostbite_buff.vpcf",
"models/items/courier/teron/teron_flying.vmdl",
"soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lina.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts",
"particles/econ/items/zeus/arcana_chariot/zeus_arcana_thundergods_wrath_start.vpcf",
"particles/econ/items/omniknight/hammer_ti6_immortal/omniknight_pu_ti6_heal_hammers.vpcf",
"particles/econ/items/lina/lina_ti6/lina_ti6_laguna_blade.vpcf",
"particles/units/heroes/hero_disruptor/disruptor_thunder_strike_bolt.vpcf",
"particles/units/heroes/hero_keeper_of_the_light/keeper_chakra_magic.vpcf",
"particles/units/heroes/hero_oracle/oracle_fatesedict.vpcf",
"particles/econ/events/winter_major_2017/blink_dagger_end_wm07.vpcf",
"soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts",
"particles/units/heroes/hero_lina/lina_spell_light_strike_array.vpcf",
"soundevents/game_sounds_heroes/game_sounds_tidehunter.vsndevts",
"particles/units/heroes/hero_dazzle/dazzle_shallow_grave.vpcf",
"particles/econ/items/axe/axe_cinder/axe_cinder_battle_hunger.vpcf",
"particles/units/heroes/hero_rubick/rubick_spell_steal.vpcf",
"models/items/courier/duskie/duskie.vmdl",
"particles/units/heroes/hero_lone_druid/lone_druid_bear_entangle_body.vpcf",
"soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts",
"particles/items2_fx/tranquil_boots_healing.vpcf",
"particles/units/heroes/hero_beastmaster/beastmaster_primal_roar.vpcf",
"particles/units/heroes/hero_spirit_breaker/spirit_breaker_nether_strike_end.vpcf",
"particles/units/heroes/hero_batrider/batrider_base_attack.vpcf",
"particles/items_fx/healing_flask_c.vpcf",
"particles/units/heroes/hero_skeletonking/wraith_king_spirits.vpcf",
"particles/units/heroes/hero_phoenix/phoenix_supernova_scepter_f.vpcf",
"particles/radiant_fx/good_barracks_ranged001_lvl3_disintegrate.vpcf",
"soundevents/game_sounds_heroes/game_sounds_vengefulspirit.vsndevts",
"particles/units/heroes/hero_tinker/tinker_missile.vpcf",
"soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts",
"particles/units/heroes/hero_visage/visage_grave_chill_skel.vpcf",
"soundevents/game_sounds_heroes/game_sounds_invoker.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_rattletrap.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_sniper.vsndevts",
"particles/econ/items/rubick/rubick_puppet_master/rubick_back_puppet_ambient_edge_c.vpcf",
"particles/newplayer_fx/npx_sleeping.vpcf",
"particles/generic_gameplay/generic_stunned_old.vpcf",
"particles/econ/items/enchantress/enchantress_virgas/ench_impetus_virgas.vpcf",
"particles/econ/items/alchemist/alchemist_smooth_criminal/alchemist_smooth_criminal_unstable_concoction_projectile_explosion_fire.vpcf",
"soundevents/game_sounds_heroes/game_sounds_phoenix.vsndevts",
"particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_shadowraze_char.vpcf",
"particles/units/heroes/hero_tiny/tiny_loadout.vpcf",
"soundevents/game_sounds_heroes/game_sounds_tiny.vsndevts",
"models/props_structures/tower_good.vmdl",
"models/props_structures/tower_bad.vmdl",
"particles/econ/items/sniper/sniper_immortal_cape/sniper_immortal_cape_headshot_slow_model.vpcf",
"particles/customgames/capturepoints/cp_allied_wind.vpcf",
"particles/customgames/capturepoints/cp_wood.vpcf",
"models/items/courier/hermit_crab/hermit_crab.vmdl",
"particles/econ/events/ti7/teleport_end_ti7_team1836806.vpcf",
"particles/econ/items/sniper/sniper_immortal_cape/sniper_immortal_cape_headshot_slow_ring.vpcf",
"particles/econ/items/clinkz/clinkz_maraxiform/clinkz_maraxiform_searing_arrow.vpcf",
"soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts",
"particles/addons_gameplay/tower_good_tintable_lamp_end.vpcf",
"particles/econ/events/ti7/teleport_end_ti7_model.vpcf",
"particles/units/heroes/hero_shredder/shredder_whirling_death_spin_blades.vpcf",
"soundevents/game_sounds_heroes/game_sounds_shredder.vsndevts",
"particles/units/heroes/hero_lina/lina_base_attack.vpcf",
"particles/units/heroes/hero_razor/razor_static_link_projectile_a.vpcf",
"soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts",
"particles/econ/items/crystal_maiden/ti7_immortal_shoulder/cm_ti7_immortal_frostbite.vpcf",
"soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_earthshaker.vsndevts",
"particles/econ/items/earthshaker/earthshaker_totem_ti6/earthshaker_totem_ti6_leap_impact.vpcf",
"particles/units/heroes/hero_stormspirit/stormspirit_overload_discharge.vpcf",
"particles/units/heroes/hero_sven/sven_spell_gods_strength_small.vpcf",
"particles/units/heroes/hero_sven/sven_spell_gods_strength.vpcf",
"soundevents/game_sounds_heroes/game_sounds_bloodseeker.vsndevts",
"particles/econ/items/bloodseeker/bloodseeker_eztzhok_weapon/bloodseeker_bloodbath_eztzhok_ribbon.vpcf",
"particles/econ/items/slardar/slardar_takoyaki_gold/slardar_crush_tako_ground_dust_pyro_gold.vpcf",
"soundevents/game_sounds_heroes/game_sounds_death_prophet.vsndevts",
"particles/dac/explode/land_mine_explode.vpcf",
"particles/units/heroes/hero_dragon_knight/dragon_knight_transform_blue_smoke04.vpcf",
"particles/econ/items/antimage/antimage_weapon_basher_ti5_gold/antimage_manavoid_explode_b_b_ti_5_gold.vpcf",
"particles/dac/zhayaotong/zhayaotong.vpcf",
"soundevents/game_sounds_heroes/game_sounds_silencer.vsndevts",
"particles/econ/items/bounty_hunter/bounty_hunter_hunters_hoard/bounty_hunter_hoard_shield_mark.vpcf",
"particles/dac/ansha/loadout.vpcf",
"particles/dac/jingzhixianjingplant_ground_disturb.vpcf",
"soundevents/game_sounds_heroes/game_sounds_techies.vsndevts",
"particles/generic_gameplay/generic_stunned.vpcf",
"particles/units/heroes/hero_techies/techies_stasis_trap_explode.vpcf",
"particles/econ/items/ancient_apparition/aa_blast_ti_5/ancient_apparition_ice_blast_sphere_final_explosion_smoke_ti5.vpcf",
"models/items/wards/eye_of_avernus_ward/eye_of_avernus_ward.vmdl",
"models/props_structures/dire_ancient_base001_destruction.vmdl",
"models/props_structures/radiant_ancient001_rock_destruction.vmdl",
"models/creeps/lane_creeps/creep_radiant_melee/radiant_melee.vmdl",
"models/creeps/lane_creeps/creep_bad_melee/creep_bad_melee.vmdl",
"models/props_structures/radiant_ranged_barracks001.vmdl",
"models/props_structures/dire_barracks_ranged001.vmdl",
"models/props_structures/radiant_ancient001.vmdl",
"models/props_structures/dire_ancient_base001.vmdl",
"models/props_structures/dire_barracks_ranged001_destruction.vmdl",
"models/props_structures/radiant_ranged_barracks001_destruction.vmdl",
"effects/damage.vpcf",
"effects/damage2.vpcf",
"effects/damage3.vpcf",
"particles/ui/ui_game_start_hero_spawn.vpcf",
"particles/base_attacks/ranged_tower_bad_trail.vpcf",
"particles/units/heroes/hero_warlock/warlock_fatal_bonds_base.vpcf",
"particles/units/heroes/hero_tinker/tinker_laser.vpcf",
"particles/units/heroes/hero_ursa/ursa_fury_swipes_debuff.vpcf",
"soundevents/voscripts/game_sounds_vo_wisp.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_wisp.vsndevts",
"soundevents/voscripts/game_sounds_vo_lina.vsndevts",
"particles/econ/items/puck/puck_alliance_set/puck_dreamcoil_waves_aproset.vpcf",
"particles/econ/items/drow/drow_ti6/drow_ti6_silence_wave_ground_smoke.vpcf",
"materials/pumpkin.vmdl",
"models/props_gameplay/boots_of_speed.vmdl",
"models/props_gameplay/quelling_blade.vmdl",
"models/props_gameplay/stout_shield.vmdl",
"models/props_gameplay/tango.vmdl",
"models/props_gameplay/smoke.vmdl",
"models/props_gameplay/halloween_candy.vmdl",
"models/props_gameplay/salve_red.vmdl",
"models/props_gameplay/mango.vmdl",
"models/props_gameplay/branch.vmdl",
"particles/gem/sniper_crosshair.vpcf",
"particles/radiant_fx/tower_good3_dest_beam.vpcf",
"particles/units/heroes/hero_witchdoctor/witchdoctor_maledict_dot.vpcf",
"soundevents/voscripts/game_sounds_vo_shredder.vsndevts",
"soundevents/voscripts/game_sounds_vo_rattletrap.vsndevts",
"soundevents/voscripts/game_sounds_vo_dragon_knight.vsndevts",
"soundevents/voscripts/game_sounds_vo_death_prophet.vsndevts",
"soundevents/voscripts/game_sounds_vo_tinker.vsndevts",
"soundevents/voscripts/game_sounds_vo_lycan.vsndevts",
"soundevents/voscripts/game_sounds_vo_ursa.vsndevts",
"soundevents/voscripts/game_sounds_vo_enchantress.vsndevts",
"soundevents/voscripts/game_sounds_vo_techies.vsndevts",
"soundevents/voscripts/game_sounds_vo_tiny.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts",
"soundevents/game_sounds.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lion.vsndevts",
"soundevents/voscripts/game_sounds_vo_stormspirit.vsndevts",
"soundevents/game_sounds_roshan_halloween.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lone_druid.vsndevts",
"soundevents/voscripts/game_sounds_vo_doom_bringer.vsndevts",
"soundevents/voscripts/game_sounds_vo_nyx_assassin.vsndevts",
"particles/dev/library/base_dust_hit.vpcf",
"particles/econ/events/fall_major_2016/radiant_fountain_regen_fm06_lvl3_ring.vpcf",
--新的模型和特效
"soundevents/game_sounds_heroes/game_sounds_lion.vsndevts",
"particles/units/heroes/hero_shadowshaman/shadowshaman_voodoo.vpcf",
"soundevents/game_sounds_heroes/game_sounds_axe.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tusk.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_enchantress.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_ogre_magi.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_juggernaut.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_shredder.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_razor.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lina.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_jakiro.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lich.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tidehunter.vsndevts",
"particles/units/heroes/hero_lycan/lycan_weapon_blur_b.vpcf",
"particles/econ/items/necrolyte/necrophos_sullen/necro_sullen_pulse_enemy.vpcf",
"particles/units/unit_greevil/loot_greevil_death.vpcf",
"soundevents/game_sounds_heroes/game_sounds_ogre_magi.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts",
"particles/units/heroes/hero_omniknight/omniknight_purification.vpcf",
"particles/dire_fx/bad_ancient002_destroy_fire.vpcf",
"soundevents/game_sounds_heroes/game_sounds_witchdoctor.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tusk.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_crystalmaiden.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_axe.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_enchantress.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_ogre_magi.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_antimage.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_rattletrap.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_shadowshaman.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_bounty_hunter.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_witchdoctor.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tinker.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_beastmaster.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_juggernaut.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lycan.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_shredder.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_phantom_assassin.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_puck.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_slardar.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_drowranger.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_keeper_of_the_light.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_razor.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_windrunner.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_sandking.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_abaddon.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_slark.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_sniper.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_kunkka.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_doombringer.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lina.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_troll_warlord.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_venomancer.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_necrolyte.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_templar_assassin.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_lich.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_queenofpain.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_tidehunter.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_enigma.vsndevts",
"models/props_gameplay/donkey.vmdl",
"models/items/courier/bearzky/bearzky.vmdl",
"models/items/courier/bajie_pig/bajie_pig.vmdl",
"models/courier/mech_donkey/mech_donkey.vmdl",
"models/items/courier/little_fraid_the_courier_of_simons_retribution/little_fraid_the_courier_of_simons_retribution.vmdl",
"models/items/courier/baekho/baekho.vmdl",
"models/items/courier/green_jade_dragon/green_jade_dragon.vmdl",
"models/courier/donkey_crummy_wizard_2014/donkey_crummy_wizard_2014.vmdl",
"models/items/courier/pw_zombie/pw_zombie.vmdl",
"models/courier/drodo/drodo.vmdl",
"models/items/courier/courier_mvp_redkita/courier_mvp_redkita.vmdl",
"particles/generic_gameplay/rune_bounty_prespawn.vpcf",
"particles/prime/hero_spawn_hero_level_2_base_ring.vpcf",
"particles/econ/items/treant_protector/ti7_shoulder/treant_ti7_livingarmor_seedlings_parent.vpcf",
"particles/econ/items/bloodseeker/bloodseeker_eztzhok_weapon/bloodseeker_bloodrage_ground_eztzhok_arc.vpcf",
"particles/econ/items/treant_protector/ti7_shoulder/treant_ti7_crimson_livingarmor.vpcf",
"particles/units/heroes/hero_puck/puck_base_attack_warmup.vpcf",
"particles/units/heroes/hero_phantom_assassin/phantom_assassin_attack_blur_crit.vpcf",
"particles/units/heroes/hero_lycan/lycan_weapon_blur_both.vpcf",
"particles/units/heroes/hero_juggernaut/jugg_attack_blur.vpcf",
"particles/econ/items/juggernaut/jugg_ti8_sword/juggernaut_ti8_sword_attack_b.vpcf",
"particles/econ/items/juggernaut/jugg_ti8_sword/juggernaut_ti8_sword_attack_a.vpcf",
"particles/units/heroes/hero_windrunner/wr_taunt_kiss.vpcf",
"effect/big.vpcf",
"effect/arrow/1.vpcf",
"effect/arrow/2.vpcf",
"effect/arrow/3.vpcf",
"effect/arrow/4.vpcf",
"effect/arrow/5.vpcf",
"effect/arrow/star1.vpcf",
"effect/arrow/star2.vpcf",
"effect/arrow/star3.vpcf",
"particles/error/error.vpcf",
"particles/units/heroes/hero_chaos_knight/chaos_knight_weapon_blur.vpcf",
"particles/units/heroes/hero_lycan/lycan_claw_blur.vpcf",
"soundevents/voscripts/game_sounds_vo_tusk.vsndevts",
"soundevents/voscripts/game_sounds_vo_crystalmaiden.vsndevts",
'models/items/courier/virtus_werebear_t3/virtus_werebear_t3.vmdl',
"particles/econ/items/templar_assassin/templar_assassin_focal/templar_assassin_meld_focal_attack_shockwave.vpcf",
"models/props_gameplay/donkey.vmdl",
"models/courier/skippy_parrot/skippy_parrot.vmdl",
"models/courier/smeevil_mammoth/smeevil_mammoth.vmdl",
"models/items/courier/arneyb_rabbit/arneyb_rabbit.vmdl",
"models/items/courier/axolotl/axolotl.vmdl",
"models/items/courier/coco_the_courageous/coco_the_courageous.vmdl",
"models/items/courier/coral_furryfish/coral_furryfish.vmdl",
"models/items/courier/corsair_ship/corsair_ship.vmdl",
"models/items/courier/duskie/duskie.vmdl",
"models/items/courier/itsy/itsy.vmdl",
"models/items/courier/jumo/jumo.vmdl",
"models/items/courier/mighty_chicken/mighty_chicken.vmdl",
"models/items/courier/nexon_turtle_05_green/nexon_turtle_05_green.vmdl",
"models/items/courier/pumpkin_courier/pumpkin_courier.vmdl",
"models/items/courier/pw_ostrich/pw_ostrich.vmdl",
"models/items/courier/scuttling_scotty_penguin/scuttling_scotty_penguin.vmdl",
"models/items/courier/shagbark/shagbark.vmdl",
"models/items/courier/snaggletooth_red_panda/snaggletooth_red_panda.vmdl",
"models/items/courier/snail/courier_snail.vmdl",
"models/items/courier/teron/teron.vmdl",
"models/items/courier/xianhe_stork/xianhe_stork.vmdl",
"models/items/courier/starladder_grillhound/starladder_grillhound.vmdl",
"models/items/courier/pw_zombie/pw_zombie.vmdl",
"models/items/courier/raiq/raiq.vmdl",
"models/courier/frog/frog.vmdl",
"models/courier/godhorse/godhorse.vmdl",
"models/courier/imp/imp.vmdl",
"models/courier/mighty_boar/mighty_boar.vmdl",
"models/items/courier/onibi_lvl_03/onibi_lvl_03.vmdl",
"models/items/courier/echo_wisp/echo_wisp.vmdl", --蠕行水母
"models/courier/sw_donkey/sw_donkey.vmdl", --驴法师new
"models/items/courier/gnomepig/gnomepig.vmdl", --丰臀公主new
"models/items/furion/treant/ravenous_woodfang/ravenous_woodfang.vmdl",--焚牙树精new
"models/courier/mechjaw/mechjaw.vmdl",--机械咬人箱new
"models/items/courier/mole_messenger/mole_messenger.vmdl",--1级矿车老鼠
"models/courier/doom_demihero_courier/doom_demihero_courier.vmdl",
"models/courier/huntling/huntling.vmdl",
"models/courier/minipudge/minipudge.vmdl",
"models/courier/seekling/seekling.vmdl",
"models/items/courier/baekho/baekho.vmdl",
"models/items/courier/basim/basim.vmdl",
"models/items/courier/devourling/devourling.vmdl",
"models/items/courier/faceless_rex/faceless_rex.vmdl",
"models/items/courier/tinkbot/tinkbot.vmdl",
"models/items/courier/lilnova/lilnova.vmdl",
"models/items/courier/amphibian_kid/amphibian_kid.vmdl",
"models/courier/venoling/venoling.vmdl",
"models/courier/juggernaut_dog/juggernaut_dog.vmdl",
"models/courier/otter_dragon/otter_dragon.vmdl",
"models/items/courier/boooofus_courier/boooofus_courier.vmdl",
"models/courier/baby_winter_wyvern/baby_winter_wyvern.vmdl",
"models/courier/yak/yak.vmdl",
"models/items/furion/treant/eternalseasons_treant/eternalseasons_treant.vmdl",
"models/items/courier/blue_lightning_horse/blue_lightning_horse.vmdl",
"models/items/courier/waldi_the_faithful/waldi_the_faithful.vmdl",
"models/items/courier/bajie_pig/bajie_pig.vmdl",
"models/items/courier/courier_faun/courier_faun.vmdl",
"models/items/courier/livery_llama_courier/livery_llama_courier.vmdl",
"models/items/courier/onibi_lvl_10/onibi_lvl_10.vmdl",
"models/items/courier/little_fraid_the_courier_of_simons_retribution/little_fraid_the_courier_of_simons_retribution.vmdl", --胆小南瓜人
"models/items/courier/hermit_crab/hermit_crab.vmdl", --螃蟹1
"models/items/courier/hermit_crab/hermit_crab_boot.vmdl", --螃蟹2
"models/items/courier/hermit_crab/hermit_crab_shield.vmdl", --螃蟹3
"models/courier/donkey_unicorn/donkey_unicorn.vmdl", --竭智法师new
"models/items/courier/white_the_crystal_courier/white_the_crystal_courier.vmdl", --蓝心白隼new
"models/items/furion/treant/furion_treant_nelum_red/furion_treant_nelum_red.vmdl",--莲花人new
"models/courier/beetlejaws/mesh/beetlejaws.vmdl",--甲虫咬人箱new
"models/courier/smeevil_bird/smeevil_bird.vmdl",
"models/items/courier/mole_messenger/mole_messenger_lvl4.vmdl",--蜡烛头矿车老鼠
"models/items/courier/bookwyrm/bookwyrm.vmdl",
"models/items/courier/captain_bamboo/captain_bamboo.vmdl",
"models/items/courier/kanyu_shark/kanyu_shark.vmdl",
"models/items/courier/tory_the_sky_guardian/tory_the_sky_guardian.vmdl",
"models/items/courier/shroomy/shroomy.vmdl",
"models/items/courier/courier_janjou/courier_janjou.vmdl",
"models/items/courier/green_jade_dragon/green_jade_dragon.vmdl",
"models/courier/drodo/drodo.vmdl",
"models/courier/mech_donkey/mech_donkey.vmdl",
"models/courier/donkey_crummy_wizard_2014/donkey_crummy_wizard_2014.vmdl",
"models/courier/octopus/octopus.vmdl",
"models/items/courier/scribbinsthescarab/scribbinsthescarab.vmdl",
"models/courier/defense3_sheep/defense3_sheep.vmdl",
"models/items/courier/snapjaw/snapjaw.vmdl",
"models/items/courier/g1_courier/g1_courier.vmdl",
"models/courier/donkey_trio/mesh/donkey_trio.vmdl",
"models/items/courier/boris_baumhauer/boris_baumhauer.vmdl",
"models/courier/baby_rosh/babyroshan.vmdl",
"models/items/courier/bearzky/bearzky.vmdl",
"models/items/courier/defense4_radiant/defense4_radiant.vmdl",
"models/items/courier/defense4_dire/defense4_dire.vmdl",
"models/items/courier/onibi_lvl_20/onibi_lvl_20.vmdl",
"models/items/juggernaut/ward/fortunes_tout/fortunes_tout.vmdl", --招财猫
"models/items/courier/hermit_crab/hermit_crab_necro.vmdl", --螃蟹4
"models/items/courier/hermit_crab/hermit_crab_travelboot.vmdl", --螃蟹5
"models/items/courier/hermit_crab/hermit_crab_lotus.vmdl", --螃蟹6
"models/courier/donkey_ti7/donkey_ti7.vmdl",
"models/items/courier/shibe_dog_cat/shibe_dog_cat.vmdl", --天猫地狗new
"models/items/furion/treant/hallowed_horde/hallowed_horde.vmdl",--万圣树群new
"models/courier/flopjaw/flopjaw.vmdl",--大嘴咬人箱new
"models/courier/lockjaw/lockjaw.vmdl",--咬人箱洛克new
"models/items/courier/butch_pudge_dog/butch_pudge_dog.vmdl",--布狗new
"models/courier/turtle_rider/turtle_rider.vmdl",
"models/courier/smeevil_crab/smeevil_crab.vmdl",
"models/items/courier/mole_messenger/mole_messenger_lvl6.vmdl",--绿钻头矿车老鼠
"models/courier/navi_courier/navi_courier.vmdl",
"models/items/courier/courier_mvp_redkita/courier_mvp_redkita.vmdl",
"models/items/courier/ig_dragon/ig_dragon.vmdl",
"models/items/courier/lgd_golden_skipper/lgd_golden_skipper.vmdl",
"models/items/courier/vigilante_fox_red/vigilante_fox_red.vmdl",
"models/items/courier/virtus_werebear_t3/virtus_werebear_t3.vmdl",
"models/items/courier/throe/throe.vmdl",
"models/items/courier/vaal_the_animated_constructradiant/vaal_the_animated_constructradiant.vmdl",
"models/items/courier/vaal_the_animated_constructdire/vaal_the_animated_constructdire.vmdl",
"models/items/courier/carty/carty.vmdl",
"models/items/courier/carty_dire/carty_dire.vmdl",
"models/items/courier/dc_angel/dc_angel.vmdl",
"models/items/courier/dc_demon/dc_demon.vmdl",
"models/items/courier/vigilante_fox_green/vigilante_fox_green.vmdl",
"models/items/courier/bts_chirpy/bts_chirpy.vmdl",
"models/items/courier/krobeling/krobeling.vmdl",
"models/items/courier/jin_yin_black_fox/jin_yin_black_fox.vmdl",
"models/items/courier/jin_yin_white_fox/jin_yin_white_fox.vmdl",
"models/items/courier/fei_lian_blue/fei_lian_blue.vmdl",
"models/items/courier/gama_brothers/gama_brothers.vmdl",
"models/items/courier/onibi_lvl_21/onibi_lvl_21.vmdl",
"models/items/courier/wabbit_the_mighty_courier_of_heroes/wabbit_the_mighty_courier_of_heroes.vmdl", --小飞侠
"models/items/courier/hermit_crab/hermit_crab_octarine.vmdl", --螃蟹7
"models/items/courier/hermit_crab/hermit_crab_skady.vmdl", --螃蟹8
"models/items/courier/hermit_crab/hermit_crab_aegis.vmdl", --螃蟹9
"models/items/furion/treant_flower_1.vmdl",--绽放树精new
"models/courier/smeevil_magic_carpet/smeevil_magic_carpet.vmdl",
"models/items/courier/mole_messenger/mole_messenger_lvl7.vmdl",--绿钻头金矿车老鼠
"models/items/courier/krobeling_gold/krobeling_gold_flying.vmdl",--金dp
"models/props_gameplay/donkey.vmdl",
"particles/items2_fx/refresher.vpcf",
"soundevents/game_sounds_items.vsndevts",
"particles/speechbubbles/speech_voice.vpcf",
"soundevents/game_sounds_heroes/game_sounds_nevermore.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_batrider.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_luna.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_treant.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_dragon_knight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_viper.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_medusa.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_disruptor.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_alchemist.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_techies.vsndevts",
"particles/econ/events/ti5/dagon_ti5.vpcf",
"particles/units/heroes/hero_monkey_king/monkey_king_fur_army_positions_ring_dragon.vpcf",
"particles/econ/items/legion/legion_overwhelming_odds_ti7/legion_commander_odds_ti7_proj_hit_streaks.vpcf",
"particles/units/heroes/hero_queenofpain/queen_sonic_wave.vpcf",
"models/props_gameplay/donkey_dire.vmdl",
"models/props_gameplay/donkey_dire_wings.vmdl",
"models/courier/baby_rosh/babyroshan_winter18.vmdl",
"effect/dizuo/1.vpcf",
"soundevents/voscripts/game_sounds_vo_lone_druid.vsndevts",
"soundevents/voscripts/game_sounds_vo_furion.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_omniknight.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_morphling.vsndevts",
"soundevents/voscripts/game_sounds_vo_terrorblade.vsndevts",
"particles/units/heroes/hero_chaos_knight/chaos_knight_phantasm.vpcf",
"soundevents/game_sounds_heroes/game_sounds_chaos_knight.vsndevts",
"models/items/kunkka/kunkka_immortal/kunkka_shark_immortal.vmdl",
"models/courier/frull/frull_courier.vmdl",
"models/items/courier/amaterasu/amaterasu.vmdl",
"models/items/courier/chocobo/chocobo.vmdl",
"models/items/courier/flightless_dod/flightless_dod.vmdl",
"models/items/courier/frostivus2018_courier_serac_the_seal/frostivus2018_courier_serac_the_seal.vmdl",
"models/items/courier/jumo_dire/jumo_dire.vmdl",
"models/items/courier/pangolier_squire/pangolier_squire.vmdl",
"models/items/courier/sltv_10_courier/sltv_10_courier.vmdl",
"models/items/courier/nian_courier/nian_courier.vmdl",
"models/items/courier/nilbog/nilbog.vmdl",
"particles/items_fx/blink_dagger_end.vpcf",
"soundevents/game_sounds_heroes/game_sounds_terrorblade.vsndevts",
"particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf",
"particles/econ/items/mirana/mirana_starstorm_bow/mirana_starstorm_starfall_attack.vpcf",
"soundevents/game_sounds_heroes/game_sounds_mirana.vsndevts",
"particles/units/heroes/hero_slark/slark_pounce_start.vpcf",
"particles/econ/items/slark/slark_ti6_blade/slark_ti6_pounce_start.vpcf",
"particles/econ/items/slark/slark_ti6_blade/slark_ti6_pounce_start_gold.vpcf",
"soundevents/game_sounds_heroes/game_sounds_zuus.vsndevts",
"particles/econ/items/zeus/arcana_chariot/zeus_arcana_thundergods_wrath_start_bolt_parent.vpcf",
"models/items/lycan/wolves/blood_moon_hunter_wolves/blood_moon_hunter_wolves.vmdl",
"models/items/lycan/ultimate/blood_moon_hunter_shapeshift_form/blood_moon_hunter_shapeshift_form.vmdl",
"models/items/courier/krobeling_gold/krobeling_gold.vmdl",
"models/items/courier/krobeling_gold/krobeling_gold_flying.vmdl",
"effect/jin_dp/courier_krobeling_gold_ambient.vpcf",
"effect/nianshou/courier_nian_ambient.vpcf",
"soundevents/game_sounds.vsndevts",
"soundevents/voscripts/game_sounds_vo_announcer_killing_spree.vsndevts",
"effect/3sha/vr_killbanner_triplekill.vpcf",
"effect/5sha/vr_killbanner_rampage.vpcf",
"effect/zeus/victory/victory.vpcf",
"effect/god/1.vpcf",
"soundevents/voscripts/game_sounds_vo_zuus.vsndevts",
"soundevents/voscripts/game_sounds_vo_mars.vsndevts",
"effect/mars/2/e.vpcf",
"effect/mars/1/e.vpcf",
"soundevents/game_sounds_heroes/game_sounds_dazzle.vsndevts",
"soundevents/game_sounds_heroes/game_sounds_dark_seer.vsndevts",
"soundevents/music/game_sounds_stingers_diretide.vsndevts",
"particles/gem/brewmaster_drunken_haze_debuff_bubbles_2.vpcf",
"models/qie/qie.vmdl",
"models/courier/f2p_courier/f2p_courier.vmdl",
"models/items/courier/azuremircourierfinal/azuremircourierfinal.vmdl",
"effect/roshan_ti9/1.vpcf",
"models/items/axe/ti9_jungle_axe/axe_bare.vmdl",
"models/shudaixiong/model/shudaixiong/shudaixiong.vmdl",
"models/shudaixiong/model/shudaixiong_flying/shudaixiong_flying.vmdl",
"models/courier/baby_rosh/babyroshan_elemental.vmdl",
"particles/units/heroes/hero_grimstroke/grimstroke_soulchain_debuff.vpcf",
"soundevents/game_sounds_heroes/game_sounds_rubick.vsndevts",
"models/pets/armadillo/armadillo.vmdl",
"models/courier/baby_rosh/babyroshan_ti9.vmdl",
"models/heroes/invoker_kid/invoker_kid_trainer_dragon.vmdl",
"particles/econ/items/juggernaut/jugg_arcana/juggernaut_arcana_v2_idle_rare.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant.vmdl",
-- TI10晴儿
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl1_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl2/courier_ti10_radiant_lvl2.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl2_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl3/courier_ti10_radiant_lvl3.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl3_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl4/courier_ti10_radiant_lvl4.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl4_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl5/courier_ti10_radiant_lvl5.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl5_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl6/courier_ti10_radiant_lvl6.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl6_ambient.vpcf",
"models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl7/courier_ti10_radiant_lvl7.vmdl",
"particles/econ/courier/courier_ti10/courier_ti10_lvl7_ambient.vpcf",
}
print("Precache mxx ...")
local t=table.maxn(mxx)
for i=1,t do
if string.find(mxx[i], ".vpcf") then
PrecacheResource( "particle", mxx[i], context)
end
if string.find(mxx[i], ".vmdl") then
PrecacheResource( "model", mxx[i], context)
end
if string.find(mxx[i], ".vsndevts") then
PrecacheResource( "soundfile", mxx[i], context)
end
end
end
function Activate()
GameRules.THTDGameMode = CTHTDGameMode()
GameRules.THTDGameMode:InitGameMode()
end
function CTHTDGameMode:InitGameMode()
GameRules:GetGameModeEntity():SetCameraDistanceOverride(1734.0)
GameRules:GetGameModeEntity():SetFogOfWarDisabled(true)
GameRules:GetGameModeEntity():SetUseCustomHeroLevels(true)
GameRules:GetGameModeEntity():SetCustomXPRequiredToReachNextLevel(self:SettingExp())
GameRules:GetGameModeEntity():SetCustomHeroMaxLevel(THTD_MAX_LEVEL)
GameRules:SetStartingGold(4500)
GameRules:SetGoldPerTick(0)
GameRules:GetGameModeEntity():SetLoseGoldOnDeath(false)
GameRules:SetSameHeroSelectionEnabled(true)
GameRules:SetHeroSelectionTime(10)
GameRules:SetPreGameTime(30)
GameRules:SetStrategyTime(0)
GameRules:SetShowcaseTime(0)
GameRules:SetUseUniversalShopMode(true)
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 4 )
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 0 )
GameRules:SetCustomGameAllowBattleMusic( false )
GameRules:SetCustomGameAllowMusicAtGameStart( false )
-- GameRules:GetGameModeEntity():SetGoldSoundDisabled(true)
GameRules:GetGameModeEntity():SetNeutralStashEnabled(false)
GameRules:GetGameModeEntity():SetSendToStashEnabled(false)
GameRules:GetGameModeEntity():SetStashPurchasingDisabled(true)
GameRules:GetGameModeEntity():SetAlwaysShowPlayerNames(true)
GameRules:GetGameModeEntity():SetMaximumAttackSpeed(700) --显示会突破
GameRules:GetGameModeEntity():SetMinimumAttackSpeed(20)
GameRules:GetGameModeEntity():SetCustomBackpackSwapCooldown(0)
-- GameRules:GetGameModeEntity():SetAnnouncerDisabled(true)
GameRules:GetGameModeEntity():SetKillingSpreeAnnouncerDisabled(true)
-- GameRules:SetCustomGameAllowHeroPickMusic( false )
GameRules:GetGameModeEntity():SetCanSellAnywhere(true)
ListenToGameEvent('entity_killed', Dynamic_Wrap(CTHTDGameMode, 'OnEntityKilled'), self)
ListenToGameEvent('player_chat', Dynamic_Wrap(CTHTDGameMode, 'OnPlayerSay'), self)
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(CTHTDGameMode, 'OnGameRulesStateChange'), self)
ListenToGameEvent('player_connect_full', Dynamic_Wrap( CTHTDGameMode, 'OnPlayerConnected' ), self )
GameRules:GetGameModeEntity():SetExecuteOrderFilter(Dynamic_Wrap(CTHTDGameMode, 'ExecuteOrder'), self)
GameRules:GetGameModeEntity():SetItemAddedToInventoryFilter(Dynamic_Wrap(CTHTDGameMode, 'ItemAddedToInventory'), self)
GameRules:GetGameModeEntity():SetDamageFilter(Dynamic_Wrap(CTHTDGameMode, 'DamageFilter'), self)
GameRules:GetGameModeEntity():SetModifierGainedFilter(Dynamic_Wrap(CTHTDGameMode, 'ModifierFilter'), self)
GameRules:GetGameModeEntity():SetModifyGoldFilter(Dynamic_Wrap(CTHTDGameMode, 'OnModifyGoldFilter'), self)
GameRules:GetGameModeEntity():SetTPScrollSlotItemOverride("item_3121")
LinkLuaModifier("modifier_magical_armor", "modifiers/modifier_magical_armor", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_move_speed", "modifiers/modifier_move_speed", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_move_max_speed", "modifiers/modifier_move_max_speed", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_attack_speed", "modifiers/modifier_attack_speed", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_attack_time", "modifiers/modifier_attack_time", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_cooldown_reduce", "modifiers/modifier_cooldown_reduce", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2005_attack_aura", "modifiers/modifier_item_2005_attack_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2005_attack_aura_effect", "modifiers/modifier_item_2005_attack_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2006_mana_regen_aura", "modifiers/modifier_item_2006_mana_regen_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2006_mana_regen_aura_effect", "modifiers/modifier_item_2006_mana_regen_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2008_slow_aura", "modifiers/modifier_item_2008_slow_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2008_slow_aura_effect", "modifiers/modifier_item_2008_slow_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2009_damage", "modifiers/modifier_item_2009_damage", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2010_damage", "modifiers/modifier_item_2010_damage", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2011_attack_stun", "modifiers/modifier_item_2011_attack_stun", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2012_magical_damage_aura", "modifiers/modifier_item_2012_magical_damage_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2012_magical_damage_aura_effect", "modifiers/modifier_item_2012_magical_damage_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2013_physical_damage_aura", "modifiers/modifier_item_2013_physical_damage_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2013_physical_damage_aura_effect", "modifiers/modifier_item_2013_physical_damage_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2014_damage_aura", "modifiers/modifier_item_2014_damage_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2014_damage_aura_effect", "modifiers/modifier_item_2014_damage_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_item_2018_bonus_attack_range", "modifiers/modifier_item_2018_bonus_attack_range", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_pause", "modifiers/modifier_touhoutd_pause", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_root", "modifiers/modifier_touhoutd_root", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_release_hidden", "modifiers/modifier_touhoutd_release_hidden", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_building", "modifiers/modifier_touhoutd_building", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_hidden_bar", "modifiers/modifier_hidden_bar", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_root_hidden_info", "modifiers/modifier_root_hidden_info", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_luck", "modifiers/modifier_touhoutd_luck", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_poison", "modifiers/modifier_touhoutd_poison", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_outgoing_pure", "modifiers/modifier_touhoutd_damage_outgoing_pure", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_outgoing_physical", "modifiers/modifier_touhoutd_damage_outgoing_physical", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_outgoing_magical", "modifiers/modifier_touhoutd_damage_outgoing_magical", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_incoming_pure", "modifiers/modifier_touhoutd_damage_incoming_pure", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_incoming_physical", "modifiers/modifier_touhoutd_damage_incoming_physical", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_damage_incoming_magical", "modifiers/modifier_touhoutd_damage_incoming_magical", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_crit_chance", "modifiers/modifier_touhoutd_crit_chance", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_crit_damage", "modifiers/modifier_touhoutd_crit_damage", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_touhoutd_unlimited_resist", "modifiers/modifier_touhoutd_unlimited_resist", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_base_attack_bonus_percent", "modifiers/modifier_base_attack_bonus_percent", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_manacost_reduce_percent", "modifiers/modifier_manacost_reduce_percent", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_common", "modifiers/power/modifier_ability_power_common", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_minoriko", "modifiers/power/modifier_ability_power_minoriko", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_sizuha", "modifiers/power/modifier_ability_power_sizuha", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_lily", "modifiers/power/modifier_ability_power_lily", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_shinki", "modifiers/power/modifier_ability_power_shinki", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_nazrin", "modifiers/power/modifier_ability_power_nazrin", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_byakuren", "modifiers/power/modifier_ability_power_byakuren", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_shikieiki", "modifiers/power/modifier_ability_power_shikieiki", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_reimu", "modifiers/power/modifier_ability_power_reimu", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_flandre", "modifiers/power/modifier_ability_power_flandre", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_koishi", "modifiers/power/modifier_ability_power_koishi", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_hecatia", "modifiers/power/modifier_ability_power_hecatia", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_yuuka", "modifiers/power/modifier_ability_power_yuuka", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_daiyousei", "modifiers/power/modifier_ability_power_daiyousei", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_kanako", "modifiers/power/modifier_ability_power_kanako", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_yukari", "modifiers/power/modifier_ability_power_yukari", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_miko", "modifiers/power/modifier_ability_power_miko", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_eirin", "modifiers/power/modifier_ability_power_eirin", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_komachi", "modifiers/power/modifier_ability_power_komachi", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_remilia", "modifiers/power/modifier_ability_power_remilia", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_ability_power_junko", "modifiers/power/modifier_ability_power_junko", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3011", "modifiers/battle_buff/modifier_bb_buff_3011", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3011_effect", "modifiers/battle_buff/modifier_bb_buff_3011_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3012", "modifiers/battle_buff/modifier_bb_buff_3012", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3013", "modifiers/battle_buff/modifier_bb_buff_3013", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3014", "modifiers/battle_buff/modifier_bb_buff_3014", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3015", "modifiers/battle_buff/modifier_bb_buff_3015", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3015_effect", "modifiers/battle_buff/modifier_bb_buff_3015_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3016", "modifiers/battle_buff/modifier_bb_buff_3016", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3016_effect", "modifiers/battle_buff/modifier_bb_buff_3016_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3017", "modifiers/battle_buff/modifier_bb_buff_3017", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3018", "modifiers/battle_buff/modifier_bb_buff_3018", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3019", "modifiers/battle_buff/modifier_bb_buff_3019", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3020", "modifiers/battle_buff/modifier_bb_buff_3020", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3021", "modifiers/battle_buff/modifier_bb_buff_3021", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3023", "modifiers/battle_buff/modifier_bb_buff_3023", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3024", "modifiers/battle_buff/modifier_bb_buff_3024", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3025", "modifiers/battle_buff/modifier_bb_buff_3025", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3026", "modifiers/battle_buff/modifier_bb_buff_3026", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3027", "modifiers/battle_buff/modifier_bb_buff_3027", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3028", "modifiers/battle_buff/modifier_bb_buff_3028", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3029", "modifiers/battle_buff/modifier_bb_buff_3029", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3030", "modifiers/battle_buff/modifier_bb_buff_3030", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bb_buff_3031", "modifiers/battle_buff/modifier_bb_buff_3031", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_fairy_count", "modifiers/battle_buff/modifier_fairy_count", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_alice", "modifiers/bosses/modifier_bosses_alice", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_aya", "modifiers/bosses/modifier_bosses_aya", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_hina", "modifiers/bosses/modifier_bosses_hina", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_hina_aura_effect", "modifiers/bosses/modifier_bosses_hina_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_kaguya", "modifiers/bosses/modifier_bosses_kaguya", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_keine", "modifiers/bosses/modifier_bosses_keine", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_kisume", "modifiers/bosses/modifier_bosses_kisume", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_marisa", "modifiers/bosses/modifier_bosses_marisa", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_minoriko", "modifiers/bosses/modifier_bosses_minoriko", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_mokou", "modifiers/bosses/modifier_bosses_mokou", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_mokou_aura_effect", "modifiers/bosses/modifier_bosses_mokou_aura_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_rumia", "modifiers/bosses/modifier_bosses_rumia", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_yuugi", "modifiers/bosses/modifier_bosses_yuugi", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_resist_aura", "modifiers/bosses/modifier_bosses_random_resist_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_resist_effect", "modifiers/bosses/modifier_bosses_random_resist_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_attack_speed_aura", "modifiers/bosses/modifier_bosses_random_attack_speed_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_attack_speed_effect", "modifiers/bosses/modifier_bosses_random_attack_speed_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_move_aura", "modifiers/bosses/modifier_bosses_random_move_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_move_effect", "modifiers/bosses/modifier_bosses_random_move_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_health_aura", "modifiers/bosses/modifier_bosses_random_health_aura", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_health_effect", "modifiers/bosses/modifier_bosses_random_health_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_dead_heal", "modifiers/bosses/modifier_bosses_random_dead_heal", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_aura_dark", "modifiers/bosses/modifier_bosses_random_aura_dark", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_bosses_random_aura_dark_effect", "modifiers/bosses/modifier_bosses_random_aura_dark_effect", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_courier_fx", "modifiers/effects/modifier_courier_fx", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier("modifier_rainbow_tail", "modifiers/effects/modifier_rainbow_tail", LUA_MODIFIER_MOTION_NONE)
CustomNetTables:SetTableValue("CustomGameInfo", "thtd_tower_list", towerNameList)
print("\n---------- InitGameMode Finished ----------")
GameRules:GetGameModeEntity():SetContextThink(DoUniqueString("collectgarbage"),
function()
local m = collectgarbage('count')
print(string.format("[Lua Memory] %.3f KB %.3f MB", m, m/1024))
return 60
end,
60)
end
function CTHTDGameMode:SettingExp()
-- 总和5400
-- 经验分配规则 保底 1X每只30点 2X每只20点3X每只10点4X每只6点5X每只3点
-- 单吃一个兵经验 300点 200点 100点 60点 30点
-- 经验获取率1X 100% 2X 2/3 3X 1/3 4X 1/5 5X 1/10
-- 素材培养 1000+素材卡牌经验/5* 星级
local HERO_EXP_TABLE = {0}
local exp = {200,300,400,500,600,700,800,900,1000}
local xp = 0
for i = 2, THTD_MAX_LEVEL-1 do
HERO_EXP_TABLE[i]=HERO_EXP_TABLE[i-1]+exp[i-1]
end
return HERO_EXP_TABLE
end
function CTHTDGameMode:OnDotaItemPickedUp(keys)
local item = EntIndexToHScript(keys.ItemEntityIndex)
if item == nil then return end
if item.locked_by_player_id == nil or item.locked_by_player_id == keys.PlayerID or item.card_poor_player_id == keys.PlayerID then return end
-- local heroes = Entities:FindAllByClassname("npc_dota_hero_lina")
for _,hero in pairs(GameRules.HeroList) do
if hero.thtd_player_id == item.locked_by_player_id and hero.is_game_over == true then return end
end
local picker = nil
if keys.HeroEntityIndex ~= nil then
picker = EntIndexToHScript(keys.HeroEntityIndex)
elseif keys.UnitEntityIndex ~= nil then
picker = EntIndexToHScript(keys.UnitEntityIndex)
end
if picker == nil then return end
CustomGameEventManager:Send_ServerToPlayer(picker:GetPlayerOwner() , "display_custom_error", {msg="item_is_locked"})
picker:DropItemAtPositionImmediate(item, picker:GetOrigin())
end
function CTHTDGameMode:OnGameRulesStateChange(keys)
local newState = GameRules:State_Get()
local stateText = {
[0] = "DOTA_GAMERULES_STATE_INIT",
[1] = "DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD",
[2] = "DOTA_GAMERULES_STATE_CUSTOM_GAME_SETUP",
[3] = "DOTA_GAMERULES_STATE_HERO_SELECTION",
[4] = "DOTA_GAMERULES_STATE_STRATEGY_TIME",
[5] = "DOTA_GAMERULES_STATE_TEAM_SHOWCASE",
[6] = "DOTA_GAMERULES_STATE_PRE_GAME",
[7] = "DOTA_GAMERULES_STATE_GAME_IN_PROGRESS",
[8] = "DOTA_GAMERULES_STATE_POST_GAME",
[9] = "DOTA_GAMERULES_STATE_DISCONNECT",
}
print("-------- Now State: ", stateText[newState])
if newState == DOTA_GAMERULES_STATE_CUSTOM_GAME_SETUP then
self:GameStateCustomGameSetup()
Service:LoadGameData()
elseif newState == DOTA_GAMERULES_STATE_STRATEGY_TIME then
ListenToGameEvent('npc_spawned', Dynamic_Wrap( CTHTDGameMode, 'OnNpcSpawned' ), self )
ListenToGameEvent('dota_item_picked_up', Dynamic_Wrap(CTHTDGameMode, 'OnDotaItemPickedUp'), self)
ListenToGameEvent('dota_non_player_used_ability', Dynamic_Wrap(CTHTDGameMode, 'OnDotaNonPlayerUsedAbility'), self)
-------- 设置游戏难度 --------
local level = {[0]=0,[1]=0,[2]=0,[3]=0,[4]=0,[5]=0,[6]=0}
for k,v in pairs(PlayersSelectedDifficulty) do
level[v] = (level[v] or 0) + 1
end
local difficulty = 0
for k,v in pairs(level) do
if k ~= difficulty and level[k] > level[difficulty] then
difficulty = k
end
end
difficulty = difficulty + 1
GameRules:SetCustomGameDifficulty(difficulty)
-- 初始化金钱
for i=0, PlayerResource:GetPlayerCount()-1 do
if PlayerResource:IsValidPlayerID(i) then
-- PlayerResource:ModifyGold(i, 4500 - 600 , true, DOTA_ModifyGold_Unspecified)
PlayerResource:SetLastBuybackTime(i, 0)
end
end
elseif newState == DOTA_GAMERULES_STATE_PRE_GAME then
Service:GetRank()
SpawnSystem:PreSpawn()
-- 解除地图购买上限
SendToServerConsole("dota_max_physical_items_purchase_limit 59999")
elseif newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
SpawnSystem:InitSpawn()
for i=0, PlayerResource:GetPlayerCount()-1 do
if PlayerResource:GetTeam(i) == DOTA_TEAM_GOODGUYS then
if GameRules.PlayerData[i].ban == 1 then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(i), "display_chat_msg", {msg="#game_ban_tip", params={player_name=PlayerResource:GetPlayerName(i),reason=GameRules.PlayerData[i].reason}})
for _,hero in pairs(GameRules.HeroList) do
if hero.thtd_player_id == i then
SpawnSystem:GameOver(hero)
break
end
end
elseif GameRules.PlayerData[i].vip == 1 then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(i), "show_message", {msg="#game_start_vip_tip", duration=60, params={name=PlayerResource:GetPlayerName(i),endtime=GameRules.PlayerData[i].end_time}, color="#ff0"})
end
GameRules.HeroList[i]:RemoveModifierByName("modifier_rainbow_tail")
end
end
if GameRules.GameData.luck_card == "all" then
CustomGameEventManager:Send_ServerToAllClients("thtd_server_msg", {code = "0000", msg = "无限潜力活动开启开局可选潜能Lv999的凤凰之灵", duration = 15, pos = -150})
EmitAnnouncerSound("Quest.Completed")
end
end
end
-- 全局变量定义
function CTHTDGameMode:GameStateCustomGameSetup()
-- 预设,数据载入完成最终设置一次
local heroNames = {
"npc_dota_hero_lina",
"npc_dota_hero_juggernaut",
}
for i=0, PlayerResource:GetPlayerCount()-1 do
PlayerResource:SetCustomTeamAssignment(i, DOTA_TEAM_GOODGUYS)
local player = PlayerResource:GetPlayer(i)
if player then
CreateHeroForPlayer(heroNames[RandomInt(1, #heroNames)], player):RemoveSelf()
end
end
-- 玩家信息定义按playerid的steamid、dota2帐户、玩家名称、英雄index信息、黑白名单及宠物信息
GameRules.PlayerData = { }
-- 英雄列表定义按playerid出生时初始化
GameRules.HeroList = {}
-- 战利品buff定义
GameRules.player_bb_buff = {}
-- 按玩家id初始化
for i=0, PlayerResource:GetPlayerCount()-1 do
-- 玩家信息
GameRules.PlayerData[i] = {
["code"] = "",
["msg"] = "",
["steamid"] = tostring(PlayerResource:GetSteamID(i)),
["userid"] = tostring(PlayerResource:GetSteamAccountID(i)),
["name"] = PlayerResource:GetPlayerName(i),
["hero_index"] = 0,
["max_wave"] = 0,
["max_team_wave"] = 0,
["point"] = 0,
["level_list"] = {},
["vip"] = 0,
["ban"] = 0,
["pet_level"] = 1,
["end_time"] = "",
["reason"] = "",
["pet_model"] = "h000",
["pet_effect"] = "e000",
["is_first_win"] = 0,
["key_total"] = 0,
["key_use_count"] = 0,
["power_max_total"] = 0,
["cardgroup1"] = {},
["cardgroup2"] = {},
["cardgroup3"] = {},
["cardgroup4"] = {},
["cardgroup5"] = {},
["update_time"] = ""
}
-- 英雄列表
GameRules.HeroList[i] = nil
-- 战利品buff
GameRules.player_bb_buff[i] = {
["item_3011"] = 0, -- 地灵殿单位物理伤害提升量
["item_3011_effect"] = 0, -- 实际加成
["item_3012"] = 0, -- 抽卡额外获得的一张卡牌的概率
["item_3013"] = 1, -- 无敌意识的负面效果比例
["item_3014"] = 0, -- 主角组无尽后每击杀100个单位增加的能量点数灵梦、魔理沙、东方谷早苗、爱丽丝
["item_3015"] = 0, -- 月之民纯粹伤害提升数值
["item_3015_effect"] = 0, -- 实际加成
["item_3016"] = 0, -- 所有召唤物+150攻击力和+30%%攻速的倍数
["item_3017"] = 0, -- 每有一个外圈漏怪,则全体单位伤害提升量
["item_3018"] = 1, -- 抽卡价格优惠度,乘法叠加
["item_3019"] = 0, -- 每波最后3秒如果漏怪数量达到30则造成的伤害提高量
["item_3019_enable"] = false, -- 是否正在触发
["item_3020"] = 0, -- 同名卡上场最大数量增加量
["item_3021"] = 0, -- 秒杀伤害上限提高量
["item_3023"] = 0, -- 神灵庙单位的相机4件套效果加成和神子附加伤害加成效果提高量
["item_3024"] = 0, -- 守矢神社的信仰收集上限提高量
["item_3025"] = 0, -- 红魔馆单位的触发类技能的概率增加量
["item_3026"] = 0, -- 怪物移动速度降低量
["item_3027"] = 0, -- 星莲船单位装备提供的属性效果提高量
["item_3028"] = 0, -- 鬼族单位效果层数
["item_3028_effect"] = 0, -- 实际加成
["item_3029"] = 0, -- 四季馈赠量
["item_3030"] = 0, -- 分身加成效果提高量
}
end
end
function CTHTDGameMode:OnPlayerConnected(keys)
print("----player_connect_full")
CustomGameEventManager:Send_ServerToAllClients("debug_msg", {msg = PlayerResource:GetPlayerName(keys.PlayerID).." 连接完成!"})
end
function CTHTDGameMode:OnNpcSpawned(keys)
local hero = EntIndexToHScript(keys.entindex)
if hero:IsRealHero() and hero.isFirstSpawn ~= false then
hero.isFirstSpawn = false
hero.thtd_hero_tower_list = {}
hero.thtd_hero_damage_list ={}
hero.thtd_combo_voice_array = {}
hero.thtd_emoji_effect = nil
hero.thtd_game_info = {}
hero.thtd_game_info["creep_count"] = 0
hero.thtd_game_info["creep_count_max"] = 0
hero.thtd_game_info["food_count"] = 0
hero.thtd_game_info["creature_kill_count"] = 0
hero.thtd_game_info["max_wave_damage"] = 0
hero.thtd_game_info["max_wave"] = 0
hero.thtd_game_info["is_player_connected"] = 0
hero.thtd_chance_count = {}
hero.is_game_over = false
hero.thtd_wave_total_health = 0
hero:SetTeam(DOTA_TEAM_GOODGUYS)
-- 判定是否上巅峰榜
if PlayerResource:GetPlayerCountForTeam(DOTA_TEAM_GOODGUYS) > 1 and GameRules:GetCustomGameDifficulty() ~= PVE_MODE then
hero.is_team_mode = true
else
hero.is_team_mode = false
end
local playerId = hero:GetPlayerOwnerID()
hero.thtd_player_id = playerId
hero.spawn_position = SpawnSystem.SpawnOrigin[playerId+1]
hero:SetAbsOrigin(hero.spawn_position)
hero:SetContextThink(DoUniqueString("SetSpawn") ,
function()
if GameRules:IsGamePaused() then return 0.1 end
if GetDistanceBetweenTwoVec2D(hero:GetOrigin(), hero.spawn_position) > 1000 then
hero:SetAbsOrigin(hero.spawn_position)
PlayerResource:SetCameraTarget(hero:GetPlayerID(), hero)
return 0.5
else
PlayerResource:SetCameraTarget(hero:GetPlayerID(), nil)
end
return nil
end,
0.5)
UnitNoPathingfix( hero,hero,-1)
hero:AddNewModifier(hero, nil, "modifier_phased", nil)
hero:AddNewModifier(hero, nil, "modifier_hidden_bar", nil)
hero:AddNewModifier(hero, nil, "modifier_rainbow_tail", nil)
if GameRules.PlayerData[playerId].power_max_total > 0 then
for i=1,GameRules.PlayerData[playerId].power_max_total do
local item = CreateItem("item_3149", nil, nil)
if item ~= nil then
item.owner_player_id = playerId
item:SetPurchaser(hero)
hero:AddItem(item)
end
if i == 4 then
break
end
end
end
GameRules.PlayerData[playerId]["hero_index"] = keys.entindex
GameRules.HeroList[playerId] = hero
for i=0,7 do
local ability=hero:GetAbilityByIndex(i)
if ability ~= nil then
ability:SetLevel(1)
end
end
hero:SetContextThink(DoUniqueString("delete_tp"),
function()
if GameRules:IsGamePaused() then return 0.03 end
for i=0,THTD_MAX_ITEM_SLOT-1 do
local hTP = hero:GetItemInSlot(i)
if hTP ~= nil and hTP:GetAbilityName() == "item_tpscroll" then
UTIL_Remove( hTP )
end
end
return nil
end,
2.0)
local shop = CreateUnitByName(
"minoriko_shop",
SpawnSystem.ShopOrigin[hero:GetPlayerOwnerID()+1],
false,
hero,
hero,
hero:GetTeam()
)
shop:SetControllableByPlayer(hero:GetPlayerOwnerID(), true)
shop:SetHasInventory(true)
shop:AddNewModifier(shop, nil, "modifier_root_hidden_info", nil)
shop.hero = hero
hero.shop = shop
shop:SetContextThink(DoUniqueString("set_shop_forward"),
function()
if GameRules:IsGamePaused() then return 0.1 end
shop:MoveToPosition(shop:GetOrigin()+SpawnSystem.ShopForward[hero:GetPlayerOwnerID()+1])
return nil
end,
1.0)
if GameRules:GetCustomGameDifficulty() >= FUNNY_MODE then
hero:SetContextThink(DoUniqueString("set_gold_bonus") ,
function()
if GameRules:IsGamePaused() then return 0.1 end
if SpawnSystem.IsUnLimited then return nil end
THTD_ModifyGoldEx(playerId, math.min(SpawnSystem.CurWave * 25, 500) , true, DOTA_ModifyGold_Unspecified)
return 1
end,
10)
end
-- local tree = CreateUnitByName(
-- "christmas_tree",
-- hero.spawn_position,
-- false,
-- hero,
-- hero,
-- hero:GetTeam()
-- )
local unit = CreateUnitByName(
"reimu_pet"
,hero:GetOrigin() + hero:GetForwardVector() * 500
,false
,hero
,hero
,hero:GetTeam()
)
if unit ~= nil then
FindClearSpaceForUnit(unit, unit:GetOrigin(), false)
unit:SetControllableByPlayer(hero:GetPlayerOwnerID(), false)
unit:SetOwner(hero)
unit:SetHasInventory(true)
unit:FindAbilityByName("reimu_pet_01"):CastAbility()
local items = {"item_3003", "item_3004", "item_3007"}
for _,itemName in pairs(items) do
local item = CreateItem(itemName, nil, nil)
if item ~= nil then
item.owner_player_id = hero.thtd_player_id
unit:AddItem(item)
end
end
local reimu_pet_sound =
{
"UI.Aowu",
"Icewrack_Pup.Ult.Howl",
"Icewrack_Pup.Flee",
"Icewrack_Pup.idle_alt_bark",
"Icewrack_Pup.Alert",
"Icewrack_Pup.Happy",
"Icewrack_Pup.Breath",
}
unit:SetContextThink(DoUniqueString("reimu_pet_think"),
function()
if unit:IsStunned() then return nil end
THTD_ModifyGoldEx(playerId)
local point = unit.pet_point
if point == nil then
point = hero:GetAbsOrigin()
end
local d = GetDistanceBetweenTwoVec2D(point, unit:GetOrigin())
if d > 1800 then
if unit:IsStunned() then return nil end
FindClearSpaceForUnit(unit, point + hero:GetForwardVector() * 500, false)
unit:EmitSound("Sound_THTD.ability_touhoutd_blink.End")
return 1.0
elseif d > 1200 then
local forward = (unit:GetAbsOrigin() - point):Normalized()
unit:MoveToPosition(point + forward * 500)
return 1.0
else
if RollPercentage(85) then return 1.0 end
local rad = RandomInt(1, 360)
local distance = RandomInt(500, 1180)
local moveToPoint = point +
Vector(
math.cos(rad * math.pi/180) * distance,
math.sin(rad * math.pi/180) * distance,
0)
unit:MoveToPosition(moveToPoint)
if RollPercentage(10) then
unit:EmitSound(reimu_pet_sound[RandomInt(1, #reimu_pet_sound)])
end
end
return 1.0
end,
1.0)
hero.reimu_pet = unit
end
return
end
end
function CTHTDGameMode:OnEntityKilled(keys)
if keys.entindex_killed == nil or keys.entindex_attacker == nil then return end
-- 储存被击杀的单位
local killedUnit = EntIndexToHScript( keys.entindex_killed )
-- 储存杀手单位
local killerEntity = EntIndexToHScript( keys.entindex_attacker )
local id = killedUnit.thtd_player_index
local findNum = string.find(killedUnit:GetUnitName(), 'creature')
if findNum ~= nil then
if not SpawnSystem.IsUnLimited then
local expRange = 1500
local targets = THTD_FindFriendlyUnitsInRadius(killerEntity,killedUnit:GetOrigin(),expRange)
local expUnits = {}
for k,v in pairs(targets) do
if v ~= nil and v:IsNull()==false and v:THTD_IsTower() and v:THTD_GetLevel() < THTD_MAX_LEVEL then
table.insert(expUnits,v)
end
end
targets = {}
local factor = 1
if GameRules:GetCustomGameDifficulty() >= FUNNY_MODE then
factor = 1.5
end
local totalNum = #expUnits
if totalNum > 0 then
for k,v in pairs(expUnits) do
v:THTD_AddExp(math.floor(factor * killedUnit:GetDeathXP() / totalNum + 0.5))
end
end
end
-- 物品掉落
-- local vHitLoc = killedUnit:GetAttachmentOrigin(killedUnit:ScriptLookupAttachment("attach_hitloc"))
-- local drop = CreateItemOnPositionSync(vHitLoc, item)
-- drop:SetModelScale(drop:GetModelScale() * (item:THTD_GetCardQuality() or 2) * 0.5)
-- item:LaunchLootInitialHeight(false, vHitLoc.z, vHitLoc.z+300, 2.0, killedUnit:GetAbsOrigin() + RandomVector(300))
if killedUnit.thtd_is_outer == true then
for k,v in pairs(THTD_EntitiesRectOuter) do
if v == killedUnit then
table.remove(THTD_EntitiesRectOuter, k)
break
end
end
elseif id ~= nil then
for k,v in pairs(THTD_EntitiesRectInner[id]) do
if v == killedUnit then
table.remove(THTD_EntitiesRectInner[id], k)
break
end
end
end
killedUnit:AddNoDraw()
local effectIndex = ParticleManager:CreateParticle("particles/thd2/environment/death/act_hero_die.vpcf", PATTACH_CUSTOMORIGIN, nil)
ParticleManager:SetParticleControl(effectIndex, 0, killedUnit:GetOrigin())
ParticleManager:SetParticleControl(effectIndex, 1, killedUnit:GetOrigin())
ParticleManager:DestroyParticleSystem(effectIndex,false)
local hero = GameRules.HeroList[killerEntity:GetPlayerOwnerID()]
if hero == nil then return end
hero.thtd_game_info["creature_kill_count"] = hero.thtd_game_info["creature_kill_count"] + 1
end
end
function CTHTDGameMode:OnPlayerSay(keys)
-- if tostring(PlayerResource:GetSteamID(keys.playerid)) ~= GameRules.GameData.admin then return end
local text = keys.text
if string.sub(text,1,1) ~= "-" then
return
end
if text == "-6" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
ParticleManager:DestroyParticleSystem(hero.thtd_emoji_effect,true)
hero.thtd_emoji_effect = ParticleManager:CreateParticle("particles/thtd/emoji/thtd_msg_hongliange.vpcf", PATTACH_OVERHEAD_FOLLOW, hero)
ParticleManager:SetParticleControlEnt(hero.thtd_emoji_effect , 0, hero, PATTACH_OVERHEAD_FOLLOW, "attach_hitloc", Vector(0,0,0), true) --灵梦用 attach_emoji
ParticleManager:SetParticleControl(hero.thtd_emoji_effect, 3, Vector(1,0,0))
ParticleManager:DestroyParticleSystemTime(hero.thtd_emoji_effect,5.0)
return
end
if text == "-7" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
ParticleManager:DestroyParticleSystem(hero.thtd_emoji_effect,true)
hero.thtd_emoji_effect = ParticleManager:CreateParticle("particles/thtd/emoji/thtd_msg_hongliange.vpcf", PATTACH_OVERHEAD_FOLLOW, hero)
ParticleManager:SetParticleControlEnt(hero.thtd_emoji_effect , 0, hero, PATTACH_OVERHEAD_FOLLOW, "attach_hitloc", Vector(0,0,0), true)
ParticleManager:SetParticleControl(hero.thtd_emoji_effect, 3, Vector(2,0,0))
ParticleManager:DestroyParticleSystemTime(hero.thtd_emoji_effect,5.0)
return
end
if text == "-8" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
ParticleManager:DestroyParticleSystem(hero.thtd_emoji_effect,true)
hero.thtd_emoji_effect = ParticleManager:CreateParticle("particles/thtd/emoji/thtd_msg_hongliange.vpcf", PATTACH_OVERHEAD_FOLLOW, hero)
ParticleManager:SetParticleControlEnt(hero.thtd_emoji_effect , 0, hero, PATTACH_OVERHEAD_FOLLOW, "attach_hitloc", Vector(0,0,0), true)
ParticleManager:SetParticleControl(hero.thtd_emoji_effect, 3, Vector(3,0,0))
ParticleManager:DestroyParticleSystemTime(hero.thtd_emoji_effect,5.0)
return
end
if text == "-9" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
ParticleManager:DestroyParticleSystem(hero.thtd_emoji_effect,true)
hero.thtd_emoji_effect = ParticleManager:CreateParticle("particles/thtd/emoji/thtd_msg_hongliange.vpcf", PATTACH_OVERHEAD_FOLLOW, hero)
ParticleManager:SetParticleControlEnt(hero.thtd_emoji_effect , 0, hero, PATTACH_OVERHEAD_FOLLOW, "attach_hitloc", Vector(0,0,0), true)
ParticleManager:SetParticleControl(hero.thtd_emoji_effect, 3, Vector(4,0,0))
ParticleManager:DestroyParticleSystemTime(hero.thtd_emoji_effect,5.0)
return
end
if text == "-0" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
ParticleManager:DestroyParticleSystem(hero.thtd_emoji_effect,true)
hero.thtd_emoji_effect = ParticleManager:CreateParticle("particles/thtd/emoji/thtd_msg_hongliange.vpcf", PATTACH_OVERHEAD_FOLLOW, hero)
ParticleManager:SetParticleControlEnt(hero.thtd_emoji_effect , 0, hero, PATTACH_OVERHEAD_FOLLOW, "follow_origin", Vector(0,0,0), true)
ParticleManager:SetParticleControl(hero.thtd_emoji_effect, 3, Vector(5,0,0))
ParticleManager:DestroyParticleSystemTime(hero.thtd_emoji_effect,5.0)
return
end
if string.sub(text,1,6) == "-color" then
local colorValue = string.sub(text, 8, 11)
CustomGameEventManager:Send_ServerToAllClients("show_message", {msg="#item_locked_tip", duration=10, params={}, color=colorValue})
return
end
if string.sub(text,1,3) == "-id" then
GameRules:SendCustomMessage("<font color='yellow'>id:"..tostring(PlayerResource:GetSteamAccountID(keys.playerid))..", steamid:"..tostring(PlayerResource:GetSteamID(keys.playerid)).."</font>", DOTA_TEAM_GOODGUYS, 0)
return
end
if string.sub(text,1,5) == "-date" then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid), "display_chat_msg", {msg="#open_day_tip", params={server_time=GetRealDateTime(),start_time=GameRules.GameData.server_time,open_day_list=GameRules.GameData.open_day_list}})
return
end
if string.sub(text,1,4) == "-pos" then
local player = PlayerResource:GetPlayer(keys.playerid)
local hero = player:GetAssignedHero()
local pos = hero:GetAbsOrigin()
print("------- Current Position (x, y, z):")
print(math.floor(pos.x + 0.5))
print(math.floor(pos.y + 0.5))
print(math.floor(pos.z + 0.5))
GameRules:SendCustomMessage("X: "..tostring(math.floor(pos.x + 0.5)).."Y"..tostring(math.floor(pos.y + 0.5)).."Z"..tostring(math.floor(pos.z + 0.5)), DOTA_TEAM_GOODGUYS, 0)
return
end
if string.sub(text,1,5) == "-wave" then
local num = tonumber(string.sub(text, 7))
if num ~= nil and num > -49 then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="wave", param=num})
end
return
end
if string.sub(text,1,5) == "-boss" then
local num = string.sub(text, 7, 20)
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="boss", param=num})
return
end
if string.sub(text,1,4) == "-add" then
local num = string.sub(text, 6, 9)
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="add", param=num})
return
end
if string.sub(text,1,3) == "-tp" then
local num = string.sub(text, 5, 20)
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="tp", param=num})
return
end
if string.sub(text,1,10) == "-clearrank" then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="clearrank", param={}})
return
end
if string.sub(text,1,8) == "-lv" then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="lv", param={}})
return
end
if string.sub(text,1,5) == "-test" then
if tostring(PlayerResource:GetSteamID(keys.playerid)) ~= GameRules.GameData.admin then return end
local select_cards = {}
for i = 3011,3031 do
select_cards["item_"..tostring(i)] = "item_"..tostring(i)
end
for i = 2011,2022 do
select_cards["item_"..tostring(i)] = "item_"..tostring(i)
end
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid) , "show_select_bonus_card_panel", {cards=select_cards})
return
end
if string.sub(text,1,5) == "-skey" then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.playerid),"thtd_command", {cmd="skey", param=SERVER_KEY})
return
end
end
function CTHTDGameMode:ExecuteOrder( keys )
if table.hasvalue(SpawnSystem.GameOverPlayerId, keys.issuer_player_id_const) then return false end
local orderUnit = EntIndexToHScript(keys.units["0"])
if orderUnit == nil then return true end
-- PrintTable(keys)
local order_type = keys.order_type
if order_type == DOTA_UNIT_ORDER_ATTACK_TARGET or
order_type == DOTA_UNIT_ORDER_CAST_POSITION or
order_type == DOTA_UNIT_ORDER_CAST_TARGET or
order_type == DOTA_UNIT_ORDER_CAST_NO_TARGET or
order_type == DOTA_UNIT_ORDER_CAST_TARGET_TREE
then
orderUnit:THTD_SetAggressiveLock()
end
if order_type == 32 then
local ability = EntIndexToHScript(keys.entindex_ability)
if ability ~= nil and ability:IsItem() then
if keys.entindex_target == 1 then
ability.locked_by_player_id = keys.issuer_player_id_const
else
local tower = ability:THTD_GetTower()
if tower ~= nil then
for i=0,8 do
local targetItem = tower:GetItemInSlot(i)
if targetItem~=nil and targetItem:IsNull()==false then
CustomGameEventManager:Send_ServerToPlayer(orderUnit:GetPlayerOwner(), "display_custom_error", {msg="card_cannot_unlock_when_having_equipment"})
return false
end
end
end
ability.locked_by_player_id = nil
end
return true
end
return false
end
-- if order_type == DOTA_UNIT_ORDER_MOVE_ITEM then
-- 移动储存处
-- if keys.entindex_target >= THTD_MAX_ITEM_SLOT then
-- end
-- return true
-- end
if order_type == DOTA_UNIT_ORDER_SELL_ITEM then
local ability = EntIndexToHScript(keys.entindex_ability)
if ability ~= nil and ability:IsItem() then
if ability:GetAbilityName() == "item_3121" then
return false
end
if ability.disable_sell == true then
local player = PlayerResource:GetPlayer(keys.issuer_player_id_const)
if player then
CustomGameEventManager:Send_ServerToPlayer(player , "display_custom_error", {msg="item_disable_sell"} )
end
return false
end
if ability.is_bonus_item == true then
CustomGameEventManager:Send_ServerToPlayer(PlayerResource:GetPlayer(keys.issuer_player_id_const), "display_custom_error", {msg="start_card_cannot_be_sell"})
return false
end
if ability.locked_by_player_id ~= nil then
local player = PlayerResource:GetPlayer(keys.issuer_player_id_const)
if player then
CustomGameEventManager:Send_ServerToPlayer(player , "display_custom_error", {msg="item_is_locked"} )
end
return false
end
OnItemDestroyed(EntIndexToHScript(keys.units["0"]), ability, true)
end
local gold = ability:GetCost()
if gold ~= nil and gold > 0 then
gold = math.floor(gold/2)
local current_gold = PlayerResource:GetGold(keys.issuer_player_id_const)
if gold + current_gold > 99999 then
thtd_extra_gold[keys.issuer_player_id_const] = thtd_extra_gold[keys.issuer_player_id_const] + (gold - (99999-current_gold))
THTD_RefreshExtraGold(keys.issuer_player_id_const)
elseif thtd_extra_gold[keys.issuer_player_id_const] > 0 then
local add_gold = math.min(thtd_extra_gold[keys.issuer_player_id_const], 99999-(gold+current_gold))
thtd_extra_gold[keys.issuer_player_id_const] = thtd_extra_gold[keys.issuer_player_id_const] - add_gold
PlayerResource:ModifyGold(keys.issuer_player_id_const, add_gold, true, DOTA_ModifyGold_Unspecified)
THTD_RefreshExtraGold(keys.issuer_player_id_const)
end
end
return true
end
if order_type == DOTA_UNIT_ORDER_GIVE_ITEM then
local item = EntIndexToHScript(keys.entindex_ability)
local target = EntIndexToHScript(keys.entindex_target)
local count = 0
for i=0,THTD_MAX_ITEM_SLOT-1 do
local targetItem = target:GetItemInSlot(i)
if targetItem~=nil and targetItem:IsNull()==false then count = count + 1 end
end
if count >= THTD_MAX_ITEM_SLOT then
local player = PlayerResource:GetPlayer(keys.issuer_player_id_const)
if player then
CustomGameEventManager:Send_ServerToPlayer(player, "display_custom_error", {msg="not_enough_item_slot"})
end
return false
else
return true
end
end
if order_type == DOTA_UNIT_ORDER_DROP_ITEM then
local item = EntIndexToHScript(keys.entindex_ability)
if THTD_HasItemScale(item) then
if item.item_set_scale ~= true then
item.item_set_scale = true
local count = 600
item:SetContextThink(DoUniqueString("item_set_scale"),
function()
if GameRules:IsGamePaused() then return 0.03 end
if item:GetContainer() ~= nil then
THTD_ItemSetScale(item)
item.item_set_scale = nil
return nil
end
if count <= 0 then
item.item_set_scale = nil
return nil
end
count = count - 1
return 0.1
end,
0.1)
end
end
return true
end
if order_type == DOTA_UNIT_ORDER_PICKUP_ITEM then
local itemC = EntIndexToHScript(keys.entindex_target)
if itemC ~= nil then
local item = itemC:GetContainedItem()
if item ~= nil then
local itemName = item:GetAbilityName()
if itemName == "item_3101" or itemName == "item_3102" or itemName == "item_3103" then
local player = PlayerResource:GetPlayer(keys.issuer_player_id_const)
if orderUnit:IsRealHero() == false then
CustomGameEventManager:Send_ServerToPlayer(player, "display_custom_error", {msg="not_key_unit"})
return false
end
if orderUnit:GetNumItemsInInventory() >= THTD_MAX_ITEM_SLOT then
CustomGameEventManager:Send_ServerToPlayer(player, "display_custom_error", {msg="not_enough_item_slot"})
return false
end
if not orderUnit:HasItemInInventory("item_3121") then
CustomGameEventManager:Send_ServerToPlayer(player, "display_custom_error", {msg="not_has_key_item"})
return false
end
end
end
end
end
return true
end
local item_cn_name = {
["item_2019"] = "「纳税用阴阳玉」",
["item_2008"] = "「死神渡河船桨」",
["item_2005"] = "「血染的太阳伞」",
["item_2009"] = "「割夺真实之刃」",
["item_2010"] = "「死神大镰刀」",
["item_2011"] = "「月兔粉碎巨刃」",
["item_2015"] = "「念缚灵的船勾」",
["item_2016"] = "「速融的核融合棒」",
["item_2017"] = "「恶魔的乳牙」",
["item_2001"] = "「四次元爆蛋」",
["item_2012"] = "「迷你八卦炉」",
["item_2013"] = "「莱瓦汀」",
["item_2014"] = "「神枪冈格尼尔」",
["item_2020"] = "「高科技相机」",
["item_3150"] = "「布都御魂」",
["item_3151"] = "「天丛云剑」",
["item_3152"] = "「天羽羽斩」",
["item_3149"] = "「凤凰之灵」",
["item_2021"] = "「千年佳酿」",
}
local item_loot = {
[1] = {"item_2021","item_2019","item_2008","item_2005"}, --R
[2] = {"item_2009","item_2010","item_2011","item_2015","item_2016","item_2017","item_2001"}, -- SR
[3] = {"item_2012","item_2013","item_2014","item_2020"}, -- SSR
[4] = {}, -- 羁绊,todo
[5] = {"item_3150", "item_3151", "item_3152"}, -- 神器
}
function CTHTDGameMode:ItemAddedToInventory( keys )
local caster = EntIndexToHScript(keys.inventory_parent_entindex_const)
local hItem = EntIndexToHScript(keys.item_entindex_const)
local itemName = hItem:GetAbilityName()
if itemName == "item_enchanted_mango" then
return false
end
if GameRules:GetCustomGameDifficulty() == PVE_MODE then
CheckItemShare(caster, hItem)
end
if itemName == "item_3101" or itemName == "item_3102" or itemName == "item_3103" then
local keyItem = caster:FindItemInInventory("item_3121")
if keyItem ~= nil then
keyItem:SpendCharge()
if keyItem:GetCurrentCharges() == 0 then
caster:RemoveItem(keyItem)
end
local playerid = caster:GetPlayerOwnerID()
GameRules.PlayerData[playerid]["key_use_count"] = GameRules.PlayerData[playerid]["key_use_count"] + 1
if caster.first_chest_opened ~= true and GameRules.PlayerData[playerid]["is_first_win"] == 1 then
caster.first_chest_opened = true
Service:GiveDayFirstWinBonus(playerid)
else
local itemName = ""
local chance = RandomInt(1, 100)
if GameRules.PlayerData[playerid]["key_use_count"] > 100/0.05 then
chance = 101
end
if chance <= 35 then
itemName = item_loot[1][1]
elseif chance <= 15 + 35 then
itemName = item_loot[1][RandomInt(1, #item_loot[1])]
elseif chance <= 25 + 50 then
itemName = item_loot[2][RandomInt(1, #item_loot[2])]
elseif chance <= 12 + 75 then
itemName = item_loot[3][RandomInt(1, #item_loot[3])]
elseif chance <= 5 + 87 then
itemName = item_loot[1][1]
elseif chance <= 3 + 92 then
itemName = item_loot[5][RandomInt(1, #item_loot[5])]
else
if chance == 101 or RollPercentage(1) then
itemName = "item_3149"
GameRules.PlayerData[playerid]["key_use_count"] = 0
else
itemName = item_loot[1][1]
end
end
local item = CreateItem(itemName, nil, nil)
if item ~= nil then
item.owner_player_id = playerid
item.disable_sell = true
item:SetPurchaser(caster)
item:SetPurchaseTime(1.0)
caster:AddItem(item)
CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner(), "thtd_server_msg", {code = "0000", msg = "获得 "..(item_cn_name[itemName] or itemName)})
if itemName == "item_3149" then
Service:SavePowerMaxCount(playerid, true)
end
end
end
Service:SaveKeyCount(playerid)
end
UTIL_Remove(hItem)
return false
end
if not caster:IsRealHero() then
local hero = caster:GetHero()
if hero ~= nil then
if itemName == "item_3150" or itemName == "item_3151" or itemName == "item_3152" then
if hero.is_team_mode ~= true then
hero.is_team_mode = true
CustomGameEventManager:Send_ServerToPlayer(hero:GetPlayerOwner(), "display_chat_msg", {msg="#team_rank_tip", params={player_name=PlayerResource:GetPlayerName(hero:GetPlayerOwnerID()),reason="使用了传说武器"}})
end
end
end
end
return true
end
function CheckItemShare(caster,item)
if caster == nil or item == nil then return end
if item:GetAbilityName() == "item_tpscroll" then return end
-- local cardName = item:THTD_GetCardName()
-- if cardName == "BonusEgg" or cardName == "minoriko" or cardName == "sizuha" or cardName == "lily" or cardName == "nazrin" or cardName == "toramaru" or item:THTD_GetCardQuality() == 1 then return end
local playerId = caster:GetPlayerOwnerID()
if item.owner_player_id ~= playerId then
CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner(), "display_custom_error", {msg="cannot_use_others_item_in_single_mode"})
caster:SetContextThink(DoUniqueString("thtd_pertick_gold_think"),
function()
if GameRules:IsGamePaused() then return 0.03 end
caster:DropItemAtPositionImmediate(item, caster:GetOrigin())
return nil
end,
0.15)
end
end
function CTHTDGameMode:ModifierFilter(keys)
if keys.entindex_parent_const == nil or keys.entindex_caster_const == nil then
return true
end
local caster = EntIndexToHScript(keys.entindex_caster_const)
local unit = EntIndexToHScript(keys.entindex_parent_const)
if unit~=nil and unit:IsNull()==false then
local modifierName = keys.name_const
if THTD_IsUniqueSlowBuff(modifierName) == true then
if unit:THTD_HasUniqueSlowBuff() or unit:HasModifier("modifier_bosses_aya") then
return false
else
return true
end
end
if modifierName == "modifier_faceless_void_timelock_freeze" then
local ability = EntIndexToHScript(keys.entindex_ability_const)
caster:SetContextThink(DoUniqueString("thtd_bb_3028"),
function()
local DamageTable = {
ability = ability,
victim = unit,
attacker = caster,
damage = unit:GetMaxHealth() * ability:GetSpecialValueFor("bonus_damage")/100,
damage_type = ability:GetAbilityDamageType(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
UnitDamageTarget(DamageTable)
return nil
end,
0.3)
end
end
return true
end
function CTHTDGameMode:DamageFilter(keys)
-- damage: 24
-- damagetype_const: 1
-- entindex_attacker_const: 503
-- entindex_inflictor_const: 500 技能,普通攻击没有这个
-- entindex_victim_const: 434
if keys.damage <= 0 then return false end
if keys.entindex_attacker_const == nil or keys.entindex_victim_const == nil then return true end
local target = EntIndexToHScript(keys.entindex_victim_const)
local unit = EntIndexToHScript(keys.entindex_attacker_const)
if unit:IsRealHero() then
local health = target:GetHealth()
-- 辉夜复活
if target:HasModifier("modifier_bosses_kaguya") and keys.damage > health then
target:SetHealth(1)
target:RemoveModifierByName("modifier_bosses_kaguya")
return false
end
-- 爱丽丝免死符
if target:HasModifier("modifier_bosses_alice") and target.left_death_count > 0 and keys.damage >= health then
target:SetHealth(1)
target:RemoveModifierByName("modifier_bosses_alice")
return false
end
return true
end
local DamageTable = {
ability = nil,
victim = target,
attacker = unit,
damage = keys.damage,
damage_type = keys.damagetype_const,
}
UnitDamageTarget(DamageTable, false, true)
return false
end
function CTHTDGameMode:OnModifyGoldFilter(keys)
-- gold: 15
-- player_id_const: 0
-- reason_const: 13
-- reliable: 0
-- 出售和接口改变金钱不会触发,当前地图只有杀怪奖励金钱
if keys.gold == 0 then return true end
if keys.gold > 0 then
if thtd_extra_gold[keys.player_id_const] == nil then
thtd_extra_gold[keys.player_id_const] = 0
end
local current_gold = PlayerResource:GetGold(keys.player_id_const)
if current_gold + keys.gold > 99999 then
local add_gold = math.min(keys.gold, 99999-current_gold)
thtd_extra_gold[keys.player_id_const] = thtd_extra_gold[keys.player_id_const] + (keys.gold - add_gold)
keys.gold = add_gold
elseif thtd_extra_gold[keys.player_id_const] > 0 then
local add_gold = math.min(thtd_extra_gold[keys.player_id_const], 99999-(keys.gold+current_gold))
keys.gold = keys.gold + add_gold
thtd_extra_gold[keys.player_id_const] = thtd_extra_gold[keys.player_id_const] - add_gold
end
end
THTD_RefreshExtraGold(keys.player_id_const)
return true
end
function CTHTDGameMode:OnDotaNonPlayerUsedAbility(keys)
-- 字段
-- abilityname
-- caster_entindex
local caster = EntIndexToHScript(keys.caster_entindex)
local unitName = caster:GetUnitName()
if unitName == "remilia" or unitName == "flandre" or unitName == "patchouli" or unitName == "sakuya" or unitName == "koakuma" or unitName == "meirin" then
local playerid = caster:GetPlayerOwnerID()
if GameRules.player_bb_buff[playerid]["item_3025"] > 0 and RollPercentage(GameRules.player_bb_buff[playerid]["item_3025"]) then
local ability = caster:FindAbilityByName(keys.abilityname)
ability:EndCooldown()
caster:GiveMana(caster:GetRealManaCost(ability))
end
end
end