
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",
}

local reimu_pet_model = 
{
	-- 默认
	h000 = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant.vmdl",
	h000b = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl2/courier_ti10_radiant_lvl2.vmdl",
	h000c = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl3/courier_ti10_radiant_lvl3.vmdl",
	h000d = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl4/courier_ti10_radiant_lvl4.vmdl",
	h000e = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl5/courier_ti10_radiant_lvl5.vmdl",
	h000f = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl6/courier_ti10_radiant_lvl6.vmdl",
	h000g = "models/items/courier/courier_ti10_radiant/courier_ti10_radiant_lvl7/courier_ti10_radiant_lvl7.vmdl",
	h001 = "models/pets/icewrack_wolf/icewrack_wolf.vmdl",
	h002 = "models/heroes/invoker_kid/invoker_kid_trainer_dragon.vmdl",
	-- h001 = "models/props_gameplay/donkey.vmdl", -- 默认信使，小马，天辉
	-- h002 = "models/props_gameplay/donkey_dire.vmdl", -- 默认信使，小马，夜宴


	h003 = "models/pets/armadillo/armadillo.vmdl",	
	h004 = "models/courier/baby_rosh/babyroshan_ti9.vmdl",	
	
	
	--普通信使 beginner
	h101 = "models/courier/skippy_parrot/skippy_parrot.vmdl",
	h102 = "models/courier/smeevil_mammoth/smeevil_mammoth.vmdl",
	h103 = "models/items/courier/arneyb_rabbit/arneyb_rabbit.vmdl",
	h104 = "models/items/courier/axolotl/axolotl.vmdl",
	h105 = "models/items/courier/coco_the_courageous/coco_the_courageous.vmdl",
	h106 = "models/items/courier/coral_furryfish/coral_furryfish.vmdl",
	h107 = "models/items/courier/corsair_ship/corsair_ship.vmdl",
	h108 = "models/items/courier/duskie/duskie.vmdl",
	h109 = "models/items/courier/itsy/itsy.vmdl",
	h110 = "models/items/courier/jumo/jumo.vmdl",
	h111 = "models/items/courier/mighty_chicken/mighty_chicken.vmdl",
	h112 = "models/items/courier/nexon_turtle_05_green/nexon_turtle_05_green.vmdl",
	h113 = "models/items/courier/pumpkin_courier/pumpkin_courier.vmdl",
	h114 = "models/items/courier/pw_ostrich/pw_ostrich.vmdl",
	h115 = "models/items/courier/scuttling_scotty_penguin/scuttling_scotty_penguin.vmdl",
	h116 = "models/items/courier/shagbark/shagbark.vmdl",
	h117 = "models/items/courier/snaggletooth_red_panda/snaggletooth_red_panda.vmdl",
	h118 = "models/items/courier/snail/courier_snail.vmdl",
	h119 = "models/items/courier/teron/teron.vmdl",
	h120 = "models/items/courier/xianhe_stork/xianhe_stork.vmdl",
	h121 = "models/items/courier/starladder_grillhound/starladder_grillhound.vmdl",
	h122 = "models/items/courier/pw_zombie/pw_zombie.vmdl",
	h123 = "models/items/courier/raiq/raiq.vmdl",
	h124 = "models/courier/frog/frog.vmdl",
	h125 = "models/courier/godhorse/godhorse.vmdl",
	h126 = "models/courier/imp/imp.vmdl",
	h127 = "models/courier/mighty_boar/mighty_boar.vmdl",
	h128 = "models/items/courier/onibi_lvl_03/onibi_lvl_03.vmdl",
	h129 = "models/items/courier/echo_wisp/echo_wisp.vmdl",  --蠕行水母
	h130 = "models/courier/sw_donkey/sw_donkey.vmdl", --驴法师new
	h131 = "models/items/courier/gnomepig/gnomepig.vmdl", --丰臀公主new
	h132 = "models/items/furion/treant/ravenous_woodfang/ravenous_woodfang.vmdl",--焚牙树精new
	h133 = "models/courier/mechjaw/mechjaw.vmdl",--机械咬人箱new
	h134 = "models/items/courier/mole_messenger/mole_messenger.vmdl",--1级矿车老鼠
	h135 = "models/items/courier/jumo_dire/jumo_dire.vmdl",
	h136 = "models/items/courier/courier_ti9/courier_ti9.vmdl",
	h137 = "models/items/courier/courier_ti9/courier_ti9_lvl2/courier_ti9_lvl2.vmdl",
	h138 = "models/props_gameplay/donkey.vmdl",
	h139 = "models/hy/huya.vmdl",

	--小英雄信使 ameteur
	h201 = "models/courier/doom_demihero_courier/doom_demihero_courier.vmdl",
	h202 = "models/courier/huntling/huntling.vmdl",
	h203 = "models/courier/minipudge/minipudge.vmdl",
	h204 = "models/courier/seekling/seekling.vmdl",
	h205 = "models/items/courier/baekho/baekho.vmdl",
	h206 = "models/items/courier/basim/basim.vmdl",
	h207 = "models/items/courier/devourling/devourling.vmdl",
	h208 = "models/items/courier/faceless_rex/faceless_rex.vmdl",
	h209 = "models/items/courier/tinkbot/tinkbot.vmdl",
	h210 = "models/items/courier/lilnova/lilnova.vmdl",
	h211 = "models/items/courier/amphibian_kid/amphibian_kid.vmdl",
	h212 = "models/courier/venoling/venoling.vmdl",
	h213 = "models/courier/juggernaut_dog/juggernaut_dog.vmdl",
	h214 = "models/courier/otter_dragon/otter_dragon.vmdl",
	h215 = "models/items/courier/boooofus_courier/boooofus_courier.vmdl",
	h216 = "models/courier/baby_winter_wyvern/baby_winter_wyvern.vmdl",
	h217 = "models/courier/yak/yak.vmdl",
	h218 = "models/items/furion/treant/eternalseasons_treant/eternalseasons_treant.vmdl",
	h219 = "models/items/courier/blue_lightning_horse/blue_lightning_horse.vmdl",
	h220 = "models/items/courier/waldi_the_faithful/waldi_the_faithful.vmdl",
	h221 = "models/items/courier/bajie_pig/bajie_pig.vmdl",
	h222 = "models/items/courier/courier_faun/courier_faun.vmdl",
	h223 = "models/items/courier/livery_llama_courier/livery_llama_courier.vmdl",
	h224 = "models/items/courier/onibi_lvl_10/onibi_lvl_10.vmdl",
	h225 = "models/items/courier/little_fraid_the_courier_of_simons_retribution/little_fraid_the_courier_of_simons_retribution.vmdl", --胆小南瓜人
	h226 = "models/items/courier/hermit_crab/hermit_crab.vmdl", --螃蟹1
	h227 = "models/items/courier/hermit_crab/hermit_crab_boot.vmdl", --螃蟹2
	h228 = "models/items/courier/hermit_crab/hermit_crab_shield.vmdl", --螃蟹3
	h229 = "models/courier/donkey_unicorn/donkey_unicorn.vmdl", --竭智法师new
	h230 = "models/items/courier/white_the_crystal_courier/white_the_crystal_courier.vmdl", --蓝心白隼new
	h231 = "models/items/furion/treant/furion_treant_nelum_red/furion_treant_nelum_red.vmdl",--莲花人new
	h232 = "models/courier/beetlejaws/mesh/beetlejaws.vmdl",--甲虫咬人箱new
	h233 = "models/courier/smeevil_bird/smeevil_bird.vmdl",
	h234 = "models/items/courier/mole_messenger/mole_messenger_lvl4.vmdl",--蜡烛头矿车老鼠
	h235 = "models/items/courier/chocobo/chocobo.vmdl", --迅捷陆行鸟
	h236 = "models/items/courier/flightless_dod/flightless_dod.vmdl", --嘟嘟鸟
	h237 = "models/items/courier/frostivus2018_courier_serac_the_seal/frostivus2018_courier_serac_the_seal.vmdl",
	h238 = "models/items/courier/pangolier_squire/pangolier_squire.vmdl",
	h239 = "models/hujing_wangyu/hujing.vmdl",
	h240 = "models/items/courier/courier_ti9/courier_ti9_lvl3/courier_ti9_lvl3.vmdl",
	h241 = "models/items/courier/axolotl/axolotl.vmdl",
	h242 = "models/items/courier/snaggletooth_red_panda/snaggletooth_red_panda.vmdl",
	h243 = "models/items/courier/xianhe_stork/xianhe_stork.vmdl",

	--珍藏信使 pro
	h301 = "models/items/courier/bookwyrm/bookwyrm.vmdl",
	h302 = "models/items/courier/captain_bamboo/captain_bamboo.vmdl",
	h303 = "models/items/courier/kanyu_shark/kanyu_shark.vmdl",
	h304 = "models/items/courier/tory_the_sky_guardian/tory_the_sky_guardian.vmdl",
	h305 = "models/items/courier/shroomy/shroomy.vmdl",
	h306 = "models/items/courier/courier_janjou/courier_janjou.vmdl",
	h307 = "models/items/courier/green_jade_dragon/green_jade_dragon.vmdl",
	h308 = "models/courier/drodo/drodo.vmdl",
	h309 = "models/courier/mech_donkey/mech_donkey.vmdl",
	h310 = "models/courier/donkey_crummy_wizard_2014/donkey_crummy_wizard_2014.vmdl",
	h311 = "models/courier/octopus/octopus.vmdl",
	h312 = "models/items/courier/scribbinsthescarab/scribbinsthescarab.vmdl",
	h313 = "models/courier/defense3_sheep/defense3_sheep.vmdl",
	h314 = "models/items/courier/snapjaw/snapjaw.vmdl",
	h315 = "models/items/courier/g1_courier/g1_courier.vmdl",
	h316 = "models/courier/donkey_trio/mesh/donkey_trio.vmdl",
	h317 = "models/items/courier/boris_baumhauer/boris_baumhauer.vmdl",
	h318 = "models/courier/baby_rosh/babyroshan.vmdl",
	h319 = "models/items/courier/bearzky/bearzky.vmdl",
	h320 = "models/items/courier/defense4_radiant/defense4_radiant.vmdl",
	h321 = "models/items/courier/defense4_dire/defense4_dire.vmdl",
	h322 = "models/items/courier/onibi_lvl_20/onibi_lvl_20.vmdl",
	h323 = "models/items/juggernaut/ward/fortunes_tout/fortunes_tout.vmdl", --招财猫
	h324 = "models/items/courier/hermit_crab/hermit_crab_necro.vmdl", --螃蟹4
	h325 = "models/items/courier/hermit_crab/hermit_crab_travelboot.vmdl", --螃蟹5
	h326 = "models/items/courier/hermit_crab/hermit_crab_lotus.vmdl", --螃蟹6
	h327 = "models/courier/donkey_ti7/donkey_ti7.vmdl",
	h328 = "models/items/courier/shibe_dog_cat/shibe_dog_cat.vmdl", --天猫地狗new
	h329 = "models/items/furion/treant/hallowed_horde/hallowed_horde.vmdl",--万圣树群new
	h330 = "models/courier/flopjaw/flopjaw.vmdl",--大嘴咬人箱new
	h331 = "models/courier/lockjaw/lockjaw.vmdl",--咬人箱洛克new
	h332 = "models/items/courier/butch_pudge_dog/butch_pudge_dog.vmdl",--布狗new
	h333 = "models/courier/turtle_rider/turtle_rider.vmdl",
	h334 = "models/courier/smeevil_crab/smeevil_crab.vmdl",
	h335 = "models/items/courier/mole_messenger/mole_messenger_lvl6.vmdl",--绿钻头矿车老鼠
	h336 = "models/items/courier/amaterasu/amaterasu.vmdl", --天照大神
	h337 = "models/qie/qie.vmdl",
	h338 = "models/courier/f2p_courier/f2p_courier.vmdl",
	h339 = "models/items/courier/azuremircourierfinal/azuremircourierfinal.vmdl",
	h340 = "models/items/courier/courier_ti9/courier_ti9_lvl6/courier_ti9_lvl6.vmdl",
	h341 = "models/bilibilitv/model/tv.vmdl",
	h342 = "models/courier/baby_rosh/babyroshan.vmdl",
	h343 = "models/courier/baby_rosh/babyroshan.vmdl",
	h344 = "models/courier/baby_rosh/babyroshan.vmdl",
	h345 = "models/courier/baby_winter_wyvern/baby_winter_wyvern.vmdl",
	h346 = "models/courier/beetlejaws/mesh/beetlejaws.vmdl",
	h347 = "models/courier/doom_demihero_courier/doom_demihero_courier.vmdl",
	h348 = "models/courier/huntling/huntling.vmdl",
	h349 = "models/courier/minipudge/minipudge.vmdl",
	h350 = "models/courier/seekling/seekling.vmdl",
	h351 = "models/courier/venoling/venoling.vmdl",
	h352 = "models/items/courier/axolotl/axolotl.vmdl",
	h353 = "models/items/courier/devourling/devourling.vmdl",
	h354 = "models/courier/baby_rosh/babyroshan_elemental.vmdl",
	h355 = "models/courier/baby_rosh/babyroshan_elemental.vmdl",

	h399 = "models/courier/baby_rosh/babyroshan_winter18.vmdl",--姜饼肉山

	--战队信使 master
	h401 = "models/courier/navi_courier/navi_courier.vmdl",
	h402 = "models/items/courier/courier_mvp_redkita/courier_mvp_redkita.vmdl",
	h403 = "models/items/courier/ig_dragon/ig_dragon.vmdl",
	h404 = "models/items/courier/lgd_golden_skipper/lgd_golden_skipper.vmdl",
	h405 = "models/items/courier/vigilante_fox_red/vigilante_fox_red.vmdl",
	h406 = "models/items/courier/virtus_werebear_t3/virtus_werebear_t3.vmdl",
	h407 = "models/items/courier/throe/throe.vmdl",
	h408 = "models/items/courier/vaal_the_animated_constructradiant/vaal_the_animated_constructradiant.vmdl",
	h409 = "models/items/courier/vaal_the_animated_constructdire/vaal_the_animated_constructdire.vmdl",
	h410 = "models/items/courier/carty/carty.vmdl",
	h411 = "models/items/courier/carty_dire/carty_dire.vmdl",
	h412 = "models/items/courier/dc_angel/dc_angel.vmdl",
	h413 = "models/items/courier/dc_demon/dc_demon.vmdl",
	h414 = "models/items/courier/vigilante_fox_green/vigilante_fox_green.vmdl",
	h415 = "models/items/courier/bts_chirpy/bts_chirpy.vmdl",
	h416 = "models/items/courier/krobeling/krobeling.vmdl",
	h417 = "models/items/courier/jin_yin_black_fox/jin_yin_black_fox.vmdl",
	h418 = "models/items/courier/jin_yin_white_fox/jin_yin_white_fox.vmdl",
	h419 = "models/items/courier/fei_lian_blue/fei_lian_blue.vmdl",
	h420 = "models/items/courier/gama_brothers/gama_brothers.vmdl",
	h421 = "models/items/courier/onibi_lvl_21/onibi_lvl_21.vmdl",
	h422 = "models/items/courier/wabbit_the_mighty_courier_of_heroes/wabbit_the_mighty_courier_of_heroes.vmdl", --小飞侠
	h423 = "models/items/courier/hermit_crab/hermit_crab_octarine.vmdl", --螃蟹7
	h424 = "models/items/courier/hermit_crab/hermit_crab_skady.vmdl", --螃蟹8
	h425 = "models/items/courier/hermit_crab/hermit_crab_aegis.vmdl", --螃蟹9
	h426 = "models/items/furion/treant_flower_1.vmdl",--绽放树精new
	h427 = "models/courier/smeevil_magic_carpet/smeevil_magic_carpet.vmdl",
	h428 = "models/items/courier/mole_messenger/mole_messenger_lvl7.vmdl",--绿钻头金矿车老鼠
	h499 = "models/items/courier/krobeling_gold/krobeling_gold.vmdl",--金dp
	h429 = "models/items/courier/nilbog/nilbog.vmdl",--贪小疯魔
	h430 = "models/courier/frull/frull_courier.vmdl", --灵犀弗拉尔
	h431 = "models/items/courier/sltv_10_courier/sltv_10_courier.vmdl", --黄油小生
	h432 = "models/items/courier/nian_courier/nian_courier.vmdl", --年兽宝宝
	h433 = "models/courier/baby_rosh/babyroshan_ti9.vmdl",
	h434 = "models/items/courier/courier_ti9/courier_ti9_lvl7/courier_ti9_lvl7.vmdl",
	h435 = "models/shudaixiong/model/shudaixiong/shudaixiong.vmdl",
	h436 = "models/courier/baby_rosh/babyroshan.vmdl",
	h437 = "models/courier/baby_rosh/babyroshan.vmdl",
	h438 = "models/courier/baby_winter_wyvern/baby_winter_wyvern.vmdl",
	h439 = "models/courier/flopjaw/flopjaw.vmdl",
	h440 = "models/courier/juggernaut_dog/juggernaut_dog.vmdl",
	h441 = "models/courier/smeevil_crab/smeevil_crab.vmdl",
	h442 = "models/items/courier/axolotl/axolotl.vmdl",
	h443 = "models/items/courier/fei_lian_blue/fei_lian_blue.vmdl",
	h444 = "models/items/courier/wabbit_the_mighty_courier_of_heroes/wabbit_the_mighty_courier_of_heroes.vmdl",
	h445 = "models/items/courier/wabbit_the_mighty_courier_of_heroes/wabbit_the_mighty_courier_of_heroes.vmdl",
	h446 = "models/items/courier/wabbit_the_mighty_courier_of_heroes/wabbit_the_mighty_courier_of_heroes.vmdl",
}

