// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool

createhordecrates( var_0, var_1 )
{
    level.getrandomcratetypeforgamemode = ::getrandomcratetypehorde;
    level.hordeicon["ammo"] = "specialty_ammo_crate";
    level.hordeicon["iw6_mts255_mp_barrelrange03_reflexshotgun"] = "hud_icon_mts255";
    level.hordeicon["iw6_fp6_mp_barrelrange03_reflexshotgun"] = "hud_icon_fp6";
    level.hordeicon["iw6_vepr_mp_grip"] = "hud_icon_vepr";
    level.hordeicon["iw6_microtar_mp_eotechsmg"] = "hud_icon_microtar";
    level.hordeicon["iw6_ak12_mp_flashsuppress_grip"] = "hud_icon_ak12";
    level.hordeicon["iw6_arx160_mp_flashsuppress_hybrid"] = "hud_icon_arx160";
    level.hordeicon["iw6_m27_mp_flashsuppress_hybrid"] = "hud_icon_m27";
    level.hordeicon["iw6_kac_mp_flashsuppress"] = "hud_icon_kac";
    level.hordeicon["iw6_usr_mp_usrvzscope_xmags"] = "hud_icon_usr";
    level.hordeicon["iw6_magnumhorde_mp_fmj"] = "hud_icon_magnum";
    level.hordeicon["throwingknife_mp"] = "throw_knife_sm";
    level.hordeicon["specialty_lightweight"] = "icon_perks_agility";
    level.hordeicon["specialty_fastreload"] = "icon_perks_sleight_of_hand";
    level.hordeicon["specialty_quickdraw"] = "icon_perks_quickdraw";
    level.hordeicon["specialty_marathon"] = "icon_perks_marathon";
    level.hordeicon["specialty_quickswap"] = "icon_perks_reflex";
    level.hordeicon["specialty_bulletaccuracy"] = "icon_perks_steady_aim";
    level.hordeicon["specialty_fastsprintrecovery"] = "icon_perks_ready_up";
    level.hordeicon["_specialty_blastshield"] = "icon_perks_blast_shield";
    level.hordeicon["specialty_stalker"] = "icon_perks_stalker";
    level.hordeicon["specialty_sharp_focus"] = "icon_perks_focus";
    level.hordeicon["specialty_regenfaster"] = "icon_perks_icu";
    level.hordeicon["specialty_sprintreload"] = "icon_perks_on_the_go";
    level.hordeicon["specialty_triggerhappy"] = "icon_perks_triggerhappy";
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_mts255_mp_barrelrange03_reflexshotgun", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MTS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_fp6_mp_barrelrange03_reflexshotgun", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FP6" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_vepr_mp_grip", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_VEPR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_microtar_mp_eotechsmg", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MICRO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_ak12_mp_flashsuppress_grip", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_arx160_mp_flashsuppress_hybrid", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_ARX" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_m27_mp_flashsuppress_hybrid", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_M27" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_kac_mp_flashsuppress", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KAC" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_usr_mp_usrvzscope_xmags", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_USR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "iw6_magnumhorde_mp_fmj", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_WEST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "throwingknife_mp", 3, ::hordecratelethalthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KNIFE" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_lightweight", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_LIGHT" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_fastreload", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_quickdraw", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_QIUCK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_marathon", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MARA" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_quickswap", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_SWAP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_bulletaccuracy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AIM" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_fastsprintrecovery", 7, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_READY" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "_specialty_blastshield", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_BLAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_stalker", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_STALK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_sharp_focus", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FOCUS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_regenfaster", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_HEALTH" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_sprintreload", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_GO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "specialty_triggerhappy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_TRIGGER" );
    maps\mp\killstreaks\_airdrop::addcratetype( "a", "ammo", 0, ::hordecrateammothink, var_0, var_1, &"HORDE_AMMO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_mts255_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MTS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_fp6_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FP6" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_vepr_mp_grip", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_VEPR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_microtar_mp_eotechsmg", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MICRO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_ak12_mp_flashsuppress_grip", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_arx160_mp_flashsuppress_hybrid", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_ARX" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_m27_mp_flashsuppress_hybrid", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_M27" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_kac_mp_flashsuppress", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KAC" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_usr_mp_usrvzscope_xmags", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_USR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "iw6_magnumhorde_mp_fmj", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_WEST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "throwingknife_mp", 3, ::hordecratelethalthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KNIFE" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_lightweight", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_LIGHT" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_fastreload", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_quickdraw", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_QIUCK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_marathon", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MARA" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_quickswap", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_SWAP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_bulletaccuracy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AIM" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_fastsprintrecovery", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_READY" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "_specialty_blastshield", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_BLAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_stalker", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_STALK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_sharp_focus", 7, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FOCUS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_regenfaster", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_HEALTH" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_sprintreload", 10, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_GO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "specialty_triggerhappy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_TRIGGER" );
    maps\mp\killstreaks\_airdrop::addcratetype( "b", "ammo", 0, ::hordecrateammothink, var_0, var_1, &"HORDE_AMMO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_mts255_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MTS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_fp6_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FP6" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_vepr_mp_grip", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_VEPR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_microtar_mp_eotechsmg", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MICRO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_ak12_mp_flashsuppress_grip", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_arx160_mp_flashsuppress_hybrid", 12, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_ARX" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_m27_mp_flashsuppress_hybrid", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_M27" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_kac_mp_flashsuppress", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KAC" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_usr_mp_usrvzscope_xmags", 6, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_USR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "iw6_magnumhorde_mp_fmj", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_WEST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "throwingknife_mp", 2, ::hordecratelethalthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KNIFE" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_lightweight", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_LIGHT" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_fastreload", 12, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_quickdraw", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_QIUCK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_marathon", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MARA" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_quickswap", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_SWAP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_bulletaccuracy", 12, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AIM" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_fastsprintrecovery", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_READY" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "_specialty_blastshield", 12, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_BLAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_stalker", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_STALK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_sharp_focus", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FOCUS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_regenfaster", 12, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_HEALTH" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_sprintreload", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_GO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "specialty_triggerhappy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_TRIGGER" );
    maps\mp\killstreaks\_airdrop::addcratetype( "c", "ammo", 0, ::hordecrateammothink, var_0, var_1, &"HORDE_AMMO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_mts255_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MTS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_fp6_mp_barrelrange03_reflexshotgun", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FP6" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_vepr_mp_grip", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_VEPR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_microtar_mp_eotechsmg", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MICRO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_ak12_mp_flashsuppress_grip", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_arx160_mp_flashsuppress_hybrid", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_ARX" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_m27_mp_flashsuppress_hybrid", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_M27" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_kac_mp_flashsuppress", 10, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KAC" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_usr_mp_usrvzscope_xmags", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_USR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "iw6_magnumhorde_mp_fmj", 0, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_WEST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "throwingknife_mp", 2, ::hordecratelethalthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KNIFE" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_lightweight", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_LIGHT" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_fastreload", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_quickdraw", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_QIUCK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_marathon", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MARA" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_quickswap", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_SWAP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_bulletaccuracy", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AIM" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_fastsprintrecovery", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_READY" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "_specialty_blastshield", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_BLAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_stalker", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_STALK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_sharp_focus", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FOCUS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_regenfaster", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_HEALTH" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_sprintreload", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_GO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "specialty_triggerhappy", 0, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_TRIGGER" );
    maps\mp\killstreaks\_airdrop::addcratetype( "d", "ammo", 0, ::hordecrateammothink, var_0, var_1, &"HORDE_AMMO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_mts255_mp_barrelrange03_reflexshotgun", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MTS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_fp6_mp_barrelrange03_reflexshotgun", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FP6" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_vepr_mp_grip", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_VEPR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_microtar_mp_eotechsmg", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MICRO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_ak12_mp_flashsuppress_grip", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_arx160_mp_flashsuppress_hybrid", 4, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_ARX" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_m27_mp_flashsuppress_hybrid", 9, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_M27" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_kac_mp_flashsuppress", 9, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KAC" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_usr_mp_usrvzscope_xmags", 5, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_USR" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "iw6_magnumhorde_mp_fmj", 3, ::hordecrateweaponthink, var_0, var_1, &"HORDE_DOUBLE_TAP_WEST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "throwingknife_mp", 2, ::hordecratelethalthink, var_0, var_1, &"HORDE_DOUBLE_TAP_KNIFE" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_lightweight", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_LIGHT" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_fastreload", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_quickdraw", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_QIUCK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_marathon", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_MARA" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_quickswap", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_SWAP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_bulletaccuracy", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_AIM" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_fastsprintrecovery", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_READY" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "_specialty_blastshield", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_BLAST" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_stalker", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_STALK" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_sharp_focus", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_FOCUS" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_regenfaster", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_HEALTH" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_sprintreload", 4, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_GO" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "specialty_triggerhappy", 3, ::hordecrateperkthink, var_0, var_1, &"HORDE_DOUBLE_TAP_TRIGGER" );
    maps\mp\killstreaks\_airdrop::addcratetype( "e", "ammo", 0, ::hordecrateammothink, var_0, var_1, &"HORDE_AMMO" );
    setuplootcrates( var_0, var_1 );
}

setuplootcrates( var_0, var_1 )
{
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "ims", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_IMS_PICKUP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "helicopter", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_HELICOPTER_PICKUP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "drone_hive", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_DRONE_HIVE_PICKUP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "sentry", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_SENTRY_PICKUP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "heli_sniper", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_HELI_SNIPER_PICKUP" );
    maps\mp\killstreaks\_airdrop::addcratetype( "loot", "ball_drone_backup", 15, ::killstreakcratethinkhorde, var_0, var_1, &"KILLSTREAKS_HINTS_BALL_DRONE_BACKUP_PICKUP" );
}

hordecrateweaponthink( var_0 )
{
    self endon( "death" );
    self endon( "doubleTap" );
    self endon( "restarting_physics" );

    if ( !isdefined( self.doubletapcount ) )
        self.doubletapcount = 0;

    var_1 = game["strings"][self.cratetype + "_hint"];
    thread doubletapthink();
    maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, level.hordeicon[self.cratetype] );
    thread crateallcapturethinkhorde( 1000 );
    setcratelooksbasedontap( self );
    level thread removeonnextairdrop( self );

    for (;;)
    {
        self waittill( "captured", var_2 );
        trygivehordeweapon( var_2, self.cratetype );
        maps\mp\killstreaks\_airdrop::deletecrate();
    }
}

trygivehordeweapon( var_0, var_1 )
{
    var_0 playlocalsound( "ammo_crate_use" );
    var_2 = [];
    var_3 = var_0 getweaponslistprimaries();
    var_4 = getweaponbasename( var_1 );

    foreach ( var_6 in var_3 )
    {
        if ( var_6 == level.intelminigun )
            continue;

        var_2[var_2.size] = var_6;
    }

    if ( var_2.size > 1 )
    {
        var_8 = 1;

        foreach ( var_10 in var_2 )
        {
            if ( var_1 == var_10 )
                var_8 = 0;
        }

        if ( var_8 )
        {
            var_12 = var_0 getcurrentprimaryweapon();

            if ( var_12 == "none" )
                var_12 = var_0 common_scripts\utility::getlastweapon();

            if ( !var_0 hasweapon( var_12 ) || var_12 == level.intelminigun )
                var_12 = var_0 maps\mp\killstreaks\_killstreaks::getfirstprimaryweapon();

            var_0 takeweapon( var_12 );
        }
        else
        {
            var_0 givemaxammo( var_1 );
            var_13 = var_0.weaponstate[var_4]["barSize"];
            var_0.weaponstate[var_4]["vaule"] = var_13;
            var_0 notify( "weaponPointsEarned" );
        }
    }

    maps\mp\gametypes\horde::createhordeweaponstate( var_0, var_4, 1 );
    var_0 maps\mp\_utility::_giveweapon( var_1 );
    var_0 switchtoweaponimmediate( var_1 );
}

hordecrateperkthink( var_0 )
{
    self endon( "death" );
    self endon( "doubleTap" );
    self endon( "restarting_physics" );

    if ( !isdefined( self.doubletapcount ) )
        self.doubletapcount = 0;

    var_1 = game["strings"][self.cratetype + "_hint"];
    thread doubletapthink();
    maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, level.hordeicon[self.cratetype] );
    thread crateallcapturethinkhorde( 1000 );
    setcratelooksbasedontap( self );
    level thread removeonnextairdrop( self );

    for (;;)
    {
        self waittill( "captured", var_2 );
        var_2 playlocalsound( "ammo_crate_use" );

        if ( !var_2 maps\mp\_utility::_hasperk( self.cratetype ) )
        {
            var_3 = self.cratetype;
            var_2 maps\mp\_utility::giveperk( var_3, 0 );
            var_4 = tablelookup( "mp/hordeIcons.csv", 1, var_3, 0 );
            var_2 setclientomnvar( "ui_horde_update_perk", int( var_4 ) );
            var_5 = var_2.horde_perks.size;
            var_2.horde_perks[var_5]["name"] = var_3;
            var_2.horde_perks[var_5]["index"] = int( var_4 );
        }

        maps\mp\killstreaks\_airdrop::deletecrate();
    }
}

