ztavern/t6/uncompiled mods/customperks.gsc
2024-10-18 00:19:19 +00:00

1067 lines
41 KiB
Text

//PLUTO v1 - TOWN Survival with Dogs
#include maps/mp/_utility;
#include common_scripts/utility;
#include maps/mp/gametypes_zm/_hud_util;
#include maps/mp/zombies/_zm_weapons;
#include maps/mp/zombies/_zm_stats;
#include maps/mp/gametypes_zm/_spawnlogic;
#include maps/mp/animscripts/traverse/shared;
#include maps/mp/animscripts/utility;
#include maps/mp/zombies/_load;
#include maps/mp/_createfx;
#include maps/mp/_music;
#include maps/mp/_busing;
#include maps/mp/_script_gen;
#include maps/mp/gametypes_zm/_globallogic_audio;
#include maps/mp/gametypes_zm/_tweakables;
#include maps/mp/_challenges;
#include maps/mp/gametypes_zm/_weapons;
#include maps/mp/_demo;
#include maps/mp/gametypes_zm/_hud_message;
#include maps/mp/gametypes_zm/_spawning;
#include maps/mp/gametypes_zm/_globallogic_utils;
#include maps/mp/gametypes_zm/_spectating;
#include maps/mp/gametypes_zm/_globallogic_spawn;
#include maps/mp/gametypes_zm/_globallogic_ui;
#include maps/mp/gametypes_zm/_hostmigration;
#include maps/mp/gametypes_zm/_globallogic_score;
#include maps/mp/gametypes_zm/_globallogic;
#include maps/mp/zombies/_zm;
#include maps/mp/zombies/_zm_ai_faller;
#include maps/mp/zombies/_zm_spawner;
#include maps/mp/zombies/_zm_pers_upgrades_functions;
#include maps/mp/zombies/_zm_pers_upgrades;
#include maps/mp/zombies/_zm_score;
#include maps/mp/animscripts/zm_run;
#include maps/mp/animscripts/zm_death;
#include maps/mp/zombies/_zm_blockers;
#include maps/mp/animscripts/zm_shared;
#include maps/mp/animscripts/zm_utility;
#include maps/mp/zombies/_zm_ai_basic;
#include maps/mp/zombies/_zm_laststand;
#include maps/mp/zombies/_zm_net;
#include maps/mp/zombies/_zm_audio;
#include maps/mp/gametypes_zm/_zm_gametype;
#include maps/mp/_visionset_mgr;
#include maps/mp/zombies/_zm_equipment;
#include maps/mp/zombies/_zm_power;
#include maps/mp/zombies/_zm_server_throttle;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zombies/_zm_zonemgr;
#include maps/mp/zombies/_zm_perks;
#include maps/mp/zombies/_zm_melee_weapon;
#include maps/mp/zombies/_zm_audio_announcer;
#include maps/mp/zombies/_zm_magicbox;
#include maps/mp/zombies/_zm_utility;
#include maps/mp/zombies/_zm_ai_dogs;
#include maps/mp/gametypes_zm/_hud_message;
#include maps/mp/zombies/_zm_game_module;
#include maps/mp/zombies/_zm_buildables;
#include codescripts/character;
#include maps/mp/zombies/_zm_weap_riotshield;
init()
{
// if( (getdvar( "mapname" ) == "zm_transit" || getdvar( "mapname" ) == "zm_highrise") && getdvar ( "g_gametype") == "zstandard" )
// {
precacheshader("menu_mp_lobby_icon_film");
precacheshader( "menu_mp_lobby_icon_customgamemode" );
precacheshader( "waypoint_revive" );
precacheshader( "killiconheadshot" );
precacheshader( "menu_lobby_icon_twitter" );
precacheshader( "hud_grenadeicon" );
precacheshader( "menu_mp_weapons_1911" );
precacheshader( "menu_mp_lobby_icon_screenshot" );
precacheshader( "damage_feedback" );
precacheshader( "zombies_rank_1" );
precacheshader( "zombies_rank_3" );
precacheshader( "zombies_rank_2" );
precacheshader( "zombies_rank_4" );
precacheshader( "menu_mp_weapons_xm8" );
precacheshader( "faction_cdc" );
precacheshader( "menu_mp_weapons_hamr" );
precacheshader( "zombies_rank_5" );
precacheshader( "hud_icon_sticky_grenade" );
precacheshader( "specialty_instakill_zombies" );
precacheshader( "menu_mp_weapons_1911" );
precacheshader( "hud_icon_colt" );
precachemodel("p6_zm_buildable_sq_meteor");
precachemodel( "collision_player_wall_512x512x10" );
precachemodel( "collision_physics_512x512x10" );
precachemodel( "t5_foliage_tree_burnt03" );
precachemodel( "p_rus_door_roller" );
precachemodel( "ch_tombstone1" );
precachemodel( "collision_geo_256x256x10_standard" );
precachemodel( "zombie_vending_tombstone_on" );
precachemodel( "zombie_vending_revive_on" );
precachemodel( "zombie_vending_sleight_on" );
precachemodel( "zombie_vending_doubletap2_on" );
precachemodel( "zombie_pickup_perk_bottle" );
precachemodel( "zm_collision_perks1" );
precachemodel( "p6_zm_screecher_hole" );
precachemodel( "p_cub_door01_wood_fullsize" );
precachemodel( "veh_t6_civ_microbus_dead" );
precachemodel( "p_rus_door_white_window_plain_left" );
if (level.script != "zm_prison")
{
level._effect["fx_zombie_cola_revive_on"] = loadfx( "misc/fx_zombie_cola_revive_on" );
level._effect["fx_zombie_cola_dtap_on"] = loadfx( "misc/fx_zombie_cola_dtap_on" );
}
level._effect["fx_zombie_cola_on"] = loadfx( "misc/fx_zombie_cola_on" );
if (!(level.script == "zm_tomb" || level.script == "zm_prison"))
{
level._effect["fx_zmb_wall_buy_taseknuck"] = loadfx( "maps/zombie/fx_zmb_wall_buy_taseknuck" );
level._effect["fx_zmb_wall_buy_bowie"] = loadfx( "maps/zombie/fx_zmb_wall_buy_bowie" );
}
// level._effect["fx_default_explosion"] = loadfx( "explosions/fx_default_explosion" );
if( level.script == "zm_buried" || level.script == "zm_tomb" )
{
level._effect["fx_default_explosion"] = level._effect[ "divetonuke_groundhit"];
}
else
{
level._effect["fx_default_explosion"] = loadfx( "explosions/fx_default_explosion" );
}
level.town = 1;
level.diner = 0;
level thread onPlayerConnect();
level thread perk_machine_removal( "specialty_scavenger" );
init_custom_map();
if(level.script != "zm_buried" && level.script != "zm_highrise" && level.script != "zm_tomb" && level.script != "zm_prison")
level.get_player_weapon_limit = ::custom_get_player_weapon_limit;
level.zombie_last_stand = ::LastStand;
level.custom_vending_precaching = ::default_vending_precaching;
register_player_damage_callback( ::damage_callback );
level.player_out_of_playable_area_monitor = 0;
level.perk_purchase_limit = 50;
if( getdvar( "mapname" ) == "zm_transit" && getdvar ( "g_gametype" ) == "zstandard" )
{
foreach( weapon in level.zombie_weapons)
{
weapon.is_in_box = 1;
}
}
// }
}
onPlayerConnect()
{
while( 1 )
{
level waittill( "connected", player );
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
level endon( "game_ended" );
self waittill( "spawned_player" );
self.perkarray = [];
self.dying_wish_on_cooldown = 0;
self.perk_reminder = 0;
self.perk_count = 0;
self.num_perks = 0;
self thread removeperkshader();
self thread perkboughtcheck();
self thread damagehitmarker();
for(;;)
{
self waittill( "spawned_player" );
if(self.score < 1500)
{
self.score = 1500;
}
}
}
damagehitmarker()
{
self thread startwaiting();
self.hitmarker = newdamageindicatorhudelem( self );
self.hitmarker.horzalign = "center";
self.hitmarker.vertalign = "middle";
self.hitmarker.x = -12;
self.hitmarker.y = -12;
self.hitmarker.alpha = 0;
self.hitmarker setshader( "damage_feedback", 24, 48 );
}
startwaiting()
{
while( 1 )
{
foreach( zombie in getaiarray( level.zombie_team ) )
{
if( !(IsDefined( zombie.waitingfordamage )) )
{
zombie thread hitmark();
}
}
wait 0.25;
}
}
hitmark()
{
self endon( "killed" );
self.waitingfordamage = 1;
while( 1 )
{
self waittill( "damage", amount, attacker, dir, point, mod );
attacker.hitmarker.alpha = 0;
if( isplayer( attacker ) )
{
if( isalive( self ) )
{
attacker.hitmarker.color = ( 1, 1, 1 );
attacker.hitmarker.alpha = 1;
attacker.hitmarker fadeovertime( 1 );
attacker.hitmarker.alpha = 0;
}
else
{
attacker.hitmarker.color = ( 1, 0, 0 );
attacker.hitmarker.alpha = 1;
attacker.hitmarker fadeovertime( 1 );
attacker.hitmarker.alpha = 0;
self notify( "killed" );
}
}
}
}
init_custom_map()
{
if( getdvar( "mapname" ) == "zm_transit" && getdvar ( "g_gametype" ) == "zstandard" )
{
perk_system( "script_model", ( 1856, -810.722, -55.875), "zombie_vending_tombstone_on", ( 0, 180, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "tombstone_light", "deadshot" );
perk_system( "script_model", ( 2460, -780, -55.875 ), "zombie_vending_tombstone_on", ( 0, 225, 0 ), "custom", "mus_perks_doubletap_sting", "Burn Heart", 2500, "jugger_light", "Burn_Heart" );
perk_system( "script_model", ( 901.86, -1575.574, -47.875 ), "zombie_vending_tombstone_on", ( 0, 180, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "tombstone_light", "WIDOWS_WINE" );
perk_system( "script_model", ( 450, -300.574, -61.875 ), "zombie_vending_tombstone_on", ( 0, 45, 0 ), "custom", "mus_perks_packa_sting", "Electric Cherry", 2000, "tombstone_light", "ELECTRIC_CHERRY" ); // 613,-250,z 0,0,0
perk_system( "script_model", ( 1069, -1133, 120.125 ), "zombie_vending_tombstone_on", ( 0, 180, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "tombstone_light", "Ethereal_Razor" );
perk_system( "script_model", ( 1823.86, 670.574, -55.875 ), "zombie_vending_tombstone_on", ( 0, 45, 0 ), "custom", "mus_perks_doubletap_sting", "Mule Kick", 4000, "tombstone_light", "MULE" );
perk_system( "script_model", ( 840, 603.809, -40.875 ), "zombie_vending_tombstone_on", ( 0, 0, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "tombstone_light", "PHD_FLOPPER" );
perk_system( "script_model", ( 2358, -87, -55.875 ), "zombie_vending_tombstone_on", ( 0, -90, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "tombstone_light", "Downers_Delight" );
perk_system( "script_model", ( 2015, 858, -56.875 ), "zombie_vending_tombstone_on", ( 0, -90, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "tombstone_light", "Dying_Wish" );
perk_system( "script_model", ( 559, -1364, 120.125 ), "zombie_vending_tombstone_on", ( 0, 180, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "tombstone_light", "Ammo_Regen" );
}
if( level.script == "zm_highrise")
{
perk_system( "script_model", ( 1884.42, 491.946, 1298.72), "zombie_vending_jugg_on", ( 0, 418.728, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "tombstone_light", "deadshot" );
// perk_system( "script_model", ( 2764.64, 1868.03, 1391.01 ), "zombie_vending_jugg_on", ( 0, 384.236, 0 ), "custom", "mus_perks_doubletap_sting", "Burn Heart", 2500, "jugger_light", "Burn_Heart" );
perk_system( "script_model", ( 1978.25, 597.657, 2704.13 ), "zombie_vending_jugg_on", ( 0, 329.291, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "tombstone_light", "WIDOWS_WINE" );
perk_system( "script_model", ( 1415.64, 2108.36, 3220.26 ), "zombie_vending_jugg_on", ( 0, 406.661, 0 ), "custom", "mus_perks_packa_sting", "Electric Cherry", 2000, "tombstone_light", "ELECTRIC_CHERRY" ); // 613,-250,z 0,0,0
perk_system( "script_model", ( 1901.97, 1431.36, 3216.13 ), "zombie_vending_jugg_on", ( 0, 404.762, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "tombstone_light", "Ethereal_Razor" );
// perk_system( "script_model", ( 1891.64, 1119.64, 3048.36 ), "zombie_vending_jugg_on", ( 0, 45, 0 ), "custom", "mus_perks_doubletap_sting", "Mule Kick", 4000, "tombstone_light", "MULE" );
perk_system( "script_model", ( 1429.29, -453.397, 2880.13 ), "zombie_vending_jugg_on", ( 0, 149.1426, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "tombstone_light", "PHD_FLOPPER" );
perk_system( "script_model", ( 1109.64, 2701.36, 3043.82 ), "zombie_vending_jugg_on", ( 0, 394.926, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "tombstone_light", "Downers_Delight" );
perk_system( "script_model", ( 1706.28, 1055.64, 3395.1 ), "zombie_vending_jugg_on", ( 0, 180, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "tombstone_light", "Dying_Wish" );
perk_system( "script_model", ( 2269.17, 182.377, 2880.13 ), "zombie_vending_jugg_on", ( 0, 418.596, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "tombstone_light", "Ammo_Regen" );
}
if( level.script == "zm_buried")
{
perk_system( "script_model", ( 1618.14, 1513.46, 200.62), "zombie_vending_jugg_on", ( 0, 250.147, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "sleight_light", "deadshot" );
// perk_system( "script_model", ( -1176.36, 508.26, 144.125 ), "zombie_vending_jugg_on", ( 0, 448.269, 0 ), "custom", "mus_perks_doubletap_sting", "Burn Heart", 2500, "sleight_light", "Burn_Heart" );
perk_system( "script_model", ( -1176.36, 510.625, 144.125 ), "zombie_vending_jugg_on", ( 0, 449.412, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "sleight_light", "WIDOWS_WINE" );
perk_system( "script_model", ( -448.859, 131.435, 143.491 ), "zombie_vending_jugg_on", ( 0, 180.3, 0 ), "custom", "mus_perks_packa_sting", "Electric Cherry", 2000, "sleight_light", "ELECTRIC_CHERRY" ); // 613,-250,z 0,0,0
perk_system( "script_model", ( 890.359, -840.206, -22.8006 ), "zombie_vending_jugg_on", ( 0, 270.367, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "sleight_light", "Ethereal_Razor" );
// perk_system( "script_model", ( 1891.64, 1119.64, 3048.36 ), "zombie_vending_jugg_on", ( 0, 45, 0 ), "custom", "mus_perks_doubletap_sting", "Mule Kick", 4000, "sleight_light", "MULE" );
perk_system( "script_model", ( 572.507, -712.359, 149.95 ), "zombie_vending_jugg_on", ( 0, 178.4505, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "sleight_light", "PHD_FLOPPER" );
perk_system( "script_model", ( 488.324, 727.641, 176.125 ), "zombie_vending_jugg_on", ( 0, 178.9998, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "sleight_light", "Downers_Delight" );
perk_system( "script_model", ( -1298.32, -837.178, -23.875 ), "zombie_vending_jugg_on", ( 0, 91.37286, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "sleight_light", "Dying_Wish" );
perk_system( "script_model", ( -122.161, -1469.21, 168.125 ), "zombie_vending_jugg_on", ( 0, 448.841, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "sleight_light", "Ammo_Regen" );
}
if( level.script == "zm_nuked")
{
perk_system( "script_model", ( 28.8155, -356.18, -65.8346 ), "zombie_vending_jugg_on", ( 0, 129.8755, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "sleight_light", "deadshot" );
// perk_system( "script_model", ( ), "zombie_vending_jugg_on", ( ), "custom", "mus_perks_doubletap_sting", "Burn Heart", 2500, "sleight_light", "Burn_Heart" );
perk_system( "script_model", ( -954.194, 714.594, 84.0385 ), "zombie_vending_jugg_on", ( 0, 429.46, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "sleight_light", "WIDOWS_WINE" );
perk_system( "script_model", ( 683.524, 618.635, -56.875 ), "zombie_vending_jugg_on", ( 0, 102.5635, 0 ), "custom", "mus_perks_packa_sting", "Electric Cherry", 2000, "sleight_light", "ELECTRIC_CHERRY" ); // 613,-250,z 0,0,0
perk_system( "script_model", ( 1420.35, -21.4313, -63.8849 ), "zombie_vending_jugg_on", ( 0, 194.085, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "sleight_light", "Ethereal_Razor" );
perk_system( "script_model", ( 618.292, -188.322, -56.3686 ), "zombie_vending_jugg_on", ( 0, 105.5011, 0 ), "custom", "mus_perks_doubletap_sting", "Mule Kick", 4000, "sleight_light", "MULE" );
perk_system( "script_model", ( 1152.5, 160.6, 79.125 ), "zombie_vending_jugg_on", ( 0, 347.541, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "sleight_light", "PHD_FLOPPER" );
perk_system( "script_model", ( 156.738, 513.899, -62.3141 ), "zombie_vending_jugg_on", ( 0, 101.8164, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "sleight_light", "Downers_Delight" );
perk_system( "script_model", ( -646.863, 271.522, -55.875 ), "zombie_vending_jugg_on", ( 0, 160.8405, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "sleight_light", "Dying_Wish" );
perk_system( "script_model", ( -1582.46, 112.604, -63.2092 ), "zombie_vending_jugg_on", ( 0, 250.829, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "sleight_light", "Ammo_Regen" );
}
if( level.script == "zm_tomb")
{
perk_system( "script_model", ( 184.995, -2422.49, 50.125), "zombie_vending_jugg_on", ( 0, 369.091, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "sleight_light", "deadshot" );
perk_system( "script_model", ( 160.359, 3781.17, -351.875 ), "zombie_vending_jugg_on", ( 0, 266.122, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "sleight_light", "WIDOWS_WINE" );
perk_system( "script_model", ( 375.771, 2119.22, -122.951 ), "zombie_vending_jugg_on", ( 0, 179.5935, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "sleight_light", "Ethereal_Razor" );
perk_system( "script_model", ( -335.604, -187.006, 325.273 ), "zombie_vending_jugg_on", ( 0, 132.9565, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "sleight_light", "PHD_FLOPPER" );
perk_system( "script_model", ( 924.47, 360.72, 131.005 ), "zombie_vending_jugg_on", ( 0, 373.266, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "sleight_light", "Downers_Delight" );
perk_system( "script_model", ( 1345.09, -3822.62, 302.125 ), "zombie_vending_jugg_on", ( 0, 270.593, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "sleight_light", "Dying_Wish" );
perk_system( "script_model", ( 2972.36, 5218.91, -378.566 ), "zombie_vending_jugg_on", ( 0, 270.379, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "sleight_light", "Ammo_Regen" );
}
if( level.script == "zm_prison")
{
perk_system( "script_model", ( -1344.65, 5598.31, -71.875 ), "p6_zm_al_vending_jugg_on", ( 0, 98.34412, 0 ), "custom", "mus_perks_deadshot_sting", "Deadshot", 2000, "sleight_light", "deadshot" );
perk_system( "script_model", ( 3763.64, 9669.99, 1704.13 ), "p6_zm_al_vending_jugg_on", ( 0, 90, 0 ), "custom", "mus_perks_deadshot_sting", "Widow's Wine", 4000, "sleight_light", "WIDOWS_WINE" );
perk_system( "script_model", ( 2160.71, 9247.64, 1558.13 ), "p6_zm_al_vending_jugg_on", ( 0, 179.1815, 0 ), "custom", "mus_perks_doubletap_sting", "Ethereal Razor", 3500, "sleight_light", "Ethereal_Razor" );
perk_system( "script_model", ( 597.633, 8546.86, 832.125 ), "p6_zm_al_vending_jugg_on", ( 0, 221.984, 0 ), "custom", "mus_perks_doubletap_sting", "Mule Kick", 4000, "sleight_light", "MULE" );
perk_system( "script_model", ( 456.359, 8679.51, 1128.13 ), "p6_zm_al_vending_jugg_on", ( 0, 269.533, 0 ), "custom", "mus_perks_packa_sting", "PhD Flopper", 2500, "sleight_light", "PHD_FLOPPER" );
perk_system( "script_model", ( -685.943, 9199.64, 1336.13 ), "p6_zm_al_vending_jugg_on", ( 0, 178.5443, 0 ), "custom", "mus_perks_doubletap_sting", "Downer's Delight", 2000, "sleight_light", "Downers_Delight" );
perk_system( "script_model", ( 1728.56, 10688.4, 1336.13 ), "p6_zm_al_vending_jugg_on", ( 0, 357.896, 0 ), "custom", "mus_perks_doubletap_sting", "Dying Wish", 6000, "sleight_light", "Dying_Wish" );
perk_system( "script_model", ( 1367.28, 10096.4, 1128.13 ), "p6_zm_al_vending_jugg_on", ( 0, 358.687, 0 ), "custom", "mus_perks_doubletap_sting", "Ammo Regen", 3000, "sleight_light", "Ammo_Regen" );
}
}
play_fx( fx )
{
playfxontag( level._effect[ fx ], self, "tag_origin" );
}
defaulth_vending_precaching()
{
level._effect[ "sleight_light" ] = loadfx( "misc/fx_zombie_cola_on" );
level._effect[ "tombstone_light" ] = loadfx( "misc/fx_zombie_cola_on" );
level._effect[ "revive_light" ] = loadfx( "misc/fx_zombie_cola_revive_on" );
level._effect[ "marathon_light" ] = loadfx( "maps/zombie/fx_zmb_cola_staminup_on" );
level._effect[ "jugger_light" ] = loadfx( "misc/fx_zombie_cola_jugg_on" );
level._effect[ "doubletap_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" );
level._effect[ "deadshot_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" );
level._effect[ "additionalprimaryweapon_light" ] = loadfx( "misc/fx_zombie_cola_arsenal_on" );
level._effect[ "packapunch_fx" ] = loadfx( "maps/zombie/fx_zombie_packapunch" );
level._effect[ "wall_taseknuck" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_taseknuck" );
}
playchalkfx(effect, origin, angles)
{
fx = SpawnFX(level._effect[ effect ], origin,AnglesToForward(angles),AnglesToUp(angles));
TriggerFX(fx);
level waittill("connected", player);
fx Delete();
}
perk_system( script, pos, model, angles, type, sound, name, cost, fx, perk)
{
col = spawn( script, pos);
col setmodel( model );
col.angles = angles;
x = spawn( script, pos );
x setmodel( "zm_collision_perks1" );
x.angles = angles;
col thread buy_system( perk, sound, name, cost, type );
col thread play_fx( fx );
}
buy_system( perk, sound, name, cost, type )
{
self endon( "game_ended" );
while( 1 )
{
foreach( player in level.players )
{
if(!player.machine_is_in_use)
{
if( distance( self.origin, player.origin ) <= 70 )
{
player thread SpawnHint( self.origin, 30, 30, "HINT_ACTIVATE", "Hold ^3&&1^7 for " + name + " [Cost: " + cost + "]" );
if(player usebuttonpressed() && !player hasperk(perk) && !player hascustomperk(perk) && player.score >= cost && !player maps/mp/zombies/_zm_laststand::player_is_in_laststand())
{
player.machine_is_in_use = 1;
player playsound( "zmb_cha_ching" );
player.score -= cost;
player playsound( sound );
player thread drawshader_and_shadermove( perk, 1, 1, type );
wait 4;
player.machine_is_in_use = 0;
}
else
{
if( player usebuttonpressed() && player.score < cost )
{
player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 );
}
}
}
}
}
wait 0.1;
}
}
hascustomperk(perk)
{
for(i = 0; i < self.perkarray.size; i++)
{
if(self.perkarray[i].name == perk)
{
return 1;
}
}
return 0;
}
removeperkshader()
{
for(;;)
{
self waittill_any_return( "fake_death", "player_downed", "player_revived", "spawned_player", "disconnect", "death" );
self.num_perks = 0;
self.perk_reminder = 0;
self.perk_count = 0;
self.dying_wish_on_cooldown = 0;
self removeallcustomshader();
self.perkarray = [];
self notify( "stopcustomperk" );
self.bleedout_time = 30;
self.ignore_lava_damage = 0;
self setclientfieldtoplayer( "deadshot_perk", 0 );
}
}
removeallcustomshader()
{
for(i = 0; i < self.perkarray.size; i++)
{
self.perkarray[i] destroy();
}
}
drawshader( shader, x, y, width, height, color, alpha, sort )
{
hud = newclienthudelem( self );
hud.elemtype = "icon";
hud.color = color;
hud.alpha = alpha;
hud.sort = sort;
hud.children = [];
hud.hidewheninmenu = 1;
hud setparent( level.uiparent );
hud setshader( shader, width, height );
hud.x = x;
hud.y = y;
return hud;
}
perkboughtcheck()
{
self endon("death");
self endon("disconnect");
for(;;)
{
self.perk_reminder = self.num_perks;
self waittill("perk_acquired");
n = 1;
if(!(self.num_perks > self.perk_reminder))
{
n = (self.num_perks - self.perk_reminder);
self.num_perks = (self.perk_reminder + n);
}
self.perk_reminder = self.num_perks;
self.perk_count += n;
self drawshader_and_shadermove("none", 0, 0, "normal"); //modified to remove perk alignement since 2 perk lines Added "normal" for type check
}
}
drawshader_and_shadermove(perk, custom, print, type)
{
if(custom)
{
self allowProne(false);
self allowSprint(false);
self disableoffhandweapons();
self disableweaponcycling();
weapona = self getcurrentweapon();
weaponb = "zombie_perk_bottle_jugg";
self giveweapon( weaponb );
self switchtoweapon( weaponb );
self waittill( "weapon_change_complete" );
self enableoffhandweapons();
self enableweaponcycling();
self takeweapon( weaponb );
self switchtoweapon( weapona );
self maps/mp/zombies/_zm_audio::playerexert( "burp" );
self setblur( 4, 0.1 );
wait 0.1;
self setblur( 0, 0.1 );
self allowProne(true);
self allowSprint(true);
}
yPerk = 325;
if (level.script == "zm_buried")
{
yPerk = 300;
}
x = -408;
for(i = 0; i < self.perkarray.size; i++)
{
if (type == "custom")
{
x += 15;
}
}
/*if (perk == "custom")
{
for(i = 0; i < self.perkarray.size; i++)
{
self.perkarray[i].x = self.perkarray[i].x + 30;
}
}*/
if(perk == "Downers_Delight")
{
self.perk1back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk1front = self drawshader( "waypoint_revive", x, yPerk, 23, 23, ( 0, 1, 1 ), 100, 0 );
self.perk1front.name = perk;
self.perkarray[self.perkarray.size] = self.perk1front;
self.perk1back.name = perk;
self.perkarray[self.perkarray.size] = self.perk1back;
self.num_perks++;
self thread DDown();
if(print)
{
self iprintln("^9Downer's Delight");
wait 0.2;
self iprintln("This Perk will increase players bleedout time by 10 seconds and current weapons is used in laststand.");
}
}
if(perk == "MULE")
{
self.perk2back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk2front = self drawshader( "menu_mp_weapons_1911", x, yPerk, 22, 22, ( 0, 1, 0 ), 100, 0 );
self.perk2front.name = perk;
self.perkarray[self.perkarray.size] = self.perk2front;
self.perk2back.name = perk;
self.perkarray[self.perkarray.size] = self.perk2back;
self.num_perks++;
if(print)
{
self iprintln("^9Mule Kick");
wait 0.2;
self iprintln("This Perk enables additional primary weapon slot for player. ");
}
}
if(perk == "PHD_FLOPPER")
{
self.perk3back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk3front = self drawshader( "hud_icon_sticky_grenade", x, yPerk, 23, 23, (1, 0, 1 ), 100, 0 );
self.perk3front.name = perk;
self.perkarray[self.perkarray.size] = self.perk3front;
self.perk3back.name = perk;
self.perkarray[self.perkarray.size] = self.perk3back;
self.num_perks++;
if(print)
{
self iprintln("^9PhD Flopper");
wait 0.2;
self iprintln("This Perk removes explosion and fall damage also player creates explosion when dive to prone.");
}
}
if(perk == "Victorious_Tortoise")
{
self.perk4back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 200, 0 ), 100, 0 );
self.perk4front = self drawshader( "zombies_rank_2", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk4front.name = perk;
self.perkarray[self.perkarray.size] = self.perk4front;
self.perk4back.name = perk;
self.perkarray[self.perkarray.size] = self.perk4back;
self.num_perks++;
self thread start_vt();
if(print)
{
self iprintln("^9Victorious Tortoise");
wait 0.2;
self iprintln("This Perk allows shield block damage from all directions when in use.");
}
}
if(perk == "ELECTRIC_CHERRY")
{
self.perk5back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 200 ), 100, 0 );
self.perk5front = self drawshader( "zombies_rank_5", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk5front.name = perk;
self.perkarray[self.perkarray.size] = self.perk5front;
self.perk5back.name = perk;
self.perkarray[self.perkarray.size] = self.perk5back;
self.num_perks++;
self thread start_ec();
if(print)
{
self iprintln("^9Electric Cherry");
wait 0.2;
self iprintln("This Perk creates an electric shockwave around the player whenever they reload.");
}
}
if(perk == "WIDOWS_WINE")
{
self.perk6back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk6front = self drawshader( "zombies_rank_3", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk6front.name = perk;
self.perkarray[self.perkarray.size] = self.perk6front;
self.perk6back.name = perk;
self.perkarray[self.perkarray.size] = self.perk6back;
self.num_perks++;
self takeweapon( self get_player_lethal_grenade() );
self set_player_lethal_grenade( "sticky_grenade_zm" );
self giveweapon("sticky_grenade_zm");
self thread ww_nades();
if(print)
{
self iprintln("^9Widow's Wine");
wait 0.2;
self iprintln("This Perk damages zombies around the player when player is hit and grenades are upgraded.");
}
}
if(perk == "Ethereal_Razor")
{
self.perk7back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 200, 0, 0 ), 100, 0 );
self.perk7front = self drawshader( "zombies_rank_4", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk7front.name = perk;
self.perkarray[self.perkarray.size] = self.perk7front;
self.perk7back.name = perk;
self.perkarray[self.perkarray.size] = self.perk7back;
self.num_perks++;
if(print)
{
self iprintln("^9Ethereal Razor");
wait 0.2;
self iprintln("This Perk deals extra damage when player using melee attacks and restores a small amount of health.");
}
}
if(perk == "Ammo_Regen")
{
self.perk8back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk8front = self drawshader( "menu_mp_lobby_icon_customgamemode", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk8front.name = perk;
self.perkarray[self.perkarray.size] = self.perk8front;
self.perk8back.name = perk;
self.perkarray[self.perkarray.size] = self.perk8back;
self.num_perks++;
self thread ammoregen();
self thread grenadesregen();
if(print)
{
self iprintln("^9Ammo Regen");
wait 0.2;
self iprintln("This Perk will slowly regenerades players ammonation and grenades.");
}
}
if(perk == "Burn_Heart")
{
self.perk9back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 200, 0, 0 ), 100, 0 );
self.perk9front = self drawshader( "faction_cdc", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk9front.name = perk;
self.perkarray[self.perkarray.size] = self.perk9front;
self.perk9back.name = perk;
self.perkarray[self.perkarray.size] = self.perk9back;
self.num_perks++;
self.ignore_lava_damage = 1;
if(print)
{
self iprintln("^9Burn Heart");
wait 0.2;
self iprintln("This Perk removes lava damage.");
}
}
if(perk == "Dying_Wish")
{
self.perk10back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 200, 0, 0 ), 100, 0 );
self.perk10front = self drawshader( "zombies_rank_5", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk10front.name = perk;
self.perkarray[self.perkarray.size] = self.perk10front;
self.perk10back.name = perk;
self.perkarray[self.perkarray.size] = self.perk10back;
self.num_perks++;
self thread dying_wish_checker();
if(print)
{
self iprintln("^9Dying Wish");
wait 0.2;
self iprintln("This Perk allow player to go berserker mode for 9 seconds instead of laststand.");
wait 0.1;
self iprintln(" (cooldown 5mins and it's increased 30sec every time perk is used. - max 10mins) ");
}
}
if(perk == "deadshot")
{
self.perk11back = self drawshader( "specialty_marathon_zombies", x, yPerk, 24, 24, ( 0, 0, 0 ), 100, 0 );
self.perk11front = self drawshader( "killiconheadshot", x, yPerk, 23, 23, ( 1, 1, 1 ), 100, 0 );
self.perk11front.name = perk;
self.perkarray[self.perkarray.size] = self.perk11front;
self.perk11back.name = perk;
self.perkarray[self.perkarray.size] = self.perk11back;
self.num_perks++;
self setclientfieldtoplayer( "deadshot_perk", 1 );
if(print)
{
self iprintln("^9Deadshot");
wait 0.2;
self iprintln("This Perk aims automatically enemys head instead of body.");
}
}
}
custom_get_player_weapon_limit( player )
{
weapon_limit = 2;
if ( player hascustomperk("MULE") )
{
weapon_limit = 3;
}
else
{
weapons = self getWeaponsListPrimaries();
if(weapons.size > 2)
{
self takeWeapon(weapons[2]);
}
}
return weapon_limit;
}
ammoregen()
{
self endon( "disconnect" );
level endon( "end_game" );
self endon( "stopcustomperk" );
for(;;)
{
if(!self GetCurrentWeapon() == "" && !is_grenade_launcher( self GetCurrentWeapon()) )
{
stockcount = self getweaponammostock( self GetCurrentWeapon() );
self setWeaponAmmostock( self GetCurrentWeapon(), stockcount + 1 );
wait 2;
}
wait 0.1;
}
}
grenadesregen()
{
self endon( "disconnect" );
level endon( "end_game" );
self endon( "stopcustomperk" );
for(;;)
{
grenades = self get_player_lethal_grenade();
grenade_count = self getweaponammoclip(grenades);
if(grenade_count < 4)
{
self setweaponammoclip(grenades, (grenade_count + 1));
}
tactical_grenades = self get_player_tactical_grenade();
tactical_grenade_count = self getweaponammoclip(tactical_grenades);
if(tactical_grenade_count < 3 )
{
self setweaponammoclip(tactical_grenades, (tactical_grenade_count + 1));
}
wait 300;
}
}
start_ec()
{
level endon("end_game");
self endon("disconnect");
self endon("stopcustomperk");
for(;;)
{
self waittill( "reload_start" );
playfxontag( level._effect[ "poltergeist"], self, "J_SpineUpper" );
self EnableInvulnerability();
RadiusDamage(self.origin, 120, 200, 100, self);
self DisableInvulnerability();
self playsound( "zmb_turbine_explo" );
wait 1;
}
}
start_vt()
{
level endon("end_game");
self endon("disconnect");
self endon("stopcustomperk");
for(;;)
{
if(self getcurrentweapon() == "riotshield_zm" )
{
self enableInvulnerability();
self.shielddamagetaken += 100;
wait 0.9;
}
else
{
self disableInvulnerability();
}
wait 0.1;
}
}
start_er()
{
level endon("end_game");
self endon("disconnect");
self endon("stopcustomperk");
for(;;)
{
if (self hascustomperk("Ethereal_Razor") && self ismeleeing())
{
foreach(zombie in getAiArray(level.zombie_team))
{
if( distance( self.origin, zombie.origin ) <= 100 )
{
}
}
self.health += 20;
if(self.health > self.maxhealth)
{
self.health = self.maxhealth;
}
while(self ismeleeing())
{
wait 0.1;
}
}
wait 0.05;
}
}
LastStand()
{
if(self hascustomperk("Downers_Delight"))
{
self.customlaststandweapon = self getcurrentweapon();
self switchtoweapon( self.customlaststandweapon );
self setweaponammoclip( self.customlaststandweapon, 150 );
self.bleedout_time = 40;
}
else
{
self maps/mp/zombies/_zm::last_stand_pistol_swap();
}
}
DDown()
{
self endon( "disconnect" );
level endon( "end_game" );
self endon( "stopcustomperk" );
for(;;)
{
self waittill("player_downed");
self playsound( "zmb_phdflop_explo" );
playfx(loadfx("explosions/fx_default_explosion"), self.origin, anglestoforward( ( 0, 45, 55 ) ) );
RadiusDamage(self.origin, 150, 600, 400, self);
wait 0.1;
}
}
doGivePerk(perk)
{
self endon("disconnect");
self endon("death");
level endon("game_ended");
self endon("perk_abort_drinking");
if (!(self hasperk(perk) || (self maps/mp/zombies/_zm_perks::has_perk_paused(perk))))
{
gun = self maps/mp/zombies/_zm_perks::perk_give_bottle_begin(perk);
evt = self waittill_any_return("fake_death", "death", "player_downed", "weapon_change_complete");
if (evt == "weapon_change_complete")
self thread maps/mp/zombies/_zm_perks::wait_give_perk(perk, 1);
self maps/mp/zombies/_zm_perks::perk_give_bottle_end(gun, perk);
if (self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined(self.intermission) && self.intermission)
return;
self notify("burp");
}
}
SpawnHint( origin, width, height, cursorhint, string )
{
hint = spawn( "trigger_radius", origin, 1, width, height );
hint setcursorhint( cursorhint, hint );
hint sethintstring( string );
hint setvisibletoall();
wait 0.2;
hint delete();
}
ww_points( player )
{
for(i = 0; i < 3; i++)
{
self maps/mp/zombies/_zm_utility::set_zombie_run_cycle("walk");
player maps/mp/zombies/_zm_score::add_to_player_score( 10 );
PlayFXOnTag(level.effect_WebFX,self,"j_spineupper");
self doDamage(150, (0, 0, 0));
wait 1;
}
}
ww_nade_explosion()
{
wait 2;
// if( self maps/mp/zm_transit_lava::object_touching_lava())
// {
// self delete();
// return 0;
// }
foreach(zombie in getAiArray(level.zombie_team))
{
if( distance( zombie.origin, self.origin ) < 210 )
{
zombie thread ww_points( self );
}
}
self delete();
}
ww_nades()
{
level endon("end_game");
self endon("disconnect");
self endon("stopcustomperk");
for(;;)
{
self waittill( "grenade_fire", grenade, weapname );
if( weapname == "sticky_grenade_zm" )
{
ww_nade = spawnsm( grenade.origin, "zombie_bomb" );
ww_nade hide();
ww_nade linkto( grenade );
ww_nade thread ww_nade_explosion();
}
}
}
spawnsm( origin, model, angles )
{
ent = spawn( "script_model", origin );
ent setmodel( model );
if( IsDefined( angles ) )
{
ent.angles = angles;
}
return ent;
}
damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex )
{
if( isDefined( eAttacker.is_zombie ) && eAttacker.is_zombie && self hascustomperk("WIDOWS_WINE") )
{
zombies = getaiarray(level.zombie_team);
foreach(zombie in zombies)
{
if(distance(self.origin, zombie.origin) < 150)
{
grenades = self get_player_lethal_grenade();
grenade_count = self getweaponammoclip(grenades);
if(grenade_count > 0)
{
self PlaySound("zmb_elec_jib_zombie");
self setweaponammoclip(grenades, (grenade_count - 1));
zombie thread ww_points( self );
}
}
}
}
if(self hascustomperk("PHD_FLOPPER"))
{
if( smeansofdeath == "MOD_FALLING" )
{
if(isDefined( self.divetoprone ) && self.divetoprone == 1 )
{
radiusdamage( self.origin, 300, 5000, 1000, self, "MOD_GRENADE_SPLASH" );
playfx(loadfx("explosions/fx_default_explosion"), self.origin, anglestoforward( ( 0, 45, 55 ) ) );
self playsound( "zmb_phdflop_explo" );
}
return 0;
}
if( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" && eattacker == self)
{
return 0;
}
}
if(idamage > self.health && !self.dying_wish_on_cooldown && self hascustomperk("Dying_Wish") )
{
self notify("dying_wish_charge");
self thread dying_wish_effect();
return 0;
}
else
{
return idamage;
}
}
dying_wish_checker()
{
level endon("end_game");
self endon("disconnect");
self endon( "stopcustomperk" );
self.dying_wish_uses = 0;
for(;;)
{
self.dying_wish_on_cooldown = 0;
self.perk10back.alpha = 1;
self.perk10front.alpha = 1;
self waittill("dying_wish_charge");
self.perk10back.alpha = 0.3;
self.perk10front.alpha = 0.4;
self.dying_wish_uses++;
self.dying_wish_on_cooldown = 1;
delay = 300 + (self.dying_wish_uses * 30);
if(delay >= 600)
delay = 600;
wait delay;
}
}
dying_wish_effect()
{
self enableInvulnerability();
self.ignoreme = 1;
self useServerVisionSet(true);
self setvisionsetforplayer( "zombie_death", 0 );
self freezeControls(1);
wait 1;
self freezeControls(0);
wait 8;
self.health = 1;
self disableInvulnerability();
self.ignoreme = 0;
self useServerVisionSet(false);
self setvisionsetforplayer("remote_mortar_enhanced", 0);
}
player_burning_audio()
{
fire_ent = spawn( "script_model", self.origin );
wait_network_frame();
fire_ent linkto( self );
fire_ent playloopsound( "evt_plr_fire_loop" );
self waittill_any( "stop_flame_damage", "stop_flame_sounds", "death", "disconnect" );
fire_ent delete();
}