local reimu_pet_skin = 
{
	h138 = 1,
	h436 = 1,
	h437 = 2,
	h342 = 3,
	h343 = 4,
	h344 = 5,
	h354 = 1,
	h355 = 2,
	h345 = 1,
	h438 = 2,
	h346 = 1,
	h347 = 1,
	h348 = 1,
	h440 = 1,
	h349 = 1,
	h350 = 1,
	h441 = 1,
	h351 = 1,

	h241 = 1,
	h352 = 2,
	h442 = 3,
	h353 = 1,
	h242 = 1,
	h444 = 1,
	h445 = 2,
	h446 = 3,
	h243 = 1,
	h443 = 1,
	h439 = 1,
}

local reimu_pet_size = 
{
	h000 = 1,

	h001 = 1,
	h002 = 1,
	--普通信使 beginner
	h101 = 1.1,
	h102 = 1.1,
	h103 = 1.1,
	h104 = 1,
	h105 = 1,
	h106 = 1,
	h107 = 1.2,
	h108 = 1,
	h109 = 1.1,
	h110 = 1.1,
	h111 = 1.1,
	h112 = 1.2,
	h113 = 1,
	h114 = 1.2,
	h115 = 1.2,
	h116 = 1,
	h117 = 1.3,
	h118 = 1.1,
	h119 = 1.3,
	h120 = 1.3,
	h121 = 1.1,
	h122 = 1.1,
	h123 = 1.2,
	h124 = 1,
	h125 = 1,
	h126 = 1,
	h127 = 1,
	h128 = 1.1,
	h129 = 1.2,  --蠕行水母
	h130 = 1, --驴法师new
	h131 = 1, --丰臀公主new
	h132 = 0.7,--焚牙树精new
	h133 = 1.1,--机械咬人箱new
	h134 = 1.1,--1级矿车老鼠
	h135 = 1.1,
	h136 = 1.1,
	h137 = 1.15,
	h138 = 1.15,
	h139 = 2.5,

	h199 = 1.5,
	--小英雄信使 ameteur
	h201 = 1.2,
	h202 = 1.2,
	h203 = 1.2,
	h204 = 1.2,
	h205 = 1.2,
	h206 = 1.2,
	h207 = 1.2,
	h208 = 1.3,
	h209 = 1.2,
	h210 = 1.25,

	h211 = 1.2,
	h212 = 1.1,
	h213 = 1,
	h214 = 1.25,
	h215 = 1.2,
	h216 = 1.25,
	h217 = 1.2,
	h218 = 1.1,
	h219 = 1.2,
	h220 = 1.25,
	h221 = 1.25,
	h222 = 1.3,
	h223 = 1.15,
	h224 = 1.25,
	h225 = 1.3, --胆小南瓜人
	h226 = 1.3, --螃蟹1
	h227 = 1.3, --螃蟹2
	h228 = 1.2, --螃蟹3

	h229 = 1.2, --竭智法师new
	h230 = 1.3, --蓝心白隼new
	h231 = 0.8,--莲花人new
	h232 = 1.2,--甲虫咬人箱new
	h233 = 1.2,
	h234 = 1.2,--蜡烛头矿车老鼠
	h235 = 1.2, --迅捷陆行鸟
	h236 = 1.2, --嘟嘟鸟
	h237 = 1.2,
	h238 = 0.8,
	h239 = 1.4,
	h240 = 1.25,
	h241 = 1.1,
	h242 = 1.4,
	h243 = 1.4,

	--珍藏信使 pro
	h301 = 1.3,
	h302 = 1.3,
	h303 = 1.3,
	h304 = 1.35,
	h305 = 1.3,
	h306 = 1.3,
	h307 = 1.3,
	h308 = 1.3,
	h309 = 1.2,

	h310 = 1.2,
	h311 = 1.25,
	h312 = 1.3,
	h313 = 1.3,
	h314 = 1.3,
	h315 = 1.25,
	h316 = 1.3,
	h317 = 1.4,
	h318 = 1.3,
	h319 = 1.3,
	h320 = 1.3,
	h321 = 1.3,
	h322 = 1.3,
	h323 = 1.1, --招财猫
	h324 = 1.3, --螃蟹4
	h325 = 1.25, --螃蟹5
	h326 = 1.25, --螃蟹6
	h327 = 1.25,

	h328 = 1.3, --天猫地狗new
	h329 = 0.9,--万圣树群new
	h330 = 1.3,--大嘴咬人箱new
	h331 = 1.25,--咬人箱洛克new
	h332 = 1.3,--布狗new
	h333 = 1.3,
	h334 = 1.3,
	h335 = 1.1,--绿钻头矿车老鼠
	h336 = 1.15, --天照大神
	h337 = 1.4,
	h338 = 1.3,
	h339 = 1.4,
	h340 = 1.3,
	h341 = 2.3,
	h342 = 1.3,
	h343 = 1.3,
	h344 = 1.3,
	h354 = 1.3,
	h355 = 1.3,
	h345 = 1.35,
	h346 = 1.3,
	h347 = 1.3,
	h348 = 1.3,
	h349 = 1.3,
	h350 = 1.3,
	h351 = 1.2,
	h352 = 1.2,
	h353 = 1.3,

	h399 = 1.2,--姜饼肉山

	--战队信使 master
	h401 = 1.4,
	h402 = 1.4,
	h403 = 1.4,
	h404 = 1.55,
	h405 = 1.4,
	h406 = 1.5,
	h407 = 1.3,

	h408 = 1.35,
	h409 = 1.35,
	h410 = 1.3,
	h411 = 1.3,
	h412 = 1.3,
	h413 = 1.3,
	h414 = 1.4,
	h415 = 1.35,
	h416 = 1.4,
	h417 = 1.4,
	h418 = 1.4,
	h419 = 1.4,
	h420 = 1.2,
	h421 = 1.35,
	h422 = 1.4, --小飞侠
	h423 = 1.3, --螃蟹7
	h424 = 1.3, --螃蟹8
	h425 = 1.3, --螃蟹9

	h426 = 1.1,--绽放树精new
	h427 = 1.55,
	h428 = 1.2,--绿钻头金矿车老鼠

	h499 = 1.55,--金dp
	h429 = 1.3,--贪小疯魔

	h430 = 1.3, --灵犀弗拉尔
	h431 = 1.2, --黄油小生
	h432 = 1.3, --年兽宝宝
	h433 = 1.35,
	h434 = 1.4,
	h435 = 1.0,
	h438 = 1.45,
	h439 = 1.35,
	h440 = 1.2,
	h441 = 1.4,
	h442 = 1.3,
	h444 = 1.4,
	h445 = 1.4,
	h446 = 1.4,
	h443 = 1.4,
	h436 = 1.4,
	h437 = 1.4,
}