hordecratelethalthink( var_0 )
{
    self endon( "death" );
    self endon( "doubleTap" );
    self endon( "restarting_physics" );

    if ( !isdefined( self.doubletapcount ) )
        self.doubletapcount = 0;

    var_1 = game["strings"][self.cratetype + "_hint"];
    thread doubletapthink();
    maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, level.hordeicon[self.cratetype] );
    thread crateallcapturethinkhorde( 1000 );
    setcratelooksbasedontap( self );
    level thread removeonnextairdrop( self );

    for (;;)
    {
        self waittill( "captured", var_2 );
        var_2 playlocalsound( "ammo_crate_use" );

        if ( !var_2 hasweapon( self.cratetype ) )
        {
            var_3 = var_2 getcurrentoffhand();
            var_2 takeweapon( var_3 );
            var_2 maps\mp\_utility::giveperkequipment( self.cratetype, 1 );
        }
        else
            var_2 givemaxammo( self.cratetype );

        maps\mp\killstreaks\_airdrop::deletecrate();
    }
}

hordecrateammothink( var_0 )
{
    self endon( "death" );
    self endon( "restarting_physics" );
    var_1 = game["strings"][self.cratetype + "_hint"];
    maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, level.hordeicon[self.cratetype] );
    thread crateallcapturethinkhorde( 2000 );
    self.friendlymodel hudoutlineenable( 5, 0 );
    self.outlinecolor = 5;
    level thread removeonnextairdrop( self );

    for (;;)
    {
        self waittill( "captured", var_2 );
        var_2 playlocalsound( "ammo_crate_use" );
        level thread maps\mp\gametypes\_horde_util::refillammohorde( var_2 );
        maps\mp\killstreaks\_airdrop::deletecrate();
    }
}