local reimu_pet_effect = 
{
	-- 未包含的		
	-- "e316", 	-- 一圈蓝色五角星
	-- "e999",  -- 皇冠

	"e000",  -- 无特效

	"e101",
	"e102",
	"e103",
	"e104",
	"e107",
	"e108",
	"e111",
	"e112",
	"e113",
	"e114",
	"e201",
	"e202",
	"e203",
	"e205",
	"e210",
	"e213",
	"e214",
	"e301",
	"e302",
	"e303",
	"e304",
	"e305",
	"e306",
	"e308",
	"e309",
	"e311",
	"e312",
	"e313",
	"e315",
	"e317",
	"e319",
	"e320",
	"e321",
	"e322",
	"e401",
	"e402",
	"e403",
	"e404",
	"e405",
	"e406",
	"e407",
	"e408",
	"e409",
	"e410",
	"e451",
	"e452",
	"e453",
	"e454",
	"e455",
	"e456",
	"e457",
	"e458",
	"e459",
}

local courier_flyup_effect_list = 
{
	h208 = "effect/xukong/cour_rex_flying.vpcf",
	h432 = "effect/nianshou/courier_nian_ambient.vpcf",
	h499 = "effect/jin_dp/courier_krobeling_gold_ambient.vpcf",
	h399 = "effect/jiangbing/1.vpcf",
	h308 = "effect/drodo/1.vpcf",
	h199 = "effect/gewugu/3.vpcf",
	h239 = "effect/wangyu/1.vpcf",
	h303 = "effect/douyu/2.vpcf",
	h433 = "effect/roshan_ti9/1.vpcf",
	h341 = "effect/music/1.vpcf",
	h354 = "effect/lava_roshan/1.vpcf",
	h355 = "effect/frost_roshan/ambient.vpcf",
	h342 = "effect/darkmoon_roshan/1.vpcf",
	h343 = "effect/sand_roshan/baby_roshan_desert_sands_ambient.vpcf",
	h344 = "effect/biyu_roshan/1.vpcf",
	h436 = "effect/golden_roshan/ambient.vpcf",
	h437 = "effect/platinum_roshan/ambient.vpcf",
	h438 = "effect/golden_ww/1.vpcf",
	h439 = "effect/gold_angel/angels.vpcf",
	h440 = "effect/liansai_dog/1.vpcf",
	h441 = "effect/liansai_dog2/1.vpcf",
	h446 = "effect/wabbit/lvl3.vpcf",
}

local courier_ground_effect_list =
{
	h199 = "effect/gewugu/2.vpcf",
	h303 = "particles/gem/brewmaster_drunken_haze_debuff_bubbles_2.vpcf",
}

function SetDefaultSkin(caster, index)
	local skin = 
	{
		{
			"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",
		}
	}
	if index == nil or index < 1 or index > #skin then 
		index = RandomInt(1, #skin)
	end
	local model = skin[index][1]
	local effect = skin[index][2]	
	caster:SetOriginalModel(model)
	caster:SetModel(model)		
	caster:SetModelScale(1.0)

	if caster.effect_name ~= nil then
		caster:RemoveAbility(caster.effect_name)
		caster:RemoveModifierByName('modifier_texiao_star')
		caster.effect_name = nil
	end
	if caster.default_effect ~= nil then
		ParticleManager:DestroyParticleSystem(caster.default_effect, true)
		caster.default_effect = nil
	end

	local effectIndex = ParticleManager:CreateParticle(effect, PATTACH_ABSORIGIN_FOLLOW, caster)
	ParticleManager:SetParticleControl(effectIndex, 0, caster:GetOrigin())	
	caster.default_effect = effectIndex
	-- ParticleManager:DestroyParticleSystem(effectIndex,false)
	-- PATTACH_ABSORIGIN_FOLLOW
	-- PATTACH_POINT_FOLLOW
	-- PATTACH_WORLDORIGIN
end

function OnSpellStartReimuPet01(keys)		
	local caster = keys.caster

	if caster.is_init ~= true then
		caster.is_init = true
		keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_reimu_pet_01_state", nil)	
		local playerid = caster:GetPlayerOwnerID()
		local petLevel = GameRules.PlayerData[playerid].pet_level
		caster.pet_level = petLevel
		keys.ability:ApplyDataDrivenModifier(caster, caster, "modifier_reimu_pet_01_level", nil):SetStackCount(petLevel)
		caster:CreatureLevelUp(petLevel -  1)

		local keyTotal = GameRules.PlayerData[playerid].key_total or 0
		if keyTotal > 0 then
			local item = CreateItem("item_3121", nil, nil)
			if item ~= nil then 
				item.owner_player_id = playerid
				item:SetPurchaser(caster:GetOwner())
				item:SetCurrentCharges(keyTotal)
				caster:GetOwner():AddItem(item)
			end			
		end		
		
		local key = GameRules.PlayerData[playerid].pet_model
		if reimu_pet_model[key] == nil then 
			GameRules.PlayerData[playerid].pet_model = "h000"
			key = "h000"
		end
		caster.pet_model = key

		if key == "h000" then 
			SetDefaultSkin(caster)
		elseif string.sub(key,1,4) == "h000" then 			
			SetDefaultSkin(caster, table.keyindex(reimu_pet_model, key))
		else			
			local model = reimu_pet_model[key]		
			caster:SetOriginalModel(model)
			caster:SetModel(model)
			caster:SetSkin(reimu_pet_skin[key] or 0)		
			caster:SetModelScale(math.min(2.5, (reimu_pet_size[key] or 1) * (1 + 0.05 * petLevel)))

			local effect = GameRules.PlayerData[playerid].pet_effect or "e000"
			if table.hasvalue(reimu_pet_effect, effect) then 
				caster.effect_name = effect			
				AddAbilityAndSetLevel(caster, effect)
				if courier_flyup_effect_list[effect] ~= nil then 
					ShowCourierEffect(caster,1)
				else
					ShowCourierEffect(caster,2)
				end
			end
		end

		return
	end

	local index = (table.keyindex(reimu_pet_model, caster.pet_model) or 0) + 1
	if index > math.min(caster.pet_level or 1, table.count(reimu_pet_model)) then 	
		index = 1		
	end

	if caster.default_effect ~= nil then
		ParticleManager:DestroyParticleSystem(caster.default_effect,true)
		caster.default_effect = nil
	end

	local key = table.getkey(reimu_pet_model, index)
	caster.pet_model = key

	if string.sub(key,1,4) == "h000" then 			
		SetDefaultSkin(caster, index)
	else	
		local model = reimu_pet_model[key]
		caster:SetOriginalModel(model)
		caster:SetModel(model)
		caster:SetSkin(reimu_pet_skin[key] or 0)
		caster:SetModelScale(math.min(2.5, (reimu_pet_size[key] or 1) * (1 + 0.05 * caster.pet_level)))
	end

	if tostring(PlayerResource:GetSteamID(caster:GetPlayerOwnerID())) == GameRules.GameData.admin then 		
		CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner() , "show_message", {msg="change_to_pet_model", duration=5, params={key = caster.pet_model}, color="#ff0"} )					
	end