killstreakcratethinkhorde( var_0 )
{
    self endon( "death" );
    self endon( "restarting_physics" );
    var_1 = game["strings"][self.cratetype + "_hint"];
    maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, maps\mp\_utility::getkillstreakoverheadicon( self.cratetype ) );
    thread crateallcapturethinkhorde( 2000 );
    setcratelook( self, 3, ( 0.157, 0.784, 0.784 ) );

    for (;;)
    {
        self waittill( "captured", var_2 );

        if ( !isplayer( var_2 ) )
            continue;

        var_3 = getslotnumber( var_2 );

        if ( !isdefined( var_3 ) )
            continue;

        var_2 playlocalsound( "ammo_crate_use" );
        var_2 thread maps\mp\killstreaks\_killstreaks::givekillstreak( self.cratetype, 0, 0, self.owner, var_3 );
        maps\mp\killstreaks\_airdrop::deletecrate();
    }
}

getslotnumber( var_0 )
{
    var_1 = undefined;

    for ( var_2 = 1; var_2 < 4; var_2++ )
    {
        var_3 = var_0.pers["killstreaks"][var_2];

        if ( !isdefined( var_3 ) || !isdefined( var_3.streakname ) || var_3.available == 0 )
        {
            var_1 = var_2;
            break;
        }
    }

    return var_1;
}