end

function OnSpellStartReimuPet02(keys)	
	local caster = keys.caster

	if string.sub(caster.pet_model,1,4) ~= "h000" and caster.default_effect ~= nil then
		ParticleManager:DestroyParticleSystem(caster.default_effect,true)
		caster.default_effect = nil
	end

	if caster.effect_name ~= nil then		
		caster:RemoveAbility(caster.effect_name)
		caster:RemoveModifierByName('modifier_texiao_star')		
	end

	local index = 0
	if caster.effect_name == nil then 
		index = 1
	else
		for k,v in ipairs(reimu_pet_effect) do
			if v == caster.effect_name then 
				index = k + 1
				break
			end
		end
		if index > math.min(caster.pet_level or 1, #reimu_pet_effect) then
			index = 1		
		end
	end

	local effect = reimu_pet_effect[index]
	caster.effect_name = effect			
	AddAbilityAndSetLevel(caster, effect)
	if courier_flyup_effect_list[effect] ~= nil then 
		ShowCourierEffect(caster,1)
	else
		ShowCourierEffect(caster,2)
	end		

	if tostring(PlayerResource:GetSteamID(caster:GetPlayerOwnerID())) == GameRules.GameData.admin then
		CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner() , "show_message", {msg="change_to_pet_effect", duration=5, params={key = caster.effect_name}, color="#ff0"} )					
	end