crateallcapturethinkhorde( var_0 )
{
    self endon( "doubleTap" );
    self endon( "restarting_physics" );

    if ( !isdefined( var_0 ) )
        var_0 = 500;

    while ( isdefined( self ) )
    {
        self makeusable();
        self waittill( "trigger", var_1 );

        if ( handleagentuse( var_1 ) )
            continue;

        if ( handlekillstreaklimit( var_1 ) )
            continue;

        if ( !maps\mp\killstreaks\_airdrop::validateopenconditions( var_1 ) )
            continue;

        self makeunusable();
        var_1.iscapturingcrate = 1;

        if ( !maps\mp\killstreaks\_airdrop::useholdthink( var_1, var_0 ) )
        {
            var_1.iscapturingcrate = 0;
            continue;
        }

        var_1.iscapturingcrate = 0;
        maps\mp\gametypes\_horde_util::awardhordecrateused( var_1 );
        self notify( "captured", var_1 );
    }
}

handlekillstreaklimit( var_0 )
{
    if ( self.droptype == "loot" && !isdefined( getslotnumber( var_0 ) ) )
    {
        var_0 setclientomnvar( "ui_killstreak_limit", 1 );
        return 1;
    }

    return 0;
}

handleagentuse( var_0 )
{
    if ( !isplayer( var_0 ) )
    {
        if ( isdefined( var_0.disableplayeruseent ) )
            var_0.disableplayeruseent enableplayeruse( var_0 );

        var_0.disableplayeruseent = self;
        self disableplayeruse( var_0 );
        return 1;
    }

    return 0;
}

monitordoubletap( var_0 )
{
    var_0 endon( "disconnect" );
    var_1 = 0;

    for (;;)
    {
        if ( var_0 usebuttonpressed() )
        {
            var_1 = 0;

            while ( var_0 usebuttonpressed() )
            {
                var_1 = var_1 + 0.05;
                wait 0.05;
            }

            if ( var_1 >= 0.5 )
                continue;

            var_1 = 0;

            while ( !var_0 usebuttonpressed() && var_1 < 0.5 )
            {
                var_1 = var_1 + 0.05;
                wait 0.05;
            }

            if ( var_1 >= 0.5 )
                continue;

            level notify( "doubleTap", var_0 );
        }

        wait 0.05;
    }
}

doubletapthink()
{
    self endon( "death" );
    self endon( "capture" );
    self endon( "restarting_physics" );
    var_0 = 16384;

    if ( self.doubletapcount > 0 )
        wait 1.0;

    for (;;)
    {
        level waittill( "doubleTap", var_1 );

        if ( maps\mp\gametypes\_horde_util::isplayerinlaststand( var_1 ) )
            continue;

        if ( !maps\mp\_utility::isreallyalive( var_1 ) )
            continue;

        if ( isdefined( self.inuse ) && self.inuse )
            continue;

        if ( distance2dsquared( var_1.origin, self.origin ) < var_0 )
        {
            self notify( "doubleTap" );
            newrandomcrate();
            break;
        }
    }
}

newrandomcrate()
{
    self.doubletapcount++;
    playsoundatpos( self.origin, "mp_killconfirm_tags_drop" );

    if ( self.doubletapcount > 1 )
        var_0 = "ammo";
    else
    {
        var_1 = level.cratetypes[self.droptype][self.cratetype].raw_weight;
        maps\mp\killstreaks\_airdrop::changecrateweight( self.droptype, self.cratetype, 0 );
        var_0 = getrandomcratetypehorde( self.droptype );
        maps\mp\killstreaks\_airdrop::changecrateweight( self.droptype, self.cratetype, var_1 );
    }

    self.cratetype = var_0;
    self thread [[ level.cratetypes[self.droptype][self.cratetype].func ]]( self.droptype );
}

runlootdrop()
{
    var_0 = "loot";
    var_1 = 8;
    var_2 = randomint( level.cratetypes["loot"].size );
    var_3 = ( 0, 0, 75 );

    if ( !level.carepackages.size )
        maps\mp\gametypes\horde::sortdroplocations();

    for ( var_4 = 0; var_4 < var_1; var_4++ )
    {
        var_5 = level.hordedroplocations[level.droplocationindex];
        var_6 = getfinaldroplocation( var_5.tracelocation );

        if ( !isdefined( var_6 ) )
        {
            level.droplocationindex = maps\mp\gametypes\horde::getnextdroplocationindex( level.droplocationindex );
            continue;
        }

        var_7 = var_6;
        var_8 = getcratetypeforlootdrop( var_2 + var_4 );
        var_9 = level.players[0] maps\mp\killstreaks\_airdrop::createairdropcrate( level.players[0], var_0, var_8, var_7 + var_3, var_7, 3 );
        var_9.angles = ( 0, 0, 0 );
        var_9.droppingtoground = 1;
        var_9.friendlymodel hide();
        wait 0.05;
        var_9 thread maps\mp\killstreaks\_airdrop::waitfordropcratemsg( var_9, ( randomint( 25 ), randomint( 25 ), randomint( 25 ) ), var_0, var_8, 800, 1 );
        level thread removeatroundend( var_9 );
        level.droplocationindex = maps\mp\gametypes\horde::getnextdroplocationindex( level.droplocationindex );
        wait 0.05;
        playfx( level._effect["crate_teleport"], var_9.origin, ( 0, 0, 1 ) );
        playsoundatpos( var_9.origin, "crate_teleport_safeguard" );
        var_9.friendlymodel show();
    }
}