end

function OnSpellStartReimuPet03(keys)	
	local caster = keys.caster

	local playerid = caster:GetPlayerOwnerID()	
	GameRules.PlayerData[playerid].pet_model = caster.pet_model
	GameRules.PlayerData[playerid].pet_effect = caster.effect_name
	Service:SavePetCustom(playerid)

	UnitStunTarget(caster,caster,6.0)	
	
	local vecCaster = caster:GetOrigin()
	local count = 4
	local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_patchouli_04/ability_patchouli_04.vpcf", PATTACH_CUSTOMORIGIN, caster)
	ParticleManager:SetParticleControl(effectIndex, 0, vecCaster + Vector(0,0,256))
	ParticleManager:SetParticleControl(effectIndex, 1, vecCaster + Vector(0,0,256))
	ParticleManager:SetParticleControl(effectIndex, 3, vecCaster + Vector(0,0,256))
	
	caster:SetContextThink(DoUniqueString("OnSpellStartReimuPet03"), 
		function()			
			count = count * 2
			local radius = math.min(128,count)
			ParticleManager:SetParticleControl(effectIndex, 14, Vector(radius,0,0))			
			if count > 100 then 				
				ParticleManager:DestroyParticleSystemTimeFalse(effectIndex,3.0)				
				return nil 
			end
			return 0.5
		end,
	0.5)
	
	local effectIndex = ParticleManager:CreateParticle("particles/heroes/remilia/ability_remilia_04_laser.vpcf",PATTACH_CUSTOMORIGIN,caster)
	ParticleManager:SetParticleControl(effectIndex, 0, vecCaster+Vector(0,0,700))
	ParticleManager:SetParticleControl(effectIndex, 1, vecCaster+Vector(800,0,800))
	ParticleManager:SetParticleControl(effectIndex, 2, vecCaster+Vector(0,0,0))
	ParticleManager:SetParticleControl(effectIndex, 3, vecCaster+Vector(-800,0,800))
	ParticleManager:SetParticleControl(effectIndex, 4, vecCaster+Vector(0,0,1600))
	ParticleManager:SetParticleControl(effectIndex, 6, vecCaster)
	ParticleManager:DestroyParticleSystem(effectIndex,false)

	local effectIndexSmoke = ParticleManager:CreateParticle("particles/heroes/remilia/ability_remilia_04_laser_rocket.vpcf",PATTACH_CUSTOMORIGIN,caster)
	ParticleManager:SetParticleControl(effectIndexSmoke, 0, vecCaster+Vector(0,0,700))
	ParticleManager:SetParticleControl(effectIndexSmoke, 1, Vector(1,0,0))
	ParticleManager:SetParticleControl(effectIndexSmoke, 2, Vector(-1,0,0))
	ParticleManager:SetParticleControl(effectIndexSmoke, 3, Vector(0,0,0.5))
	ParticleManager:SetParticleControl(effectIndexSmoke, 4, Vector(0,0,-1))
	ParticleManager:DestroyParticleSystem(effectIndexSmoke,false)