lootcrateeffect( var_0 )
{
    var_0 waittill( "physics_finished" );
    var_1 = spawnfx( level._effect["loot_crtae"], var_0.origin - ( 0, 0, 16 ) );
    triggerfx( var_1 );
    var_0 common_scripts\utility::waittill_any_timeout_no_endon_death( level.specialroundtime, "death" );
    var_1 delete();
}

getfinaldroplocation( var_0 )
{
    if ( !isplayernearlocation( var_0 ) )
        return var_0;

    var_1 = getnodesinradiussorted( var_0, 256, 64, 128, "Path" );

    foreach ( var_3 in var_1 )
    {
        if ( !isplayernearlocation( var_3.origin ) )
            return var_3.origin;
    }

    return undefined;
}

isplayernearlocation( var_0 )
{
    var_1 = 0;

    foreach ( var_3 in level.participants )
    {
        var_4 = distance2dsquared( var_3.origin, var_0 );

        if ( var_4 < 4096 )
        {
            var_1 = 1;
            break;
        }
    }

    return var_1;
}

getcratetypeforlootdrop( var_0 )
{
    while ( var_0 >= level.cratetypes["loot"].size )
        var_0 = var_0 - level.cratetypes["loot"].size;

    var_1 = getarraykeys( level.cratetypes["loot"] );
    var_2 = level.cratetypes["loot"][var_1[var_0]].type;
    return var_2;
}

removeonnextairdrop( var_0 )
{
    var_0 endon( "death" );
    var_0 endon( "doubleTap" );
    var_0 endon( "restarting_physics" );
    level waittill( "airSupport" );

    while ( isdefined( var_0.inuse ) && var_0.inuse )
        common_scripts\utility::waitframe();

    var_0 maps\mp\killstreaks\_airdrop::deletecrate();
}

removeatroundend( var_0 )
{
    var_0 endon( "death" );
    level waittill( "round_ended" );

    while ( isdefined( var_0.inuse ) && var_0.inuse )
        common_scripts\utility::waitframe();

    var_0 maps\mp\killstreaks\_airdrop::deletecrate();
}

getrandomcratetypehorde( var_0 )
{
    var_1 = getnumpowerweapons();
    var_2 = randomint( level.cratemaxval[var_0] );
    var_3 = undefined;

    foreach ( var_5 in level.cratetypes[var_0] )
    {
        var_6 = var_5.type;

        if ( !level.cratetypes[var_0][var_6].weight )
            continue;

        if ( !canpickcrate( var_6, var_1 ) )
            continue;

        var_3 = var_6;

        if ( level.cratetypes[var_0][var_6].weight > var_2 )
            break;
    }

    return var_3;
}

getnumpowerweapons()
{
    var_0 = 0;

    foreach ( var_2 in level.players )
    {
        if ( !maps\mp\gametypes\_horde_util::isonhumanteam( var_2 ) )
            continue;

        if ( var_2 hasweapon( "iw6_magnumhorde_mp_fmj" ) )
            var_0++;

        if ( var_2 maps\mp\_utility::_hasperk( "specialty_triggerhappy" ) )
            var_0++;
    }

    var_4 = getentarray( "care_package", "targetname" );

    foreach ( var_6 in var_4 )
    {
        if ( var_6.cratetype == "iw6_magnumhorde_mp_fmj" )
            var_0++;

        if ( var_6.cratetype == "specialty_triggerhappy" )
            var_0++;
    }

    return var_0;
}

ispowerweapon( var_0 )
{
    return var_0 == "iw6_magnumhorde_mp_fmj" || var_0 == "specialty_triggerhappy";
}

canpickcrate( var_0, var_1 )
{
    if ( ispowerweapon( var_0 ) && var_1 >= 2 )
        return 0;

    return 1;
}

setcratelook( var_0, var_1, var_2 )
{
    var_0.friendlymodel hudoutlineenable( var_1, 0 );
    var_0.outlinecolor = var_1;

    foreach ( var_4 in var_0.entityheadicons )
        var_4.color = var_2;
}

setcratelooksbasedontap( var_0 )
{
    if ( var_0.doubletapcount == 0 )
        setcratelook( var_0, 2, ( 0.431, 0.745, 0.235 ) );
    else
        setcratelook( var_0, 5, ( 0.804, 0.804, 0.035 ) );
}