end

function OnSpellStartReimuPet04(keys)
	local caster = keys.caster
	local playerid = caster:GetPlayerOwnerID()
	local hero = caster:GetOwner()

	if hero:GetNumItemsInInventory() >= THTD_MAX_ITEM_SLOT then 
		CustomGameEventManager:Send_ServerToPlayer(hero:GetPlayerOwner(), "display_custom_error", {msg="not_enough_item_slot"})		
		return 
	end

	if tostring(PlayerResource:GetSteamID(caster:GetPlayerOwnerID())) == GameRules.GameData.admin then
		local item = hero:FindItemInInventory("item_3121")			
		if item ~= nil then 
			item:SetCurrentCharges(item:GetCurrentCharges() + 1)						
		else
			item = CreateItem("item_3121", nil, nil) 					
			if item ~= nil then	
				item.owner_player_id = playerid
				item:SetPurchaser(hero)
				hero:AddItem(item)
				-- local vHitLoc = caster:GetAttachmentOrigin(caster:ScriptLookupAttachment("attach_hitloc"))
				-- local drop = CreateItemOnPositionSync(vHitLoc, item)
				-- item:LaunchLootInitialHeight(false, vHitLoc.z, vHitLoc.z+200, 1.0, GetGroundPosition(caster:GetOwner():GetAbsOrigin() + caster:GetOwner():GetForwardVector() * 100, caster:GetOwner()))
			end
		end	
		caster:EmitSound(reimu_pet_sound[RandomInt(1, #reimu_pet_sound)])
		CustomGameEventManager:Send_ServerToPlayer(hero:GetPlayerOwner(), "show_message", {msg="key_made_tip", duration=3, params={}, color="#ff0"})
		
		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 GameRules.PlayerData[playerid]["point"] == nil or GameRules.PlayerData[playerid]["point"] < keys.point then 		
		CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner() , "display_custom_error", {msg="not_enough_game_point"} )							
		return 
	end
	
	caster:EmitSound(reimu_pet_sound[RandomInt(1, #reimu_pet_sound)])	
	Service:BuyMagicKey(playerid, 1)	
end

local model_tree = 
{
	-- "maps/journey_assets/props/trees/journey_armandpine/journey_armandpine_01.vmdl",
	-- "maps/journey_assets/props/trees/journey_armandpine/journey_armandpine_02.vmdl",
	-- "maps/journey_assets/props/trees/journey_maple/journey_maple02.vmdl",
	-- "maps/jungle_assets/trees/kapok/export/kapok_002.vmdl",
	-- "maps/jungle_assets/trees/kapok/export/kapok_003.vmdl",
	-- "maps/jungle_assets/trees/kapok/export/kapok_004.vmdl",
	-- "models/props_tree/dire_tree006.vmdl",
	-- "models/props_tree/palm_01.vmdl",
	-- "models/props_tree/palm_02b.vmdl",
	-- "models/props_tree/palm_02c.vmdl",
	-- "models/props_tree/palm_03_inspector.vmdl",
	"models/props_tree/frostivus_tree.vmdl", -- 圣诞树
	-- "models/props_tree/newbloom_tree.vmdl", -- 新春树
}

function OnSpellStartReimuPet05(keys)	
	local caster = keys.caster
	local targetPoint = keys.target_points[1]

	caster:EmitSound("UI.Aowu")

	if targetPoint.y > 415 and targetPoint.y < 2000 then
		local y = 2000
		if (2000-targetPoint.y) > (targetPoint.y-415) then y = 415 end
		targetPoint = Vector(targetPoint.x, y, targetPoint.z)
	elseif targetPoint.y > -2000 and targetPoint.y < -415 then	
		local y = -2000
		if math.abs(-2000-targetPoint.y) > math.abs(-415-targetPoint.y) then y = -415 end
		targetPoint = Vector(targetPoint.x, y, targetPoint.z)
	end
	if targetPoint.x > 3755 and targetPoint.x < 4470 then
		targetPoint = Vector(3755, targetPoint.y, targetPoint.z)
	elseif targetPoint.x < -3755 and targetPoint.x > -4470 then
		targetPoint = Vector(-3755, targetPoint.y, targetPoint.z)
	end

	if GetDistanceBetweenTwoVec2D(caster:GetAbsOrigin(), targetPoint) <= 200 then 
		caster.pet_point = nil 	
		if caster.pet_tree ~= nil then UTIL_Remove(caster.pet_tree) end
		caster.pet_tree = nil		
	else		
		caster.pet_point = targetPoint
		if caster.pet_tree ~= nil then UTIL_Remove(caster.pet_tree) end
		caster.pet_tree = CreateTempTreeWithModel(targetPoint, 36000, model_tree[RandomInt(1, #model_tree)])
	end
end

function ShowCourierEffect(hero,type)
	if hero.flyup_effect ~= nil then
		ParticleManager:DestroyParticle(hero.flyup_effect,true)
	end
	if hero.ground_effect ~= nil then
		ParticleManager:DestroyParticle(hero.ground_effect,true)
	end

	local key = table.getkey(reimu_pet_model, hero.model_index)

	if type == 1 then
		--陆地特效
		if key ~= nil and courier_ground_effect_list[key] ~= nil then
			--陆地特效
			local ground_effect = courier_ground_effect_list[key]
			hero.ground_effect = PlayParticleOnUnitUntilDeath({
				caster = hero,
				p = ground_effect,
			})
		end
	end
	if type == 2 then
		--飞行特效
		if key ~= nil and courier_flyup_effect_list[key] ~= nil then
			--飞行特效
			local flyup_effect = courier_flyup_effect_list[key]
			hero.flyup_effect = PlayParticleOnUnitUntilDeath({
				caster = hero,
				p = flyup_effect,
			})
		end
	end
end

function PlayParticleOnUnitUntilDeath(keys)
	local p = keys.p
	local u = keys.caster
	if u == nil then
		return
	end
	local pos = keys.pos or PATTACH_ABSORIGIN_FOLLOW
	local pp = ParticleManager:CreateParticle(p, pos, u)
	ParticleManager:SetParticleControlEnt( pp, 0, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 1, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 2, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 3, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 4, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 5, u, pos, nil, u:GetOrigin(), true );
	ParticleManager:SetParticleControlEnt( pp, 6, u, pos, nil, u:GetOrigin(), true );

	u:SetContextThink(DoUniqueString("dota_timer"), 
		function() 
			if GameRules:IsGamePaused() then return 0.1 end
			if u == nil or u:IsNull() == true or u:IsAlive() == false then
				if pp ~= nil then
					ParticleManager:DestroyParticle(pp,true)
				end
				return
			end
			if pp == nil then
				return
			end
			return 0.1
		end, 
	0.1)

	return pp
end


function SetCourier(hero, onduty_hero, onduty_hero_effect)
	local onduty_hero_model = GameRules:GetGameModeEntity().sm_hero_list[onduty_hero]
	local onduty_hero_skin = GameRules:GetGameModeEntity().sm_hero_list_skin[onduty_hero] or 0
	hero:SetOriginalModel(onduty_hero_model)
	hero:SetModel(onduty_hero_model)
	hero:SetSkin(onduty_hero_skin)
	hero.init_model_scale = GameRules:GetGameModeEntity().sm_hero_size[onduty_hero] or 1
	hero:SetModelScale(hero.init_model_scale)
	hero.ori_model = onduty_hero_model
	hero.ori_skin = onduty_hero_skin
	if hero.effect ~= nil then
		hero:RemoveAbility(hero.effect)
		hero:RemoveModifierByName('modifier_texiao_star')
	end
	if onduty_hero_effect ~= 'e000' then
    	if string.find(GameRules:GetGameModeEntity().effect_list,onduty_hero_effect) then
			AddAbilityAndSetLevel(hero,onduty_hero_effect)
			hero.effect = onduty_hero_effect
		end
    end
    ShowCourierEffect(hero,1)
    hero.onduty_hero = onduty_hero
end